秋月でLPC11U35 が乗っているボードを買った。うっかり3枚買っていた。EA LPC11U35 QuickStart Board
と互換のもの。
RAM や Flash が少なめだけど以下の点で魅力的なボード
- mbed 対応
- 850円と安価
- 単体で USB 経由で書きこめる
- デバッグするならシリアルは別途繋ぐ必要あるけど
- 別のチップに対して USB SWD インターフェイスになれる
コード的な備考を先に書いておく
- LED1 〜 LED4 は全部 P0_7 のエイリアスになっている。
- USBTX/USBRX はサポートされない
Lチカのコードは何の変哲もない。
#include "mbed.h" DigitalOut led(LED1); // Serial serial(UART_TX, UART_RX); int main() { for (;;) { led = 1; wait(0.5); led = 0; wait(0.5); } }
ビルドするも動かない
platformio でビルドしたのを書きこんでもさっぱり動かず、再度 CRP DISABLED というボリュームがマウントされてしまう。オンラインコンパイラでは動くので、手元の環境の問題であることはわかったが、なかなか原因がわからなかった。
結局 platformio は mbed OS 5 の環境でビルドしようとするが、LPC11U35 では RAM が足りず起動できないようだ。
実際、mbed の公式を見て mbed OS 5 系に対応するボードをリストにすると (そういうことができることにはじめて気付いたが)、LPC11U35 は出てこない。
platformio でフレームワークのバージョンを指定してビルドする方法がどう調べてもわからなかった。
mbed cli を使う
そういうことで、いろいろ試したけど、あきらめて platformio のことは忘れましょう。
ARM 公式で提供されている mbed-cli をいれるのが今のところは最良のようです。
インストール
まず Python のツールなので python が必要なのと、pip も必要です。ここでは
- python は macOS のシステムに入っているものを使う
- pip はグローバルに入れる
- mbed-cli もグローバルに入れる
- ほかだいたいの依存モジュールはユーザー領域にいれる (pip --user)
- 既存の setuptools をアップグレードしようとするのだが OS 保護に守られて root でも上書きできないので、基本的に --user で入れたほうが良い。
という感じでいきます。
curl https://bootstrap.pypa.io/get-pip.py | sudo python sudo pip install mbed-cli IntelHex
mbed-cli には GCC_ARM のツールチェーンを入れてくれる機能はなく、前もって arm-none-eabi-gcc とかを入れておく必要がある。https://launchpad.net/gcc-arm-embedded とかを入れてパスを通しておく。
もしくは、platformio で既に入れてあるのがある場合は以下のようにしてパスを通せば使える。
export PATH=$HOME/.platformio/packages/toolchain-gccarmnoneeabi/bin:$PATH
プロジェクト作成
今回使う LPC11U35 は mbed OS 5 未対応のため、mbed 2 (いろいろ別名がある。mbed library / mbed classic など) を使うようにプロジェクトを作る。--mbedlib を指定すると mbed 2 環境になる。
sketch はプロジェクト名。
mbed new sketch --mbedlib cd sketch vim main.cpp mbed deploy pip install --upgrade --ignore-installed --user -r .temp/tools/requirements.txt mbed compile -t GCC_ARM -m LPC11U35_401 # LPC11U35 を USB かきこみモードにして cp ./BUILD/LPC11U35_401/GCC_ARM/sketch2.bin /Volumes/CRP\ DISABLD/firmware.bin #リセットボタンで動く
しかし mbed-cli は凶悪で、プロジェクトディレクトリ以下に 2GB ぐらいファイルをコピーしてくる (mbed 2 の全ソースコード)。
自分は複数端末 (ノートとデスクトップ) で開発する関係で Dropbox のディレクトリで同期させておくことが多いのだが、これだと死ねる。つらい。
ピン名など
回路図
- オリジナル Quick Start Board http://www.embeddedartists.com/sites/default/files/support/qsb/lpc11u35/LPC11U35_QSB_rev_PA1.pdf
- 秋月版 http://akizukidenshi.com/download/ds/akizuki/AE-LPC11U35-MB_schematic.pdf
見比べると結構違う。
- Q1 の違い。秋月版はFET
- 3.3V レギュレータの違い
- リセットICの違い
- USB 入力の保護の違い
- 秋月版はコモンモードフィルタ付きのを使ってる
~/.platformio/packages/framework-mbed/targets/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U35_401 以下にある。