オフライン環境(MDK-ARM)で分割ビルドを行う
.
MDK-ARMにexportしたプロジェクトを使用して、分割ビルドを行う方法を簡単にまとめてみます。
サンプルコードは、以下のファイルです。 /media/uploads/MACRUM/flash_test.zip
以下のような手順でプロジェクトファイルの作成を行いました。
- オンライン環境で、新規プロジェクトを作成(LPC1768用)
- MDK-ARM (uVision) にexport
- 新規ターゲットを追加(Manage component)し、ターゲット名を "flash_data" に設定
- ターゲットを "flash_data" に切り替え
- ターゲット設定 C/C++ の "Define:" を全て削除し、
__
FLASH_DATA__
を追加 - ターゲット設定 C/C++ の "Include Paths" を全て削除
- ターゲット設定 Linker の "Scatter File" を変更(後述)
- ターゲット設定 Linker の "Misc Controls" を全て削除し、
--
diag_suppress=6305 を追加 - 任意のアドレス上にデータを配置するコードを追加(後述)
- ビルドしてエラーがない事を確認し、メニュー [Flash] - [Download] で書き込み
スキャッターファイルの例
LR_IROM1 0x20000 0x20000+0x8000 { ER_IROM1 0x20000 0x20000+0x8000 { .ANY (+RO) } }
#if defined(__FLASH_DATA__) const unsigned char in_flash_data[32768] __attribute__((at(0x20000))) = "Hello, mbed.\n"; #else #include "mbed.h" #define in_flash_data ((volatile unsigned char *)(0x20000L)) DigitalOut myled(LED1); int main() { printf("string = %s\n", in_flash_data); while(1) { myled = 1; wait(0.2); myled = 0; wait(0.2); } } #endif
これで、"flash_data" ターゲット使用して任意のアドレスに特定のデータを書き込むことが出来ます。
そのデータを参照したコードを使う場合は、ターゲットを "mbed NXP LPC1768" に変更して、デバッグなどを行う事が出来ます。
以上です。
Please log in to post comments.