BumpyとGDBでISP1507ピッチ変換基板に書き込む(macOS編)(Windowsについての追記あり)

投稿者:

以前ISP1507ピッチ変換基板とJ-Linkをつなぐという記事を書きました。J-Linkというハードウェアを使ってISP1507 ピッチ変換基板にプログラムを書き込む方法の紹介でした。手順としては問題ないのですが、J-Linkが結構高価(4万円くらい)するので簡単に手が出ないのが惜しいところです。

そこで、スイッチサイエンスでも販売しているBumpyという書き込み用のハードウェアを使って書き込む方法を紹介します。

ピン配置と出力

ISP1507ピッチ変換基板とBumpyのピン配置はこんなです。

この中で必要なのは4本です。

  • SWDIO - SWDIO
  • SWCLK - SWCLK
  • Vdd - 3.3V
  • GND - GND

GDBの準備

書き込みにはGDB(The GNU Project Debugger)を使います。GNU Arm Embedded Toolchain Downloadsからダウンロードできますが、pathの設定など面倒なのでMacの人はHomebrewからインストールするほうがいいでしょう。

GDBで接続

さて、GDBの用意ができたらつなぎましょう。BumpyはUSBのAタイプコネクタ直付けなのでUSBハブを介してつなぎました。

GDBを起動する前にBumpyがなんという名前でシリアルポートとして見えているかを確認しておきます。

Bumpyは/dev/cu.usbmodem〜として見えるので、ここでは/dev/cu.usbmodemC1D9ADED1を使ってBumpyとGDBを接続します。

GDBを起動し、

target extended-remoteコマンドを使って接続しました。

つながったら、monitor swdp_scanコマンドでつながっているデバイスを探して、attachコマンドで接続します。

書き込み

あとはloadコマンドでelfファイルを指定すれば書き込めます。今回はお試しでisp1507_LLSS.elfというLEDを光らせるプログラムを書き込みました。

終わったらquitでGDBを終了します。このままだとプログラムが動作しないので一度USBハブから外してまた取り付ければ、書き込んだプログラムが動作します。

なんだかいちいち面倒くさい感じですが、コマンド一発でできるようなやり方がBumpyの元になったBlackMagic ProbeのWiki内GDB Automationにあるので、参考にしてみてください。

追記

コマンドというかシェルスクリプトで書き込みができたので載せておきます。

このスクリプトの引数にelfファイルを指定すれば書き込みが完了します。

DEV=$(ls -1 /dev/cu.usbmodem* | head -n1) のところで書き込むデバイスを指定しています。一番番号の若いデバイスと接続しに行きますので、他のデバイス(USB-シリアル変換ICなど)は外しておくことをおすすめします。

さらに追記

この後、WindowsでもGDBを使って書き込むことができました。やることは同じで、違いはtarget extended-remoteのシリアルポートの指定がCOMxになるところくらいです。

この方法でAdafruitが公開しているArduino Core for Adafruit Bluefruit nRF52 Boards のファームウェアを書き込むとArduino IDEで開発できるようになります(要USBシリアル変換基板)。