コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

OpenOCD で JTAG ダウンロードができるようになったといっても毎回 gdb サーバーを起動して gdb からバイナリを流し込むのも面倒くさいもの。
Makefile(Rakefile) やコマンドラインから一発でフラッシュを書き込めないものか。

OpenOCD にはフラッシュを読み書き消去する基本的な機能が備わっている。
単純な機能のダウンロードケーブルとして使うにはこれで十分だったりする。
このコマンドは OpenOCD が起動している時に port 4444 (標準時)に telnet アクセスして打ち込めば使えるが、起動時にコマンドラインとして与えることもできる。

毎回コマンドを入力するのも大変なのでコンフィグファイルに書いておくのが便利。
このへん参考記事がいくつか見つかるので、そのうちの一つのものを参考にコピペする。
—–

proc flash_program {ELF_FILENAME} {
halt
flash probe 0
flash write_image erase $ELF_FILENAME
echo "flash program complete. reset and run"
resume
reset run
exit
}

—–
これをコンフィグファイルに書いておく。

それを使いやすくシェルスクリプトにまとめて、書き込みコマンドを作成する。
—–

#/bin/sh
openocd.exe -f (コンフィグを置いたパス)/armblaster_stm32.cfg -c "flash_program $1"

—–
これに armblaster_flash などと名前をつけておくと使いやすい。

これで書き込み&実行確認がやりやすくなった。

※注意?
そういえばこの方法だとフラッシュイレースの範囲をちゃんと指定していないから DSU が書き込まれている 0x08000000 – 0x08002fff の範囲も書きつぶしてしまうのでした。
DSU を消したくない人やバックアップをまだ取っていない人はご注意を。
それ故にダウンロードするプログラムの先頭アドレスを 0x08000000 にしておく必要がありまする。

Leave a Reply