最近、新しいマイコンの開発環境の整備をあれこれとやっている。
メモリのマッピングを定義したり、デバッグの設定を確認したり。
そういう作業をやる中でフラッシュドライバの作成をした。
今までフラッシュドライバというのはデバッガに付属するものと思っていたが、
ワンチップマイコンの内蔵ROMを焼くなら決まり切っているが、
今回は外付けのシリアルフラッシュを使うというのもあるし、
いろいろな事情でツールが充実していないという事情もある。
で、そんなの自作できるんか? と思ったが、思ったよりは楽だった。
今回はフラッシュドライバ用のプログラムをマイコンのRAM上に転送する方法にした。
レジスタ操作をマクロに書いてフラッシュドライバにする方法もあるらしいが。
フラッシュドライバのテンプレートがあって、初期化・イレース・プログラム・ベリファイの操作を穴埋めしていくと完成する仕組みである。
すでにフラッシュ読み書き用のプログラムを作っていたので、これを切り貼りして作ればそこまで大変ではなかった。
しかし、難しかったのがフラッシュドライバのデバッグである。
フラッシュドライバを使ってプログラムをダウンロードして失敗したところで強制終了して、
フラッシュドライバのプロジェクトを開いて、デバッガをアタッチしてブレークすると、
どこでハングアップしたのか判明するとかそんなのである。
そんなのを何度か繰り返して、清々と流れるようになった。
実際、フラッシュドライバがデバッグに必要なのかはよくわからないが、
デバッガが接続できる環境なら、他の方法でプログラムを書き込むよりも楽だろう。
フラッシュへの書き込みができたら、それをRAM上にロードして動かしてデバッグ開始だが、
そこをどうやって繋げるかというのはまた考えないといけない要素があって、
そのあたりの処理を埋めるためのマクロも必要かとか、そんなこともやっていた。
今回のシステムではいろいろなツールを用意しないといけないことはわかっており、
実験的にいろいろ作っているのだが、まだ一本につながるには至っていない。
実際に動かしたり作ってみないとわからない部分がいろいろあるんだよな。
仕様案を作ったはよいものの、前後の仕様が変わってしまい、見直しが必要だとか。
とはいえ、このあたりも固まってきたし、全体像を明らかにしていかないとね。
もうちょっと実験したらそのあたりできるようになるかな。
今回のフラッシュドライバの実験でもいろいろわかったことがあって、
それに合わせて見直すべき点が多々あった。
実際のデバッグで使うかはよくわからないと書いたが、
今、デバッグするならこれが最善であるとは言えるので、それはそれでよいと。