SNSへはこちら

秋月LPC11U35マイコンボード 書き込みとかCMSIS-DAPとか

さて、今日も新歓が終わったので記事を書きますかね。

この前のLPC11U35ボードですが、今日色々弄ってわかったことを書きます。

嘘です。昨日とか一昨日とかからもう色々やってました。

ここでこのボードについて復習を。

概要

  • 秋月が Quick Startboard の互換を売り始めたよ
    • おそらく6月中旬。
  • お値段は 850円。Quick StartBoard は 2,800円だから爆安。
  • 特にライターとか USBシリアル変換とか用意しなくても書き込み可能。Mac、Linux の場合は cp コマンドか dd コマンドで行ける。
  • なんとトラ技ライタ(CMSIS-DAP)としても使えるし、mbed インターフェイスとしても使える。LPC1114 とかの mbed ライターになる。
  • もちろんこれ単体で LPC11U35 マイコンとしての動作も可能。
  • つまり

一つ難点があるとすれば、回路図が公開されていないこと。ですがまあ大体はわかりますよね。裏面にシルクあるし。

追記: USBシリアルが使えないことが大きなもう1つの難点になりそうです。
追記の追記: 使えました!この記事で紹介しているファームではどうやらUSBシリアルが安定して動作しないようです。大体のファームについてはこちらをどうぞ。

ハードウェア的な軽い説明

ところでこの基板、LEDが付いていますが、それについて雑に説明します。

USB 端子を上部とした場合、下部右側の LED がユーザーが操作できる LEDです。ここからはUSB端子を上側と定義して記述していきます。

このLEDのピン番号は P0_7 です。
なお下部左側は リセットモードに入ったことを示す LED。上部は ISP モードに入ったことを示す LED。

使い方その1 - 普通にLPCマイコンとして

LPC11U35はすごいことに、USBインターフェイス内蔵。書き込みがシリアル変換とか全くいらずできます。

とりあえずベーシックに UART書き込み

当然ですが、普通に書き込めます。FT232RLやら使って出来ますね。僕自身試してはいないですが、仕様上は可能です。配線はいつもの通りTXD、RXD、RTSでいけるはず。

リセットについては、リセットスイッチを押してください。ISPスイッチを押すとUSBのモードが起動するのでそれは無視してくださいね。

書き込み後はリセットすればいい感じに動いてくれます。

USBで書き込み

PCに接続し、ISPスイッチを押しながらリセットして下さい。ここでのポイントは、リセットスイッチを離しても0.5〜1秒くらいISPスイッチを押し続ける必要があるということ。

「CRP DISABLD」というなんだかよくわからない名前で認識されるのでバイナリファイルをコピー。

WindowsならD&Dで良いらしいんですが、MacやLinuxではどうやら書き込みがうまくいかない様。ddcpを使うことをお勧めします。

使い方その2 - Mbed CMSIS-DAPとして

トラ技ライターにもなれる!って書こうとしたのですが、こっちの方が汎用性あるので、Mbedの紹介に留めます。

これはねぇ、すごいですよー。とにかくSWDデバッグの環境として使えます。Mbedはターゲットに依存しますが、CMSIS-DAPとしてならターゲットがLPCマイコンでなくても使えてしまうというのが神がかってます。ありがとうARM。

まず LPCマイコン情報:トラ技ARMライタ - TG-LPC11U35-501,mbed,LPCXPresso,LPC11U24,LPC1114FN28,MyARMモジュール,MARY,CMSIS-DAP,HDK,SDK,mbedインターフェースからMbedのファームウェアをダウンロード出来るので、これを書き込む。ターゲットは今の所LPC1114とLPC11U35が可能らしい。お好みの方をどうぞ。Mbed使わない人はどちらでも良いです。トラ技ライターの方でも良いですが LPCXpressoで「Toragi」の文字が出るのでダサいです。

2020/5/29 追記:
NXP 社が頻繁に URL を変えるので(愚痴)、公式の配布ページは恐らく消えました。こちらの DAPLink の Release ページ から、release なんとか .zip という名前のファイルをダウンロード・展開してください。そうすると、(リリース番号)_lpc11u35_なんとか.bin があると思います。お好きなのを書き込めば同等のことが出来ます。たとえば 0253_lpc11u35_ssci1114_0x0000.bin を書き込めば良いと思います。先程示したとおり、cp や D&D でどうぞ。ピン配置等は以下の通り変わっていないようです。
2020/5/29 追記 終

このページにあるトラ技ライターのピン情報と照らし合わせると、SWDに必要なピンは以下の様な配置になっているという。

ピン名 ピンの位置
GND 左右1ピン目
3V3 右2ピン目
TARGET_SWDCLK/PIO0_7/LED 左3ピン目
TARGET_SWDIO/PIO0_8 左4ピン目
TARGET_nRESET 右8ピン目

これをお使いのマイコンやらボードやらに繋げて下さいな。Mbedを使う人は必ずリセットも繋いで下さいね。でないと書き込みが始まりませんので。
Mbedでやる人は普通に「MBED」にバイナリファイルを書き込んで下さい。直後にターゲットへ書き込みを開始します。
CMSIS-DAPとしてはお好きな方法でやって下さい。以下にその例を示します。

LPCXpressoで書き込み&デバッグ

コードを色々書きます。その後、下の画像にあるように四角いICのようなマークのボタンをクリック↓

いろいろ OK していくと書き込めます。なんて楽なんでしょう。書き込めない場合は配線を再確認してください。
これまでLPCXpressoでコーディング・ビルド→lpc21ispで書き込み とやってきたので、このやり方は革命的です。というかNXP社の策略にハマった気がしなくもない。

OpenOCD で書き込み & デバッグ

2020/5/29 追記:
ここより下に記述している方法(gdb を用いる方法)はちょっと面倒です。特にこのような外部ツールを使うこと無く、書き込みは以下で一発で出来ます。

$ openocd -f interface/cmsis-dap.cfg -f target/lpc11xx.cfg -c "adapter_khz 5000; program (実行バイナリ).bin; reset; exit"

2020/5/29 追記 終

こちらでも同じように出来ます。上級者向け。以下のようにコマンドを打てばターゲットと接続できます。

$ openocd -f interface/cmsis-dap.cfg -f target/lpc11xx.cfg -c "adapter_khz 5000"

"adapter_khz 5000"は書き込みスピードを速くするおまじない。
あとは適当にarm-none-eabi-gdb(長い)とかで色々やれちゃうんです。書き込みだけ言うと、

(gdb) tar ext:3333
(gdb) mon reset halt
(gdb) load
(gdb) mon reset

これで書き込みからリセットまで出来るんですね。すごーい!しかもなんと、STM32 マイコンでも書き込みができちゃいました。ST社からしたらあまり美味しくない話ですが。

これまでNucleoとか言う下よりも上の方が価値のあるやつでSWDデバッグたのちい!ってやってた訳ですが、もう要らない子ですね。実際のところSW4STM32等で手間なく書き込みしたい人はそっちの方が便利なのですが。
と言うことで永〜く愛用していきたいと思います。

うん、更新頻度落とそう。これはバテる(確信)。