2014/07/19

[ble][nrf51]nRF51822+GDBのやり方は、あまり的外れでも無かった

以前、こんな記事を書いた。
[ble][nrf51]gdbデバッグの設定がよくわからん

自分の中ではもやもやしたままだったのだが、Nordicのサイトにも同じような解決方法が書かれていた。https://devzone.nordicsemi.com/question/1566/uart-application-problem/

間違ってなかったんだ!
とはいうものの、SoftDeviceが変わるたびにアドレスを調べるというのもスマートじゃあ無い。

そこに「こっちはやった?」というリンクが書いてあった。
https://devzone.nordicsemi.com/question/825/strange-behaviour-with-nrf51822-and-s110/

loadしたあとにresetができてないのでうまくいってないっぽい、という見解だそうだ。
よくわからんが、まねをしてみた。

mon speed 10000
mon endian little
mon flash device = NRF51822
file "C:/Nordic Semiconductor/nRF51 SDK_v6.0.0.43681/Nordic/nrf51822/Board/nrf6310/s110/ble_app_beacon/gcc/_build/ble_app_beacon_s110_xxaa.out"
load
mon reset 0

fileとloadをはさんだだけ。あと、loadするチェックを外しておく。
・・・うん、うまくいった。ちゃんとmainでブレークしてくれたのだ。

とはいうものの、ここにフルパスで、しかもWindowsでやってるのにパスのデリミタを書き換えないといかんのもめんどくさい。
うー。

見解が「resetができてない」なら、うまくresetするようにすればよいのではないか?
ということで、SEGGERのドキュメントを眺めた。
UM08001に「Reset strategies」という章があり、Cortex-Mにはタイプが0~10まであることがわかった。

よく・・・わからないが・・・SoftDevice v7.0.0からブートローダーがどうのこうのといっていたと思うので、4, 5, 8くらいがいいんじゃないだろうか・・・。

mon speed 10000
mon endian little
mon flash device=NRF51822
mon reset 8

mainで止まったけど・・・あやしい。
というのも、その前にreset 4で試して止まったからだ。どうも、fileとloadでうまくいっていたときの名残かなんかみたいで、もう一度全部落としてやりなおしたらダメだったのだ。
うん・・・やっぱりダメだった。が、2回やるとmainで止まった。

よくわかりませんが、デバッグなんてしょっちゅうやるから、またいい方法が見つかったらお知らせしますかね。

0 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。