==== トラ技増刊号のMARY基板を使ってみた。 ==== <html> <a href="http://www.amazon.co.jp/gp/product/4789848299/ref=as_li_ss_il?ie=UTF8&tag=yoshisweb-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4789848299" target="_blank"><img border="0" src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&Format=_SL160_&ASIN=4789848299&MarketPlace=JP&ID=AsinImage&WS=1&tag=yoshisweb-22&ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.jp/e/ir?t=yoshisweb-22&l=as2&o=9&a=4789848299" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="http://www.amazon.co.jp/gp/product/4789848299/ref=as_li_ss_tl?ie=UTF8&tag=yoshisweb-22&linkCode=as2&camp=247&creative=7399&creativeASIN=4789848299"target="_blank">2枚入り!組み合わせ自在!超小型ARMマイコン基板<br></a><img src="http://www.assoc-amazon.jp/e/ir?t=yoshisweb-22&l=as2&o=9&a=4789848299" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> </html>\\ トランジスタ技術 増刊号に「組み合わせ自在!超小型ARMマイコン基板」がというものがあって、LPC1114Fのマイコン基板が2枚付録として付いてきます。\\ 同誌は、LPCXpresso IDEを使って開発することを前提に記されているのですが、LPCXpresso IDEはWindowsとLinuxにしか対応していません。\\ \\ が、私の手元のマシンはMac OS X 10.7 (Lion)ですので、こいつでなんとかしたいものです。ということで、手元のLionマシンに開発環境を構築したので、その手順などをメモしときます。\\ ちなみに、この手順は2011年12月24日時点で最新版で揃えてます。\\ === コンパイラ === MacPortsでインストールしようと思ったのですが、どうもサクッとビルドできなかったので、別の方法を当たりました。\\ そこで、YAGARTO (Yet another GNU ARM toolchain) というものを見つけたので、これで構築しました。\\ YAGARTOのWebサイトの"YAGARTO GNU ARM toolchain"をダウンロードします。\\ ディスクイメージをマウントし、入ってる yagarto-4.6.2.app をディスクの展開したい場所にコピーします。(私はホームディレクトリにしました。)\\ ダブルクリックすると展開され、"yagarto-4.6.2"というディレクトリができます。\\ パスを通すために、.bashrcに次の行を追加し、source .bashrcします。\\ export PATH="$PATH:$HOME/yagarto-4.6.2/bin" export PATH="$PATH:$HOME/yagarto-4.6.2/tools" === ISPツール === ビルドしたhexファイルをMARYに転送するツール、lpc21ispはMacPortsで放り込みました。 $ sudo port install lpc21isp とするだけです。 === CP2104のドライバ === MARY基板にはCP2104というUSBシリアル変換ICが搭載されています。これのドライバは、Silicon Labs社のWebサイトからダウンロードできます。\\ [[http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx|CP210x USB to UART Bridge VCP Drivers]] こちらのページの、"Download for Macintosh OSX (v2.9)"の下、"VCP Driver Kit"からダウンロードできます。 === コードの修正 === CQ出版が配布しているサンプルコードをWebサイトからダウンロードしてきます。\\ CQ.zipというファイルですが、[[http://toragi.cqpub.co.jp/tabid/433/Default.aspx|ここ]]に置いてありました。\\ \\ こいつのMakefileは、なにかとWindowsになってます。\\ ですので相対パスにしてガシガシ書き換えましょう。\\ PROG01_COLOR_LEDを書き換えたときのdiffはこちら。\\ 要は、PROG01_COLOR_LEDの下のmakefile, lpc1114_Debug_lib.ld, src/subdir.mk と\\ /CMSISv1p30_LPC11xxのsrc/subdir.mkを書き換えました。 <file text mary.diff> diff -ur CQ.orig/LPC1114/workspace/CMSISv1p30_LPC11xx/Debug/src/subdir.mk CQ.new/LPC1114/workspace/CMSISv1p30_LPC11xx/Debug/src/subdir.mk --- CQ.orig/LPC1114/workspace/CMSISv1p30_LPC11xx/Debug/src/subdir.mk 2011-04-17 15:10:52.000000000 +0900 +++ CQ.new/LPC1114/workspace/CMSISv1p30_LPC11xx/Debug/src/subdir.mk 2011-12-24 22:34:57.000000000 +0900 @@ -20,7 +20,7 @@ src/%.o: ../src/%.c @echo 'Building file: $<' @echo 'Invoking: MCU C Compiler' - arm-none-eabi-gcc -DDEBUG -D__CODE_RED -D__REDLIB__ -I"C:¥CQ¥LPC1114¥workspace¥CMSISv1p30_LPC11xx¥inc" -O0 -g3 -Wall -c -fmessage-length=0 -fno-builtin -ffunction-sections -mcpu=cortex-m0 -mthumb -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" + arm-none-eabi-gcc -DDEBUG -D__CODE_RED -D__REDLIB__ -I../../CMSISv1p30_LPC11xx/inc -O0 -g3 -Wall -c -fmessage-length=0 -fno-builtin -ffunction-sections -mcpu=cortex-m0 -mthumb -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" @echo 'Finished building: $<' @echo ' ' diff -ur CQ.orig/LPC1114/workspace/PROG01_COLOR_LED/Debug/makefile CQ.new/LPC1114/workspace/PROG01_COLOR_LED/Debug/makefile --- CQ.orig/LPC1114/workspace/PROG01_COLOR_LED/Debug/makefile 2011-04-17 15:11:02.000000000 +0900 +++ CQ.new/LPC1114/workspace/PROG01_COLOR_LED/Debug/makefile 2011-12-24 22:32:05.000000000 +0900 @@ -29,7 +29,7 @@ LPC1114.axf: $(OBJS) $(USER_OBJS) @echo 'Building target: $@' @echo 'Invoking: MCU Linker' - arm-none-eabi-gcc -nostdlib -L"C:¥CQ¥LPC1114¥workspace¥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) + arm-none-eabi-gcc -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) @echo 'Finished building target: $@' @echo ' ' $(MAKE) --no-print-directory post-build diff -ur CQ.orig/LPC1114/workspace/PROG01_COLOR_LED/Debug/src/subdir.mk CQ.new/LPC1114/workspace/PROG01_COLOR_LED/Debug/src/subdir.mk --- CQ.orig/LPC1114/workspace/PROG01_COLOR_LED/Debug/src/subdir.mk 2011-04-17 15:11:02.000000000 +0900 +++ CQ.new/LPC1114/workspace/PROG01_COLOR_LED/Debug/src/subdir.mk 2011-12-24 22:30:07.000000000 +0900 @@ -77,7 +77,7 @@ src/%.o: ../src/%.c @echo 'Building file: $<' @echo 'Invoking: MCU C Compiler' - arm-none-eabi-gcc -D__USE_CMSIS=CMSISv1p30_LPC11xx -DDEBUG -D__CODE_RED -D__NEWLIB__ -I"C:¥CQ¥LPC1114¥workspace¥CMSISv1p30_LPC11xx¥inc" -O0 -g3 -Wall -c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -mcpu=cortex-m0 -mthumb -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" + arm-none-eabi-gcc -D__USE_CMSIS=CMSISv1p30_LPC11xx -DDEBUG -D__CODE_RED -D__NEWLIB__ -I../../CMSISv1p30_LPC11xx/inc -O0 -g3 -Wall -c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -mcpu=cortex-m0 -mthumb -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" @echo 'Finished building: $<' @echo ' ' diff -ur CQ.orig/LPC1114/workspace/PROG01_COLOR_LED/Debug/lpc1114_Debug_lib.ld CQ.new/LPC1114/workspace/PROG01_COLOR_LED/Debug/lpc1114_Debug_lib.ld --- CQ.orig/LPC1114/workspace/PROG01_COLOR_LED/Debug/lpc1114_Debug_lib.ld 2011-04-17 15:11:02.000000000 +0900 +++ CQ.new/LPC1114/workspace/PROG01_COLOR_LED/Debug/lpc1114_Debug_lib.ld 2011-12-24 21:36:10.000000000 +0900 @@ -5,4 +5,5 @@ * (created from newlib_nohost_c.ld (LPCXpresso v3.6.2 [Build 279] [29/01/2011] ) on Sun Apr 17 15:11:01 JST 2011) */ -GROUP(libgcc.a libc.a libm.a libcr_newlib_nohost.a) +/* GROUP(libgcc.a libc.a libm.a libcr_newlib_nohost.a) */ +GROUP(libgcc.a libc.a libm.a) </file> === ビルド === 修正したら、LPC1114/workspace/PROG01_COLOR_LED/Debugの下でmakeします。\\ するとLPC1114.hexのタイプスタンプが現在時刻になってるはず。\\ makeする前にmake cleanしたほうがいいかも。 === 転送 === 書き込みは、ドライバのインストールが済んでいる状態で、 $ lpc21isp -control hogehoge.hex /dev/tty.SLAB_USBtoUART 115200 12000 というコマンドで行えます。 ただ、繋いでコマンドを打つだけじゃ、うまく転送ができません。\\ Synchronizing (ESC to abort)... と"."が順に表示されているときに、MARYのCN1の5か6ピンの3.3Vを、CN5の3ピンのPIO0_0とショートして3.3VをPIO0_0に加えてやります。\\ すると転送が開始されます。加える時間は0.5秒〜1秒といったところでしょうか。 (もちろん、自己責任でどうぞ)