ねぎ ― 2013年06月04日 20時56分15秒
LPC800 (2) LPC800 Mini Kit ― 2013年06月09日 15時33分39秒
NXP から荷物か届いた。
何か頼んだ記憶は無い。
恐る恐る開けてみると、袋の中に箱が入っており LPC800 Mini Kit と書いてある。
そういえば、[LPC800キャンペーン]簡単なクイズに答えて、LPC800 Mini ボードを当てよう!
に応募していたのだった。こういうのに当たるのは初めてだ。
うれしい!!
さて、それでは使うための準備を始めよう。
用意する物は
・USB ケーブル (電源供給用)
・RS232 基板 (シリアル通信用)
これぐらいだろうか?
参照:LPC800 Mini Kit (LPC810M021FN8)
LPC810 CodeBase
何か頼んだ記憶は無い。
恐る恐る開けてみると、袋の中に箱が入っており LPC800 Mini Kit と書いてある。
そういえば、[LPC800キャンペーン]簡単なクイズに答えて、LPC800 Mini ボードを当てよう!
に応募していたのだった。こういうのに当たるのは初めてだ。
うれしい!!
さて、それでは使うための準備を始めよう。
用意する物は
・USB ケーブル (電源供給用)
・RS232 基板 (シリアル通信用)
これぐらいだろうか?
参照:LPC800 Mini Kit (LPC810M021FN8)
LPC810 CodeBase
LPC800 (3) MDK-ARM に LPC81x を追加する ― 2013年06月11日 21時39分50秒
MDK-ARM の最新版は 4.71a だが、私の使っている Version は 4.53 だ。
この状態で LPC81x のプロジェクトを読み込むと以下のようなダイアログが表示される。
LPC800 Support for version 4.60 of Keil MDK-ARM これを実行すればよい。
さて、どこに追加されたのか見てみると
UV4.cdb の中ではなく 別のファイル NXP_LPC8xx.cdb が追加されて TOOLS.INI に以下の内容が記述してある。
もちろん、今回も GCC 用の Startup と リンカースクリプトを用意する。
Keil\ARM\GNU\Startup\NXP\LPC8xx\startup_LPC8xxG++.s
Keil\ARM\GNU\Startup\NXP\LPC8xx\LPC810_rom_gnu.ld
参照:
Device Database Parameters (デバイスデータベースのパラメータ)
Customize or Add Devices (カスタムデバイスと新規デバイス)
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ GCC Sourcery CodeBench Lite 2012.09-63
この状態で LPC81x のプロジェクトを読み込むと以下のようなダイアログが表示される。
Error: Device not found Please update your device selectionというわけで LPC81x を追加する。追加は簡単だ。
LPC800 Support for version 4.60 of Keil MDK-ARM これを実行すればよい。
さて、どこに追加されたのか見てみると
UV4.cdb の中ではなく 別のファイル NXP_LPC8xx.cdb が追加されて TOOLS.INI に以下の内容が記述してある。
[UV2] CDB0=UV4\NXP_LPC8xx.cdb("NXP LPC8xx Devices")この方法は知らなかった。これからは私専用の Device file を作成し、そこに追加するデバイスを書き加えることにしよう。
もちろん、今回も GCC 用の Startup と リンカースクリプトを用意する。
Keil\ARM\GNU\Startup\NXP\LPC8xx\startup_LPC8xxG++.s
Keil\ARM\GNU\Startup\NXP\LPC8xx\LPC810_rom_gnu.ld
参照:
Device Database Parameters (デバイスデータベースのパラメータ)
Customize or Add Devices (カスタムデバイスと新規デバイス)
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ GCC Sourcery CodeBench Lite 2012.09-63
LPC800 (4) LED blink (1) ― 2013年06月12日 22時01分21秒
電源を入れる前に基板をチェックする。パターンが有るのに R1 が実装して無い。回路図を見るとピンヘッダーに出力する電圧は R1 が 3.3V で R2 が 5V だ。シリアルの変換基板は 3.3V で使いたいので R2 を取り除き R1 の場所に実装する。
恐る恐るUSB ケーブルだけ接続してみる。
青 LEDが点滅する。
プログラムが書き込んであるんだ!
よしよし。
次にRS232 変換基板を接続する。
Hello, LPC810! が連続して出力される。
なるほど、今のところ問題はない。
さて、前回 Startup を用意したが、ここでは出来合いのサンプルを使うことにする。
コードサンプルは LPC810 CodeBase 。
最初はプリビルドされた tools\LPC810_Blinky_0_2.hex を書き込んでみよう。
書き込みは Flash Magic を使う。 ISP モードにするために Reset と ISP のSW を同時に押す。Reset ・ ISP の順で SW を開放する。
これで ISP モードになっているはずなので書き込みスタート。
そして Reset 。
特に問題はない。ただ、実行してみると LED の点滅速度が遅い。
まあ、いいか。
参照:
LPC800-Mini - DIP8 LPC810ボード
LPC800 Mini-Kit (LPC810M021FN8)
LPC810 CodeBase
恐る恐るUSB ケーブルだけ接続してみる。
青 LEDが点滅する。
プログラムが書き込んであるんだ!
よしよし。
次にRS232 変換基板を接続する。
Hello, LPC810! が連続して出力される。
なるほど、今のところ問題はない。
さて、前回 Startup を用意したが、ここでは出来合いのサンプルを使うことにする。
コードサンプルは LPC810 CodeBase 。
最初はプリビルドされた tools\LPC810_Blinky_0_2.hex を書き込んでみよう。
書き込みは Flash Magic を使う。 ISP モードにするために Reset と ISP のSW を同時に押す。Reset ・ ISP の順で SW を開放する。
これで ISP モードになっているはずなので書き込みスタート。
そして Reset 。
特に問題はない。ただ、実行してみると LED の点滅速度が遅い。
まあ、いいか。
参照:
LPC800-Mini - DIP8 LPC810ボード
LPC800 Mini-Kit (LPC810M021FN8)
LPC810 CodeBase
LPC800 (5) LED blink (2) Keil µVision4 + GCC ― 2013年06月13日 21時13分02秒
前回手に入れたサンプル (LPC810 CodeBase) をコンパイルして書き込んでみよう。
使う環境はいつもの通り
Keil MDK-ARM V4.53
GCC Sourcery CodeBench Lite 2012.09-63
さっそくプロジェクトを作る。
ソースをプロジェクトに登録
次にソースの修正
system_LPC8xx.c
System PLL Clock Source Select Register (SYSPLLCLKSEL) を System Oscillator から IRC Oscillator に変更(1を0)
コンパイル・・・・・・・・問題ない
書き込み・・・・・・・・・エラーだ!
ERROR: Invalid parameters for DEVICE directive: DEVICE(LPC810M021,12.0)
今回 Flash Magic を新しくしたのでそのせいかも知れない。
ドキュメントを読んでみると、パラメータに flashbank が増えている。
パラメータを追加して書き込み・・・・・・・・またエラーだ。
ERROR: Invalid parameters for DEVICE directive: DEVICE(LPC810M021,12.0,0)
何がいけないんだ。
GUI版では書き込みできるのでGUI版と同じデバイス名(LPC810M021FN8)を使ってみる。
書き込み・・・・・・・・・エラーだ!
ERROR: Invalid parameters for ERASEUSED directive: ERASEUSED(.\outG++\LPC810_CodeBaseS.HEX,PROTECTISP)
今度は異なる部分のパラメータだ。
分からない。
もうだめだ。
GUI版の Flash Magic で書き込むことにする。
書き込んで Reset 。
動いている。
特に問題は無いようだ。
さて、ここで動作 Clock を調べてみよう。system_LPC8xx.c の SYSPLLCTRL_Val が 0x41で SYSAHBCLKDIV_Val が 0x1なので Main CLK が 24MHz 、System clock も 24MHz ということになる。
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ LPC800 Support for version 4.60 of Keil MDK-ARM
+ GCC Sourcery CodeBench Lite 2012.09-63
+ LPC810 CodeBase
+ Flash Magic Version 7.50
使う環境はいつもの通り
Keil MDK-ARM V4.53
GCC Sourcery CodeBench Lite 2012.09-63
さっそくプロジェクトを作る。
Output Create Executable R Create HEX File Listing R Linker Listing R Memory Map CC Define __USE_CMSIS R Enable APCS (ARM Procedure Call Standard) R Support Calls between ARM and THUMB Instruction Set R Compile Thumb Code IncludePaths .\cmsis;.\src MiscControls -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections Assembler Define R Enable ARM/Thumb Interworking Include Paths MiscControls Linker R Do not use Standard System Startup Files R Do not use Standard System Libraries R Use Math Libraries linkerScriptFile .\linker\LPC810_rom_gnu.ld IncludeLibraries IncludePaths .\linker MiscControls -nostdlib -Xlinker --gc-sections Utilities Use External Tool for Flash Programming Command fm.exe Arguments DEVICE($D,$X) ERASEUSED("!H",PROTECTISP) HEXFILE("!H",NOCHECKSUMS,NOFILL,PROTECTISP) COM(1,230400)
ソースをプロジェクトに登録
main.c system_LPC8xx.c gpio.c mrt.c printf.c printf-retarget.c spi.c uart.c startup_LPC8xxG++.s
次にソースの修正
system_LPC8xx.c
System PLL Clock Source Select Register (SYSPLLCLKSEL) を System Oscillator から IRC Oscillator に変更(1を0)
コンパイル・・・・・・・・問題ない
書き込み・・・・・・・・・エラーだ!
ERROR: Invalid parameters for DEVICE directive: DEVICE(LPC810M021,12.0)
今回 Flash Magic を新しくしたのでそのせいかも知れない。
ドキュメントを読んでみると、パラメータに flashbank が増えている。
パラメータを追加して書き込み・・・・・・・・またエラーだ。
ERROR: Invalid parameters for DEVICE directive: DEVICE(LPC810M021,12.0,0)
何がいけないんだ。
GUI版では書き込みできるのでGUI版と同じデバイス名(LPC810M021FN8)を使ってみる。
書き込み・・・・・・・・・エラーだ!
ERROR: Invalid parameters for ERASEUSED directive: ERASEUSED(.\outG++\LPC810_CodeBaseS.HEX,PROTECTISP)
今度は異なる部分のパラメータだ。
分からない。
もうだめだ。
GUI版の Flash Magic で書き込むことにする。
書き込んで Reset 。
動いている。
特に問題は無いようだ。
さて、ここで動作 Clock を調べてみよう。system_LPC8xx.c の SYSPLLCTRL_Val が 0x41で SYSAHBCLKDIV_Val が 0x1なので Main CLK が 24MHz 、System clock も 24MHz ということになる。
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ LPC800 Support for version 4.60 of Keil MDK-ARM
+ GCC Sourcery CodeBench Lite 2012.09-63
+ LPC810 CodeBase
+ Flash Magic Version 7.50
LPC800 (6) LED blink (3) Keil µVision4 + RealView ― 2013年06月16日 14時47分26秒

