オフライン環境(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.
