本サイトでは、トラ技 ARM ライタに関する記事を2つほど紹介してきました。

前者は LPC1343 ボード のことになるので、Arduino UNO R4 Minima でトラ技 ARM ライタを動かすには両記事の拾い読みが必要でした。また幾つかノウハウも溜まってきたので改めて本記事にまとめます。

本記事の元となる開発環境について

最初のお断りとして、僕の開発環境は以下のようにとても古いです。幸い Mac 上で Arduino IDE 2.x は動作しますが、仮想マシン上の Widnows7 では動作しないので、IDE の動作例は全て Mac 版となります。

PC 環境

  • MacOS バージョン 11.7.10 (Big Sur on MacBook Pro Late 2013)
  • Window 7 (MacOS 上の仮想マシン環境にて動作)

ただし以下は LPC1343 ボード での実績により、Windows 上でも動作するハズです。

  • ISP モードによる トラ技 ARM ライタのファームウェア書き換え
  • ヒューマン インターフェース デバイス(HID)ドライバのインストール
  • CMSIS-DAP(デバイス名:Toragi-LPC Writer CMSIS-DAP)によるデバッグ

また本記事内の Windows7 スクリーンキャプチャ画像は、最新機種のものに読み替えてご覧ください。

Arduino IDE

  • バージョン:2.3.2
  • CLIバージョン:0.35.3

Arduino UNO R4 用ボードマネージャ

  • Arduino UNO R4 Boards by Arduino 1.1.0

必要なもの

  • Arduino UNO R4 Minima
    CMSIS-DAP に対応した JTAG/SWD デバッグプローブが必要です。本記事では トラ技 ARM ライタを紹介しています。

  • Arduino UNO R4 WiFi
    オンボードデバッガが搭載されているので、デバッグプローブは不要です。デバッガの起動と SVD ファイルの更新 に進んで下さい。

SVDファイルとは何者?」から、CMSIS-DAP や CMSIS-SVD、JTAG/SWD デバッグプローブについての図を再掲します。

CMSISの全体像とデバッガの位置付け ARM MCUからArduino IDEまでのブロック図

トラ技 ARM ライタ

購入は CQ 出版から出ている書籍版とマルツオンラインで販売されている単体版の2択です。 (UNO R4 WiFi では ESP32 がオンボードデバッガとして機能するので不要です。)

  • 書籍版
    Amazon あるいは 紀伊國屋書店 から購入可能です。mbedやデバッガ関連の記事、トラ技 ARM ライタ基板、ピンヘッダやスイッチ類、CD-ROM のセットからなり、ピンヘッダやスイッチ類のハンダ付けが必要です。また USB-miniB ケーブルと 2×5 ハーフピッチフラットケーブルは別途準備が必要です。

  • 単体版
    Amazon でも購入可能 ですが、マルツオンライン の方が安価です。ハンダ付けが不要で、USB-miniB ケーブル、2×5 ハーフピッチのフラットケーブルが付属します。簡単な取説がついていますが、基本オンライン情報のみです。価格が安く接続に必要な品が揃っているので オススメ です。

僕は LPC1343 ボード 用と兼用しているので取り付けましたが、両版とも CN5 用に付属する 1×8 L字ピンヘッダは邪魔になるだけなのでハンダ付けの必要はありません。

あると便利なもの

CMSIS-DAP 用ファームウェアの書き込み

ファームウェアのダウンロードと解凍

トラ技ARMライタ基板をCMSIS-DAP(デバッガ)として使うときのファームウェア

購入時は単にマイコン基板として動作するだけなので、CMSIS-DAP 用ファームウェアへの書き換えが必要です。

過去ログ 2014年2月号3月号連続企画 のページから 3月号付録基板関連ファイル にあるトラ技ARMライタのファームウェア TR1403N.zip をダウンロードし解凍します。

ファームウェアの書き込み

CRP DISABLE トラ技ARMライタ基板上のタクトスイッチ

