秋月で売っているLPC11U35を汎用ARMデバッガとして使いたいと思います。
目次
ここでは Ubuntu 14.04 の使用を前提としています。
使用する部品と回路
- LPC11U35 DIP化モジュール ¥450
- 12MHz 水晶振動子
- (Micro)USBコネクタ
- 抵抗・コンデンサ(値は回路図参照)
デバッガを普通に買うと¥2,000はするので,非常に経済的です。
LPC11U35にCMSIS-DAPファームウェアを入れる
ファームウェアをダウンロード
LPC11U35をCMSIS-DAP準拠のデバッガとして機能させるために,ファームウェアを入れます。
の中段に『●トラ技ARMライタのファーム・ウェア』という項目があるので,そこのリンクからダウンロードして解凍して下さい。
ファームウェアを焼く
- LPC11U35のUSBをPCに接続します。
- LPC11U35をブートモードにします。PIO0_1に接続したボタンとRESETボタンを両方押して,RESETボタン→PIO0_1に接続したボタンの順に離して下さい。
- Nautilusには『CRP DISABLE』という名前で表示されます。取り敢えずマウントして下さい。
- 本来なら,USBメモリのようにファイルをドラッグ&ドロップしただけで書き込まれますが,Ubuntuだと上手く書き込まれないようなので,先ほどダウンロードして解凍したファイルのあるディレクトリで,
$ dd bs=1024 conv=nocreat,notrunc if=firmware.bin of=/media/ユーザー名/CRP\ DISABLD/firmware.bin
を実行して下さい。マウントすることを忘れずに。
書き込みを終えたら,必ずRESETボタンを押してBOOTモードを抜けて下さい。
Open OCDをインストールする
Open OCDのビルド
Gitをインストールしていないなら,する。
$ sudo apt-get install git
以下を実行。
$ sudo apt-get install libtool autoconf texinfo libusb-1.0-0-dev $ sudo apt-get install libhidapi-dev $ git clone http://repo.or.cz/r/openocd.git openocd $ cd openocd $ ./bootstrap $ ./configure --enable-stlink --enable-cmsis-dap $ make
udevルールの追加
例の如く,udevルールを追加します。
/etc/udev/rules.d/
に,99-CMSIS.rules
というファイルを作ります。中身は以下の通りです。
ATTRS{product}=="*CMSIS-DAP*", MODE="664", GROUP="plugdev"
以下を実行して,変更を適用します。
$ udevadm control --reload-rules
試しに書き込んでみよう
DIPのLPC1114が手元にあったので,これで実験してみます。
ターゲットとの接続
TARGET_RESETをターゲットのRESETピンに,TARGET_SWCLKをターゲットのSWCLKピンに,TARGET_SWDIOをターゲットのSWDIOピンにつなぐだけです。
Open OCDでの操作
取り敢えず,ディレクトリを移動します。
$ cd tcl
LPC1114の場合,以下のコマンドで書き込みが行なえます。
$ ../src/openocd -f interface/cmsis-dap.cfg -f target/lpc11xx.cfg -c "adapter_khz 5000; program ファイル名.bin verify"
転送速度はadapter_khz 5000
で上限いっぱいに上げています。問題が生じたら引き下げて下さい。このコマンドを入力しないと10kHzで転送されるので書き込みに160秒ほどかかります。
なお,ATSAMD21の場合は,以下のコマンドです。
$ ../src/openocd -f interface/cmsis-dap.cfg -f target/at91samdXX.cfg -c "program ファイル名.bin verify"