ここ最近CQ出版の技術系雑誌トランジスター技術やインターフェース誌、その増刊やムックなどで"すぐに使える"と銘打ったUSB接続のマイコン基板が付属したものが増えています。昔はエバボードも高価で個人ではなかなか手が出なかったのに隔世の感があります。
今回のトラ技増刊号の超小型ARMマイコン基板はNXP社のLPC1114というCortex-m0コアのARMチップ搭載の小型基板が2枚ついており、Arduinoよろしく拡張ボードを乗せたり基板同士をつないでCPU間で通信したり出来るようになっており遊べそうな感じです。
Macで雑誌や自作のプログラムをダウンロードして実行できるようにするまでの手順をメモ。
ツールなどのインストール
- portsからarm-elf-gcc, arm-elf-binutils, lpc21ispをインストール
sudo port install arm-elf-binutils
sudo port install arm-elf-gcc
sudo port lpc21isp - CP210xドライバのインストール
USB to UART Bridge VCP Drivers
ただし最新のV2.7ではうまくいかないかもです。当方では一つ古いバージョンにダウンして使用 - ターミナルソフトをインストール
私はRoger Meier's FreewareからCoolTermをもらってきて使用
CQ出版のサンプルコードのコンパイル
- CQ出版のページからサンプルコードをダウンロード
【増刊】超小型ARMマイコン基板 特設ページ | トランジスタ技術
- CQ.zipを展開した後適当に手パッチ
基本的にDebugの下のmakefileとsrc/subdir.mkでツール名とパスを合わせて - 適当にコンパイルエラーの出るところを修正するだけ
- まずライブラリから。
- cd CQ/LPC1114/workspace/CMSISv1p30_LPC11xx/Debug
- makefileを開きarm-none-eabi-gccをarm-elf-gcc-4.5に変更
- src/subdir.mkで-I"C:\CQ\LPC1114\workspace\CMSISv1p30_LPC11xx\inc" を-I../../CMSISv1p30_LPC11x/incとする
- makeする。エラーが出たら適宜調整
- 同じようにPROG01_COLOR_LEDでも
- cd CQ/LPC1114/workspace/PROG01_COLOR_LED/Debug
- makefileを開きarm-none-eabi-gccの行を以下のように変更
arm-elf-gcc-4.5 -Wl,--no-warn-mismatch -nostdlib -L"../../CMSISv1p30_LPC11xx/Debug" -Xlinker -Map=LPC1114.map -Xlinker --gc-sections -mcpu=cortex-m0 -mthumb -T "lpc1114_Debug.ld" -o"LPC1114.axf" $(OBJS) $(USER_OBJS) $(LIBS) - post-build:のarm-none-eabi-objcopyやsizeをarm-elf-objcopy, arm-elf-sizeに変更
- src/subdir.mkでも同じようにarm-none-eabi-gccをarm-elf-gcc-4.5に変更して
-I"C:\CQ\LPC1114\workspace\CMSISv1p30_LPC11xx\inc" を-I../../CMSISv1p30_LPC11x/incとする。 - lpc1114_Debug_lib.ldを開きlibcr_newlib_nohost.aをリストから削除
- makeする。
- ビルドが無事終わってLPC1114.hexが出来ると成功
ボードで走らせてみる
NXPのLPC系マイコンはシリアルポート経由でFlash書き込みやメモリ読み書きの出来るプロトコルが公開されています。8N1でボーレートは自動設定。DTRのONでリセットをアサート、OFFでリセット解除。その際RTSがONならブートローダが起動、OFFならファームウェアが起動します。このMARYボードではFTDIと並んでよく使われているCP210x系のCP2104というUSB to Serial Bridge ICが搭載されておりこれを介して書き込みが簡単にできます。 端末ソフトから手動で操作もできます。
Flashへの書き込みはWindowsではFlashMagicというGUIツールが用意されていますが、これの代わりにLinux/MacではCLIですがlpc21ispというツールがあります。
- 接続確認
lpc21isp -control -detectonly /dev/null /dev/tty.SLAB_USBtoUART 115200 12000
- 書き込み
lpc21isp -control hogehoge.hex /dev/tty.SLAB_USBtoUART 115200 12000
Mac用CP210xドライバについて
VCPドライバの最新版(v2.7)を入れるとなにやら信号線の制御がおかしく上手く動きませんでした。一つ古いバージョンがおすすめです。学研のJapanenoでもリセットがうまくいっていませんでしたが、/dev/tty.*ではなく/dev/cu.*を指定することで手動リセットなしで使えます。
余談というか希望など
上記手順で環境を作ってArduino用の7セグLED基板をICクリップ線でつないでちょろっとプログラムを書いて動作確認してみるとSPIで通信が出来て数字が表示出来ました。次はデバッガをなんとかしたいものです。
ところで雑誌・ムック付属のマイコンボードの最大の不満はUSB以外のコネクタ類がろくに実装されていないこと。まともに使おうとすると部品を入手して半田付けが必要になります。手先のぶきっちょなソフト屋としてはつらいところです。多少値段が上がってもピンやコネクタ類が実装してあるものをお願いしたいものです。(その点学研のJapanino(Arduino互換)は多少問題はありましたがちゃんとコネクタが付いてましたね) 。結局完成品の評価ボードを買った方がトータルで速く安価になってしまいます。せっかく雑誌に付属させるのですから今後は是非コネクタ実装済みでお願いします。
コメント (1)
はじめまして。私もMacなんですが、とても参考になりました。
ただ、VCPドライバーがv2.7とv2.2しか入手できません。
v2.7ではご指摘の通り通信もできない感じ。v2.2ではなにやら通信めいたことはしてそうですが、さいごに.... on "?"と謎のメッセージが出ます。
まだ、独自のプログラムをコンパイルしてみるところまで行ってないので、ちゃんと書き込めているかも解りません。
とりあえず、VCPドライバーv2.6のありかを教えて頂けると助かります。当方、OS 10.4,PPCです。
投稿者: ハオコゼ | 2011年04月18日 12:22
日時: 2011年04月18日 12:22