トラ技 ARM ライタを ISP ボタンを押しながら USB miniB ケーブルで PC に接続するか、接続済みなら ISP ボタンを押しながらリセットすると、FAT12 の USB ストレージ CRP DISABLE(物理デバイス名は LPC1XXX IFLASH)が現れます。

中の firmware.bin を削除し、替わりにダウンロードした firmware.bin をコピーします。

ISP は In-System Programming の略で、製品になってからも PC などからファームウェアの書き込みができる機能です。また CRP は Code Read Protection の略で、内蔵メモリの読み出しを防止する機能です。CRP DISABLE はこの機能を「無効」にしていることを表しています。

この時、Windows であればドラッグ&ドロップで OK ですが、Mac の場合は ターミナル.app からコピーしないとうまくいきません(ご参考:nxp fan さん の Facebookページ 「USB経由ISP書き込み」をMacで行う)。

ターミナル.app からのコピー方法

まず ターミナル.app を起動し、cp -X とスペースを打ち込みます。続いてそこに firmware.bin をドラッグ&ドロップし、さらに CRP DISABLE をドラッグ&ドロップすると、cp -X の後ろにコピー元のファイルとコピー先が入力されるので、リターンキーを押します。これで Mac 特有の拡張属性が付かずにコピーが完了します。

デバイスドライバの確認

コピー後は、通常の USB ドライブと同様に CRP DISABLE を取り外す(Windows の場合)か、ゴミ箱にドラッグ&ドロップする(Mac の場合)します。リセットボタンか電源を入れ直し、赤と緑の LED が点灯 → 消灯が確認できれば成功です。

Mac の場合

MacのUSBドライバ

アップルメニューから「この Mac についてシステムレポートハードウェアUSB」をたどり Toragi-LPC Writer CMSIS-DAP が確認できれば OK です。

Windows の場合

WindowsのUSBドライバ

デバイスマネージャから「ヒューマン インターフェース デバイスHID 準拠デバイス詳細ハードウェア ID」とたどり、値が HID¥VID_0D28&PID_0019&REV_0100 であることを確認できれば OK です。

設定と接続

トラ技 ARM ライタと Arduino UNO R4 Minima の接続

トラ技 ARM ライタと Arduino UNO R4 Minima の接続

コネクタのピン配列は 以前の記事 を参照してください。フラットケーブルを、トラ技 ARM ライタ側は CN4 に、Minima 側は SWD に接続します。画像を参考に、接続の向きには十分注意してください。逆挿はヤバいです。

PC との接続と設定

書き込み装置に ARM CMSIS-DAP Compatible を選択 MacOS 上の USB デバイスドライバ

まず Arduino IDE メニューの「ツール書き込み装置」を ARM CMSIS-DAP compatible に設定します。でも実際には CMSIS-DAP で書き込みは行いません。

Arduino IDE では プログラムの書き込みを USB ドライバ UNO R4 Minima から dfu-util(Device Firmware Upgrade Utilities) で、デバッグを Toragi-LPC Writer CMSIS-DAP から openocd(Open On-Chip Debugger) で行います。

これが意味するのは Minima とトラ技 ARM ライタの両方を PC と繋がなくちゃならないということです。

書き込みも openocd で出来れば、USB ケーブルはトラ技 ARM ライタ側だけで OK なハズですが、現状は launch.json などで変えられそうにないんですよね。

ちなみに、どんな都合か分かりませんが UNO R4 WiFi は BOSSA という、また違った書き込みソフトを使っています。

デバッガの起動と SVD ファイルの更新

2024年6月3日に UNO R4 用ボードマネージャが 1.2.0 にアップデートされたので、SVD ファイルの更新は不要です。

ちなみに、SVD ファイルの修正に貢献しました! Update "Port mn Pin Function Select Register" in SVD file. #305

コンパイルオプションの設定

デバッグに最適化 Unable to parse SVD file

