OpenOCD+FT232Hを使ってnRF52833にソフトを書き込んでみたい
nRF52833 MDBT50Q-512K用評価ボードっていうnRF52833のモジュール(https://www.switch-science.com/products/6275?variant=42382099808454)を買ったんやが、XIAO nRF52840のようには簡単には動かせないみたい。いや、動かせるんだけど、UARTからコマンド指示を出して動かすモジュールになっているらしい。これだと、あらかじめ実装された機能しか動かないので不都合。よってnRF52833のソフトを書き替えたいわけだわ。
で、NordicはSeggerってところとずぶずずな関係で、書き込みたいならSegger J-Linkを買えやって、で、それがまたお高い。なので、OpenOCDで書き込めないかっていう挑戦です。参考サイトはこちら(https://kunsen.net/2018/09/30/post-1784/)。FT232Hはこちら(https://www.switch-science.com/products/5740?srsltid=AfmBOopmPaSAiT3Vla7WYj8whPQhqMOmpR1YQzRftXdO1Zk7GorrlrfV)。で、まずはOpenOCDをインストールする。Ubuntuだと
bank0が512kB、bank1が4096Bらしい。
何か役に立つのかわからんけど、自分のためにここに貼っておく
MDBT50Q-DB-33_FW_bank0.bin
MDBT50Q-DB-33_FW_bank1.bin
では、消しちゃおう、、、
nRF52833 MDBT50Q-512K用評価ボードっていうnRF52833のモジュール(https://www.switch-science.com/products/6275?variant=42382099808454)を買ったんやが、XIAO nRF52840のようには簡単には動かせないみたい。いや、動かせるんだけど、UARTからコマンド指示を出して動かすモジュールになっているらしい。これだと、あらかじめ実装された機能しか動かないので不都合。よってnRF52833のソフトを書き替えたいわけだわ。
で、NordicはSeggerってところとずぶずずな関係で、書き込みたいならSegger J-Linkを買えやって、で、それがまたお高い。なので、OpenOCDで書き込めないかっていう挑戦です。参考サイトはこちら(https://kunsen.net/2018/09/30/post-1784/)。FT232Hはこちら(https://www.switch-science.com/products/5740?srsltid=AfmBOopmPaSAiT3Vla7WYj8whPQhqMOmpR1YQzRftXdO1Zk7GorrlrfV)。で、まずはOpenOCDをインストールする。Ubuntuだと
sudo apt install openocd
でおk。またはSynapticから検索してインストール。
で、
/usr/share/openocd/scripts/interface/ftdi/ft232h-module-swd.cfg
ってのを見てみると、
# Adafruit FT232H JTAG SWD
# Name Pin Name Func Func
# D0 J1-3 ADBUS0 TCK SWDCLK
# D1 J1-4 ADBUS1 TDO/DI SWDIO
# D2 J1-5 ADBUS2 TDI/DO SWDIO
# D3 J1-6 ADBUS3 TMS N/A
# D4 J1-7 ADBUS4 (GPIOL0) /nSRST optional module reset
# D5 J1-8 ADBUS5 (GPIOL1) /nTRST optional target reset
...
って書いてあるので、こんな感じ
で結線する。
nrf52の設定は
/usr/share/openocd/scripts/target/nrf52.cfg
ってところにあるので、コマンドから
openocd -s /usr/share/openocd/scripts -f interface/ftdi/ft232h-module-swd.cfg -f target/nrf52.cfg
ってする。そすっと、
こうなる。うまく接続できたっぽい。で、別のターミナルを起動して、
telnet localhost 4444
ってする。そすっと、
こうなる。まずは、今入っているものを読み出してみる。
init
読み出しでけた。bank1とか2とかもあるのかなってみてみると、、、
bank1はあるけどbank2はないらしい。bank0が512kB、bank1が4096Bらしい。
何か役に立つのかわからんけど、自分のためにここに貼っておく
MDBT50Q-DB-33_FW_bank0.bin
MDBT50Q-DB-33_FW_bank1.bin
では、消しちゃおう、、、
消すコマンドは
nrf5 mass_erase
おっそろしくあっさり終わる。
で、そのあと何を書き込むか、、、nRF52833のモジュールってそんなにないっぽくて、どうやらbluemicro833ってのに集約されているっぽい。で、こちら(https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases/tag/0.8.3)から
bluemicro_nrf52833_bootloader-0.9.2_s140_7.2.0.hex
をとってきて、作業フォルダに入れる。で、書き込んでベリファイする。
flash write_image bluemicro_nrf52833_bootloader-0.9.2_s140_7.2.0.hex
verify_image bluemicro_nrf52833_bootloader-0.9.2_s140_7.2.0.hex
で、
reset run
で、動作開始させると、
nRF52833 MDBT50Q-512K用評価ボードを何も考えずWidowsPCに接続していたため、突然、ドライブと認識されて、びっくりやら、即時確認できてよかったやら。
で、こうなれば、何かで作ったUF2ファイルをドロップするだけで書き込めるし、たぶんArduinoIDEからも書き込める(ボード定義があるのかどうか、、、)
nRF52833 MDBT50Q-512K用評価ボードが届いたときは、あ、これどうやって書き込むんや?って、あぁ~~nRF52833-DK(まぁまぁお高い)買わんといかん?ってなった(そんで、いろいろ調べていて、1ヶ月更新せんかった<--言い訳)けど、(たぶん)乗り越えた。
最近、自己投資が過ぎる気もするが、、、やっぱモノ触ったほうが理解できるからなー
コメントをお書きください