GDBが何か要求したけど、そんなレジスタはないぞ、といっているようだ。
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 resetError: JTAG-DP STICKY ERROR
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xe59ff01cError: 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」ってのを作る。
こんな感じで。
Working Directoryを「選択してるプロジェクト」にしておくと、FLASHに焼くときが楽。
プロジェクトをひょいひょい切り替えるのだったら、あんまり効果がない。
タブ「Main」以外は入力してない。
Argumentsで指定しているcqfm3.cfgは、参考サイトのものそのまま。
チップ名が「mb9bfxx6」だけど、これをxx8とするとエラーになる。
これは、OpenOCDが0.5.0では対応していないからだろう。
デバッグ設定
今度は、デバッグ。初回は、設定を行う。
zylinというプラグインが入っている前提で。
Cygwinのほうでやるみたいだ。
プロジェクト名の選択を取りあえずやって、C/C++ Applicationは短いので直接入力した。
mainで止まる、みたいな設定はあんまり有効じゃないらしいから、もう切っておく。
gdbは、PATHに設定済みじゃなかったらフルパスなのかしら? ようわからん。
参考サイトそのままだったけど、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か?)。
エラーもなんかでるけど、ブレークポイントには止まってくれるから気にしなくていいのかも。
ようわからん。
ハンドラでブレークすると、スレッド表示が増えてた。
と思ったけど、単なるスタックトレースみたいね。
やり直し
途中まで実行して、やっぱりやり直そう、と思った。リセットさせるようなボタンもないし、telnetで「reset」とやっても動きが変になった。
あきらめて、Thread表示のどこかにフォーカスを当てた状態で赤い四角を押して終了させ、もう一度デバッグの開始からやり直すことにした。
OpenOCDは起動させたままでもよさそうだ。
終わらせる
もういいや、と思ったら、OpenOCDごと終了させる。OpenOCDの方をクリックしてフォーカスを当てて、赤い四角を押す。
arm-none-eabi-gdbの方がどうなるかわからないけど、気に入らなければ下図の右側にある××を押して消せばいいと思う。
私は気になるので、とにかく消している。
なんか変になったとき
とりあえず、OpenOCD関係のものを落として(Eclipseはそのままでいいかも)、基板も電源を落とし、TINY-HもPCから抜いて、一息入れてからやり直すといいと思う。やり直すときも、そうした方が安全な感じだ。
まだまだわからんところは多々あるが、なんかは動いたのでよしとしよう。
Eclipseの恩恵を受けているような受けていないような、そんな微妙な感じは残るのだが、まあよしとしよう。
CQ FM3基板+TOPPERS/ASPで試したLED点滅のサンプルを置いておこう。
こういうファイルは、自分ですぐ変更して動かなくしてしまうので、一度確定させておかねば。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。