IED メニューから「スケッチデバッグに最適化」にチェックを付けます。これを設定しておかないとまともにソースコードデバッグができません。

次に、適当なスケッチを準備し、デバッグ情報が付加されたオブジェクトを生成するため コンパイルボタン で再コンパイルします。

デバッグボタン でデバッグを開始すると Unable to parse SVD file のエラーが発生するので、SVD ファイルへのパスを記録します。

また、デバッグウィンドー内の構成リストが Arduino UNO R4 Minima (cmsis-dap) になっていることを確認してください。

SVD ファイルの差し替え

SVD ファイルの更新版 をダウンロードしてください。本サイトの R7FA4M1AB.svd.zip からもダウンロードが可能です(.zip ファイルは解凍してください)。

次に、先に記録した SVD ファイルのあるフォルダを開き、元のファイルを R7FA4M1AB-.svd にリネームするなどして退避した後、ダウンロードした R7FA4M1AB.svd に差し替えます。

デバッグの開始と終了

これでデバッグができる準備が整ったハズです。行番号の左側をクリックするとブレークポイントが設定できるので、止めたいところをマーキングします。

ブレークポイントの設定

デバッグの終了は ボタンで可能ですが、Minima はデバッガからの指示待ちで停止したままなので、リセットボタンで再起動してください。

トラブルシューティング

ここに辿り着くまでに出会ったエラーを載せておきます。

Upload error: Failed uploading: unloading error: exit status 74

Upload error: Failed uploading: unloading error: exit status 74

IDE が Arduino ボードにアクセス出来ない時に起こります。電源、コネクタはもちろんですが、デバイスドライバが認識されているかを確認します。

OpenOCD: GDB Server Quit Unexpectedly. See dbg-server output for more details.

OpenOCD: GDB Server Quit Unexpectedly. See dbg-server output for more details.

トラ技 ARM ライタと通信ができない時に発生します。USB コネクタが物理的にしっかり接続されているか、または設定で「ツール書き込み装置」の ARM CMSIS-DAP compatible にチェックが入っているかを確認します。正しく繋がっていれば、電源投入時やリセット時など、トラ技 ARM ライタの赤と緑の LED が点灯 → 消灯します。症状が改善しない時は、ファームウェアの書き込み から再構築してみます。

dfu-util: No DFU capable USB device available

「デバイスのファームウェアをアップグレードできる USB が見つからない」というエラーで、公式サイト dfu-util errors when uploading (exit status 74) にある通り、基本は「ケーブルを確認せよ」です。Windows であれば Arduinoで「No DFU capable USB device available」エラーが出たときの対処法 が参考になるかもしれません。

僕の場合、アップロードも CMSIS-DAP からできるものと思い込み、Minima 側の USB を接続してなかった時に発生してました(トラ技 ARM ライタ基板裏面の SJ7 をショートされれば Minima に電源供給できる)。今では両基板とも USB 接続することで事なきを得ています。

何をやっても CRP DISABLED が出現する

トラ技 ARM ライタを単独で電源投入すると、赤と緑の LED ランプが点灯せず ISP モードで立ち上がることがあります。先に Minima を ON していればこの事象は発生しないようです。

一方何をやっても ISP モードとなってしまう場合には、CMSIS-DAP ファームウェアが正しく書き込めていないことが考えられます。

特に Mac の場合、CMSIS-DAP ファームウェアを書き込む際にドラッグ&ドロップしてませんか? ターミナルapp からのコピー方法 の手順に従ってください。

最後に…

Arduino IDE のデバッガはとても使い難いです。VSCode + PlatformIO に乗り換えようと奮闘中ですが、同様の SVD ファイルエラーを抱えていますね。

2024年5月7日 追記R7FA4M1AB.svd修正版 が Arduino 公式 GitHub に 取り込まれました。修正内容の詳細を「Arduino UNO R4ユーザーに朗報、ソースコードデバッグが可能に!」で解説しているので、興味があれば覗いてみてください。