2012/07/16

[openocd]なんとなく動く

OpenOCDで、まだ怒られる。
GDBが何か要求したけど、そんなレジスタはないぞ、といっているようだ。
image

ftd2xxドライバに変更してビルドし直したけど、そういう問題でもないようだ。

けっこういろいろやったあと、また参考サイトに戻ってやってみた。
http://todotani.cocolog-nifty.com/blog/2012/05/fm3openocd-ecli.html
動く・・・
LEDが点滅するサンプルで試したのだが、これなら動くんだ。

でも、TOPPERS/ASPのサンプルはだめだ。。。
なんだろうねぇ。

Warn : acknowledgment received, but no packet pending
undefined debug reason 6 - target needs reset
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xe59ff01c
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xe59ff01c
Warn : Block read error address 0xe59ff018
Info : JTAG tap: mb9bfxx6.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
Error: mb9bfxx6.cpu -- clearing lockup after double faulttarget state: halted
target halted due to debug-request, current mode:
Handler HardFaultxPSR: 0x00000003 pc: 0xe59ff018 msp: 0xe59feff8
Polling target failed, GDB will be halted. Polling again in 100ms
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xe59ff014
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xe59ff014
Warn : Block read error address 0xe59ff010
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
Warn : Block read error address 0xfffffff8
Polling succeeded again
Info : dropped 'gdb' connection
Info : accepting 'telnet' connection from 4444
Info : accepting 'gdb' connection from 3333
Warn : acknowledgment received, but no packet pending
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xe59ff01c
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xe59ff01c
Warn : Block read error address 0xe59ff018
requesting target halt and executing a soft reset
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 00000000 pc: 0xe59ff018 msp: 0xe59ff018
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
Error: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
Warn : Block read error address 0xfffffff8


そんなに壁が高くて厚いとは・・・。

あれ・・・TOPPERS/ASPの自作サンプルが、普通にやっても動かんやん。
前回動いてたはずなのに・・・と思ったら、間違ってた。
まあ、よくあることだ。
今度は、焼いて動くことを確認してからOpenOCDと接続。
動くやん。
ブレークポイントで止まるやん。
まあ、よくあることだ。

今回は、Eclipse上でやった。
Insightのビルドができないので諦めてたけど、ビルド済みのものがあるらしい。
まあ、気が向いたら今度試そう。
以前は日本語がまったくだめだったのだけど、今はどうかな?

こちらを参考にしてます。
http://todotani.cocolog-nifty.com/blog/2012/05/fm3openocd-ecli.html
OpenOCDは、ビルド済みの0.5.0を使った。
FLASHは512KBまでだけど、まあいいや。

OpenOCDの起動設定

初回は、設定をする。
ここの2番目にある「openocd-0.5.0」ってのを作る。
image
こんな感じで。
Working Directoryを「選択してるプロジェクト」にしておくと、FLASHに焼くときが楽。
プロジェクトをひょいひょい切り替えるのだったら、あんまり効果がない。
タブ「Main」以外は入力してない。
image
Argumentsで指定しているcqfm3.cfgは、参考サイトのものそのまま。
チップ名が「mb9bfxx6」だけど、これをxx8とするとエラーになる。
これは、OpenOCDが0.5.0では対応していないからだろう。

デバッグ設定

今度は、デバッグ。
初回は、設定を行う。
image
zylinというプラグインが入っている前提で。
image
Cygwinのほうでやるみたいだ。
プロジェクト名の選択を取りあえずやって、C/C++ Applicationは短いので直接入力した。
image
mainで止まる、みたいな設定はあんまり有効じゃないらしいから、もう切っておく。
gdbは、PATHに設定済みじゃなかったらフルパスなのかしら? ようわからん。
image
参考サイトそのままだったけど、FLASHに書き込むのは自分でやるので、loadとかを外した。
break mainは効くのかな?
「tbreak main」かも。
TOPPERS/ASPだと、mainで止まっても仕方ないかもしれないので、メインタスクか何かにブレークポイントを張っておくのかいな。

OpenOCDの起動

ARM-USB-TINY-HとFM3基板を接続し、PCに接続してFM3にも電源を供給したあと、EclipseのProject Explorerからデバッグしたいプロジェクトをクリックしたあと、作ったコマンドを実行する(プロジェクトをクリックしてなかったら、エラーが出る)。
そうするとずらずら何か出てきて、最後にブレークポイントがいくつだ、などと出てきたら、たぶんうまくいってる。
TINY-HのLEDが点滅を始めるようだ。

telnet

コマンドプロンプトを立ち上げて「telnet localhost 4444」と打つ。
うまくいくと、「Open On-Chip Debugger」という文字が出てくる。

FLASHを焼く

telnet上で「flash write_image erase asp.srec」と打つ。
「asp.srec」は、コンパイル時にできたSレコードのファイル(たぶん)。
うちだと、11KiB/sくらいで焼いてくれた。
焼きたくないときは、焼かなくていいだろう。

デバッグの開始

つくったデバッグ設定を実行する。
パースペクティブの切替とか始まって、うまくいくとどっかで止まる。
今やったら、「tbreak main」の実行で「mainは定義されてないぞ」っていわれた。
TOPPERSではmain()は作ってないのかも(sta_kerか?)。
エラーもなんかでるけど、ブレークポイントには止まってくれるから気にしなくていいのかも。
ようわからん。
image
ハンドラでブレークすると、スレッド表示が増えてた。
image
と思ったけど、単なるスタックトレースみたいね。

やり直し

途中まで実行して、やっぱりやり直そう、と思った。
リセットさせるようなボタンもないし、telnetで「reset」とやっても動きが変になった。
あきらめて、Thread表示のどこかにフォーカスを当てた状態で赤い四角を押して終了させ、もう一度デバッグの開始からやり直すことにした。
OpenOCDは起動させたままでもよさそうだ。

終わらせる

もういいや、と思ったら、OpenOCDごと終了させる。
image
OpenOCDの方をクリックしてフォーカスを当てて、赤い四角を押す。
arm-none-eabi-gdbの方がどうなるかわからないけど、気に入らなければ下図の右側にある××を押して消せばいいと思う。
私は気になるので、とにかく消している。
image

なんか変になったとき

とりあえず、OpenOCD関係のものを落として(Eclipseはそのままでいいかも)、基板も電源を落とし、TINY-HもPCから抜いて、一息入れてからやり直すといいと思う。
やり直すときも、そうした方が安全な感じだ。


まだまだわからんところは多々あるが、なんかは動いたのでよしとしよう。
Eclipseの恩恵を受けているような受けていないような、そんな微妙な感じは残るのだが、まあよしとしよう。

CQ FM3基板+TOPPERS/ASPで試したLED点滅のサンプルを置いておこう。
こういうファイルは、自分ですぐ変更して動かなくしてしまうので、一度確定させておかねば。
https://sites.google.com/site/hiro99ma/home/files/other/cqfm3_led_sample.zip?attredirects=0&d=1

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。