この際なので µVision4 + RealView でもプロジェクトを作ってみる。
Project メニューから New µVision Project を選択し 新規プロジェクトを作成する。
Target Options は、以下のように設定した。
ソースをプロジェクトに登録。
コンパイル ・・・・・・・・・ エラーだ。
.\outarm\LPC800_MDK-ARM.axf: Error: L6200E: Symbol printf multiply defined (by printfa.o and printf.o).
.\outarm\LPC800_MDK-ARM.axf: Error: L6200E: Symbol sprintf multiply defined (by printfa.o and printf.o).
Library Retarget File を書いてやれば、そのまま printf が使えるらしいが、ここでは関数名を変えてしまうことにする。
printf sprintf を tprintf tsprintf に変更する。
コンパイル ・・・・・・・・・ 問題ない
書き込み ・・・・・・・・・ 問題ない
え!
書き込める?
Command も Arguments も前回と同じだ。
異なるのはファイル名とディレクトリ名か?
ファイル名 LPC810_CodeBaseS.hex
ディレクトリ名 outG++
書き出してみるとディレクトリ名が怪しい outG++ を outGS に変更して書き込み。
ああ!書き込める。
というわけで Flash Magic のコマンドライン版ではディレクトリ名に + があるとだめなようだ。
ここまでの所をまとめておこう。
LPC810_LED_blink
ところで上記のケーブル(TTL-232R-3V3) LPC800 Mini Kit にぴったりだ。
似たような物でこんなの(USB to TTL Serial Cable - ID: 954)もある。
どちらもコンパクトでいいね。
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ LPC800 Support for version 4.60 of Keil MDK-ARM
+ LPC810 CodeBase
+ Flash Magic Version 7.50
Project メニューから New µVision Project を選択し 新規プロジェクトを作成する。
Target Options は、以下のように設定した。
Target R Use Cross-Module Optimization R Use MicroLIB R IROM1 Start 0x0 Size 0x1000 R IRAM1 Start 0x10000000 Size 0x400 Output Create Executable R Create HEX File Listing R Linker Listing R Memory Map C/C++ Define Include Path .\cmsis;.\src Misc Controls Asm Define NO_CRP Include Path Misc Controls Linker R Use Memory Layout from Target Dialog R Report 'might fail' Conditions as Errors Misc Controls Utilities Use External Tool for Flash Programming Command fm.exe Arguments DEVICE($DFN8,$X,0) ERASEUSED("!H",PROTECTISP) HEXFILE("!H",NOCHECKSUMS,NOFILL,PROTECTISP) COM(1,230400)
ソースをプロジェクトに登録。
コンパイル ・・・・・・・・・ エラーだ。
.\outarm\LPC800_MDK-ARM.axf: Error: L6200E: Symbol printf multiply defined (by printfa.o and printf.o).
.\outarm\LPC800_MDK-ARM.axf: Error: L6200E: Symbol sprintf multiply defined (by printfa.o and printf.o).
Library Retarget File を書いてやれば、そのまま printf が使えるらしいが、ここでは関数名を変えてしまうことにする。
printf sprintf を tprintf tsprintf に変更する。
コンパイル ・・・・・・・・・ 問題ない
書き込み ・・・・・・・・・ 問題ない
え!
書き込める?
Command も Arguments も前回と同じだ。
異なるのはファイル名とディレクトリ名か?
ファイル名 LPC810_CodeBaseS.hex
ディレクトリ名 outG++
書き出してみるとディレクトリ名が怪しい outG++ を outGS に変更して書き込み。
ああ!書き込める。
というわけで Flash Magic のコマンドライン版ではディレクトリ名に + があるとだめなようだ。
ここまでの所をまとめておこう。
LPC810_LED_blink
ところで上記のケーブル(TTL-232R-3V3) LPC800 Mini Kit にぴったりだ。
似たような物でこんなの(USB to TTL Serial Cable - ID: 954)もある。
どちらもコンパクトでいいね。
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ LPC800 Support for version 4.60 of Keil MDK-ARM
+ LPC810 CodeBase
+ Flash Magic Version 7.50
LPC800 (7) LED blink (4) Ride7 + Rkit-ARM ― 2013年06月22日 14時31分07秒
Ride7 + RKit-ARM でも動作を確認しておこう。
まずは startup
crt0_LPC81x.s
続いてリンカースクリプト
LPC81x_4K_1K_FLASH.ld
LPC81x_4K_1K_DEF.ld
LPC81x_COMMON.ld
sections_FLASH.ld
以下の必要なファイルは lpc8xx_template からもらってこよう。
system_LPC8xx.c
system_LPC8xx.h
core_cm0plus.h
core_cmFunc.h
core_cmInstr.h
LPC8xx.h
main.c (ポートの変更あり)
そしてコンパイル
書き込み
問題ないね。
ただし、スクリプトで LPC81x を追加していないとコンパイルオプションで target processor に cortex-m3 が選択されてしまうので注意しよう。
また、Sourcery CodeBench Lite 2012.09-63 では cortex-m0plus をサポートしていないので cortex-m0 を指定する。
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Ride7 version 7.30.10.0169
+ RKit-ARM version 1.30.10.0356
+ GCC Sourcery CodeBench Lite 2012.09-63
+ Flash Magic Version 7.50
まずは startup
crt0_LPC81x.s
続いてリンカースクリプト
LPC81x_4K_1K_FLASH.ld
LPC81x_4K_1K_DEF.ld
LPC81x_COMMON.ld
sections_FLASH.ld
以下の必要なファイルは lpc8xx_template からもらってこよう。
system_LPC8xx.c
system_LPC8xx.h
core_cm0plus.h
core_cmFunc.h
core_cmInstr.h
LPC8xx.h
main.c (ポートの変更あり)
そしてコンパイル
書き込み
問題ないね。
ただし、スクリプトで LPC81x を追加していないとコンパイルオプションで target processor に cortex-m3 が選択されてしまうので注意しよう。
また、Sourcery CodeBench Lite 2012.09-63 では cortex-m0plus をサポートしていないので cortex-m0 を指定する。
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Ride7 version 7.30.10.0169
+ RKit-ARM version 1.30.10.0356
+ GCC Sourcery CodeBench Lite 2012.09-63
+ Flash Magic Version 7.50
LPC800 (8) mbed (1) ― 2013年06月25日 23時04分57秒
LPC810 の資料を探していて mbed を見つけた。mbed は聞いた事があったが LPC812 がサポートされていると分かったので使ってみたくなった。
使ってみるといっても実際は公開されているソースを自分の環境でコンパイルして動かすということだ。
MPU が異なっても共通のライブラリが使えるようなので面白そうだ。
現在サポートされているターゲットは
LPC812 が動くなら LPC810 でも動くのじゃないかと思い、試してみた。
ソースはここ (mbed SDK) にあるが、必要な物がどれかよく分からない。
まずは、libraries\mbed\targets\cmsis\NXP\TARGET_LPC81X の中のファイル
あ、修正するのは
startup_LPC8xx.s
__initial_sp EQU 0x10001000 を 0x10000400 に変更
LPC812.sct 問題なく動く。いい感じだ。
次は GCC で試してみよう。
TARGET_LPC81X 内に TOOLCHAIN_GCC_CS を作成し LPC810.ld と startup_LPC81x.s と sys.cpp を用意する。
TARGET_LPC11UXX\TOOLCHAIN_GCC_CS の中身をコピーして修正すればよい。
コンパイルすると、エラーだ。
RealView は余裕ではいるのになぜ?
いろいろ試していて分かったことは sys.cpp をリンクすると一気にバイナリサイズが大きくなって容量をオーバーしてしまうことだ。
今の所解決方法が見つからない。
参照:mbed
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ LPC800 Support for version 4.60 of Keil MDK-ARM
+ GCC Sourcery CodeBench Lite 2012.09-63
+ mbed SDK
+ Flash Magic Version 7.50
使ってみるといっても実際は公開されているソースを自分の環境でコンパイルして動かすということだ。
MPU が異なっても共通のライブラリが使えるようなので面白そうだ。
現在サポートされているターゲットは
LPC2368 LPC1768 LPC11U24 LPC4088 LPC4330 LPC812 KL25Z STM32F407
LPC812 が動くなら LPC810 でも動くのじゃないかと思い、試してみた。
ソースはここ (mbed SDK) にあるが、必要な物がどれかよく分からない。
まずは、libraries\mbed\targets\cmsis\NXP\TARGET_LPC81X の中のファイル
startup_LPC8xx.s sys.cpp cmsis_nvic.c core_cm0.c system_LPC8xx.cと、前回使用した main.c を使って RealView でコンパイルリンクしてみる。
あ、修正するのは
startup_LPC8xx.s
__initial_sp EQU 0x10001000 を 0x10000400 に変更
LPC812.sct 問題なく動く。いい感じだ。
次は GCC で試してみよう。
TARGET_LPC81X 内に TOOLCHAIN_GCC_CS を作成し LPC810.ld と startup_LPC81x.s と sys.cpp を用意する。
TARGET_LPC11UXX\TOOLCHAIN_GCC_CS の中身をコピーして修正すればよい。
コンパイルすると、エラーだ。
./out/lpc810.elf section `.text' will not fit in region `rom' ./out/lpc810.elf section `.data' will not fit in region `ram' region `rom' overflowed by 6512 bytes region `ram' overflowed by 1384 bytesROM も RAM もサイズに入りきらないらしい。
RealView は余裕ではいるのになぜ?
いろいろ試していて分かったことは sys.cpp をリンクすると一気にバイナリサイズが大きくなって容量をオーバーしてしまうことだ。
今の所解決方法が見つからない。
参照:mbed
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ LPC800 Support for version 4.60 of Keil MDK-ARM
+ GCC Sourcery CodeBench Lite 2012.09-63
+ mbed SDK
+ Flash Magic Version 7.50
LPC800 (9) mbed (2) libraries ― 2013年06月29日 19時08分05秒
今回はライブラリの作成をすることにする。
libraries\mbed\targets\hal\NXP\TARGET_LPC81X と
libraries\mbed\common
の中身をまとめて mbed というライブラリにする。
まず、 RealView でライブラリを作成してみる。
....
エラーの連続だ。
何がいけないのかよく分からない。
続いて GCC。
問題なくライブラリが出来上がる。
なかなか問題のある成り行きだ。
ターゲットファイルは RealView でうまくいって GCC で失敗している。
一方、ライブラリは RealView で失敗して GCC で成功している。
このままではどうにもならない。
一度 LPC810 を離れ、別のターゲットで試してみよう。
次に何とかなりそうなのが LPC1114 と LPC2388 だ。
今度は、 LPC1114 でやってみよう。
参照:mbed
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ LPC800 Support for version 4.60 of Keil MDK-ARM
+ GCC Sourcery CodeBench Lite 2012.09-63
+ mbed SDK
+ Flash Magic Version 7.50
libraries\mbed\targets\hal\NXP\TARGET_LPC81X と
libraries\mbed\common
の中身をまとめて mbed というライブラリにする。
まず、 RealView でライブラリを作成してみる。
....
エラーの連続だ。
何がいけないのかよく分からない。
続いて GCC。
問題なくライブラリが出来上がる。
なかなか問題のある成り行きだ。
ターゲットファイルは RealView でうまくいって GCC で失敗している。
一方、ライブラリは RealView で失敗して GCC で成功している。
このままではどうにもならない。
一度 LPC810 を離れ、別のターゲットで試してみよう。
次に何とかなりそうなのが LPC1114 と LPC2388 だ。
今度は、 LPC1114 でやってみよう。
参照:mbed
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ LPC800 Support for version 4.60 of Keil MDK-ARM
+ GCC Sourcery CodeBench Lite 2012.09-63
+ mbed SDK
+ Flash Magic Version 7.50
LPC800 (10) mbed (3) ライブラリ作成 ― 2013年06月30日 10時06分10秒
別のターゲットで試す前に調べてみた。
答えは意外なことに身近な所にあった。
それは µVision4 の Help の中。
command-line option として
"--gnu”
を与えればよい。
というわけで、 RealView を使えば問題なくライブラリができてターゲットファイル群とリンクできることになった。
それはいいんだけど、今の所 RealView は使っていないのでやはり gcc で何とかしたい。
TOOLCHAIN_GCC_CS の中の sys.cpp を sys.c にしてみた。
region `ram' overflowed by 96 bytes
やはりエラーだ。
rom の容量オーバーはなくなり、ram もあと少しというところまできた。
次に、 sys.c をプロジェクトから外してみた。
エラーにはならない。
なくてもいい物なのか?
ついでにライブラリもリンクしてみる。(まだライブラリはコールしていない。)
問題ない。
書き込んでみる。(今回は lpc21isp を使った[lpc21isp.exe -wipe -hex !H com1 230400 12000])
動いている。
おお!とうとうここまできた。
あとはライブラリを使って動かしてみることだ。
参照:mbed
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ LPC800 Support for version 4.60 of Keil MDK-ARM
+ GCC Sourcery CodeBench Lite 2012.09-63
+ mbed SDK
+ lpc21isp Version 1.92
答えは意外なことに身近な所にあった。
それは µVision4 の Help の中。
command-line option として
"--gnu”
を与えればよい。
というわけで、 RealView を使えば問題なくライブラリができてターゲットファイル群とリンクできることになった。
それはいいんだけど、今の所 RealView は使っていないのでやはり gcc で何とかしたい。
TOOLCHAIN_GCC_CS の中の sys.cpp を sys.c にしてみた。
region `ram' overflowed by 96 bytes
やはりエラーだ。
rom の容量オーバーはなくなり、ram もあと少しというところまできた。
次に、 sys.c をプロジェクトから外してみた。
エラーにはならない。
なくてもいい物なのか?
ついでにライブラリもリンクしてみる。(まだライブラリはコールしていない。)
問題ない。
書き込んでみる。(今回は lpc21isp を使った[lpc21isp.exe -wipe -hex !H com1 230400 12000])
動いている。
おお!とうとうここまできた。
あとはライブラリを使って動かしてみることだ。
参照:mbed
環境:LPC800 Mini Kit (LPC810M021FN8)
+ Keil MDK-ARM V4.53
+ LPC800 Support for version 4.60 of Keil MDK-ARM
+ GCC Sourcery CodeBench Lite 2012.09-63
+ mbed SDK
+ lpc21isp Version 1.92
最近のコメント