2010年12月15日水曜日

やっと、ArduinoのTmpフォルダに辿り着いたーー

ちなみにMac版です・・
やっと、Arduinoの変化する、tmpフォルダを捕捉する部分が出来た・・後は中に入ってる、hexと、eppを、自前の、tempフォルダにコピーして、そこで、Shellを実行する。
(そのまま、そのクソ長い、ファイル名で実行した方が簡単だが・・ちょっと迷ってる)
書き込み前に、元ファイルのタイムスタンプを確認しなきゃいけなくなるからね・・

この辺のコードが、今作ってる部分のキモだ。

自分で書いたファイルは、ドラッグドロップで、そのまま、フルパスを得てるからこの件はもうOK。eepファイルも入れる場所を作ると言うか、仕分ける。
礼儀正しいアプリケーションにするのは、結構大変。

Arduinoは、場所的には決まった場所だが、毎回そこに、ユニークな名前のフォルダを作る、唯一一緒なのは、最初の、buildって書いて有る事だから・・そこまで掘らないといけない訳だ。
一階層下から、監視しとかないと、Arduinoを中断し、もう一回起動すると場所が変わる。
これを小まめに追いかけないといけない訳だね・・(ここが苦労した・・UNIX版も似てるだろうから、そこは追えると思うが・・WIN版は、全然違う位置だろうから苦しいと思う)

このブートローダータイプでも、Avrdudeをサポートするし、Fbootもだが、たぶん、日本語の階層名で引っかかるのだ。
(日本製のライターソフトが便利なのはこの辺にも有る)

であるから、Avrdudeとかを安全に使うために、自前の、英語名のtmpに、一回ファイルを持って来てしまえばいい訳だ。(これをアプリで自動化しとく)
bootloadinf.hex bootloading.eepと言う名前で一回、tempに持って来て、書き込み命令ごとに、元ファイルのタイムスタンプの変化を検証する(Arduino自動化の場合は、最初から丸ごと確認する)・・或いは確認しないで毎回コピーするのでもいいのだが・・(面倒だからたぶんこっち)性能の無いマシンだと多少遅くなるかも知れない。最大でも512KBの転送に時間が食うマシンもそう無いと思うし・・

HEXダンプは、出来ないと思うが・・(自力の書き込みモードなら、一回メモリーに呼ぶから出来るかも)・・とりあえず、コマンドラインを生成するアプリ先行なので・・これは後回し。

intelhexのファイル内容の確認もした・・この辺見ておくと、私の、AVR Simulator IDEのHEXが動かない問題を修正出来るかも知れないと考えている。たぶん開始ベクタが違ってるんだとしたら、そこだけ修正して送ってやればいいはずなんだが・・ダメかな??

とりあえず、ArduinoのTMPの場所を始めたら、機種依存しまくって・・同時に書いてると気が狂いそうだったから、Winと、Unixは後回しにした。(ごめんなさい)

うちのUbuntuは、Arduino-0021が、Apt-getで入らないから、適当なユーザーエリアから起動してる・・Arduino-0018は、自動でインストールされたが・・
この差の吸収くらいはしないとね。

うちのMacには・・
Arduino-0021と、0018が各2本入ってる。
0018の一個は、日本語メニューになってる奴に、UNOと必要な物を足した感じ
0021の片一方は、自分で持ってて使うボードに絞って有る物
残りの各1個は、色々なコアが入りすぎて、プルダウンが長すぎて面倒で、放置されてる分だ・・他機種開発用と言う感じでは有るが・・

Windowsでは、デスクトップに有ったり、Dドライブの、ルートに有ったりするので、更に問題は複雑になる。

ある程度はなんとかしようと思ってるが・・・・自分で使いそうも無い物だと、おざなりになるかも・・(手動でセレクトしろって出るかも・・)・・とりあえずMac版は、全自動の道を突っ走ってます。

出来る事

Arduinoで作った、HEXを、Fastbootブートローダーの入った、MCUに送る。
他の言語で、作った、Hexをドラッグドロップで、送る。
Arduino UNOや、Duemilanovaに他の言語で作った、HEXを送る。
(これは、Avrdudeだから、ライター用GUIソフトも作れてしまう訳だ)
たぶん、オマケで、USBasp loaderにも書けるようにすると思う。

(通信は、USB シリアル2線式のどちらから・・一線式は、コマンドが自動判別してるから関係無い)

MCUが繋がってるかGet Infoは付ける。
ベリファイはするようにする。(ベリファイだけも実行する)

やっぱり、自分が使いやすく・・失敗しないようにするためのプログラムって結構時間食うなあ・・

0 件のコメント:

コメントを投稿