USB接続AVRライタ作り中。その4 avrdudeはしるん?

  • このエントリーをはてなブックマークに追加
  • Pocket

ライタにAT90S1200をつなげて、linuxでavrdudeを走らせてみた。
識票ビットがまともに読めてない・・。
ドキュメント読んだら、usb-serial変換経由だと、非常に遅いか、まともに走らないかもね!
って書いてあった。wait入れるように指示したら、書き込めたりするんだろうか。

これで悩むより、自分でライタ書いた方が早いんじゃないかと思って、pyserialをじーっとみる。
どうにかTXDを低レベルなところで制御できないのだろうか。1/0という意味で。
でないと、スタートビットとストップビットがじゃまだ。と思ったけど、なんか、これってハードウェアで制御されることらしくて、ソフトから制御できないというようなことがlinux-serial-howtoにかいてあった。だめじゃん。
http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html
他に余っているoutの信号線ないし、オワタ\o/というやつじゃないでしょうか。
つか、avrdudeてどうやって書いているんだろう。writeにすごくうまくタイミングを合わせてsykをふるとか・・スレッド処理でw。あー、serial port bangingて書いてあった。これもbitbangのたぐいなんでしょうかわからん。間に制御ビットを省く回路が入ってるダウンロードケーブル用なんかな。

追記(2009-06-17):—
serbbのponyserあった。
http://core.st/projects/Serial_programmer/index.html
ドメインがサントメ・プリンシペ。でもスウェーデン・クローナ(SEK)で表記してあるからスウェーデン発かな。下に書いてあるRESETの制御を適当にすます方法。トランジスタで反転してる。

SI progもあったー。同様の方法。
http://www.lancos.com/siprogsch.html

ft232rlだとbitbang modeを使えば、この問題を回避できるようですが、それだったら外付けでインタフェス用AVRをつけてしまうか・・の方が、ブラックボックスがなくてよさそう。まあここまでft232というICに処理を依存させといてなんですが。
はじめから、ft245つかえばいいのにー・・。

ここにlinuxからbitbang modeを使うためのlibFTDIの使い方が紹介してありましたっ。
http://penguin.tantin.jp/hard/libFTDI.html

^RESETピンは大して制御されないので、うまくごまかせないかなー。などとおもっている。
書き込んでるときだけlow(0)にすればいいんですもんねえ。
TXDに何も送らない状態をRESETにしてしまうとか・・。serial openにしている間だけRESETになれば十分ですが。正パルス送りたくなったら適当に信号入れて数回正パルスいれてやればいい。みたいな。

あー閃いた。TXDをどこかのinピンにループバックして、それでスタートビットがきたら、1.5ビット待って、syk送るという、調歩同期を同期方式に変換することを自分ですればいいのか!!
とか、すごい閃いたけど、どうせもう誰かやってるんだろうな。と、ググり始める・・。それに、書き込み指示と同時に次の処理できないと、やっぱり並列処理しなだめか。pythonはimport threadでさくさくスレッドかー。

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す