0
私はルネサスSyenrgy(ARM皮質M4)7.40.5.9722IARコンパイラの特定の場所に変数または関数を配置する方法は?
コードフラッシュサイズのためのIAR Embedded Workbenchを使用しています:私がこの機能を載せていきたいと思います
void function (void)
{
unsigned char a;
a = a+1;
}
:1メガバイト
は、次の例を考えてみましょうフラッシュ内の特定の場所。 このコードのユーザー定義セクションを定義する方法とは何ですか?私はIARコンパイラユーザガイドを経て、以下のように述べた方法を実施してきた
:
#pragma default_function_attribute = @ "MY_FUNC"
void function (void)
{
unsigned char a;
a = a + 1;
}
#pragma default_function_attribute =
そして.icfファイルに次のように、私はセクションを追加しました:付き
define symbol region_VECT_start = 0x00000000;
define symbol region_VECT_end = 0x000003FF;
define symbol region_ROMREG_start = 0x00000400;
define symbol region_ROMREG_end = 0x000004FF;
define symbol region_FLASH_start = 0x00000500;
define symbol region_FLASH_end = 0x000BFFFF; // Fklsh end address is modified from 0x000FFFFF to 0x000BFFFF
define symbol region_MY_FUNC_start = 0x000C0000; // This statement is added
define symbol region_MY_FUNC_end = 0x000FFFFF; // This statement is added
define symbol region_RAM_start = 0x20000000;
define symbol region_RAM_end = 0x2002FFFF;
define symbol region_DF_start = 0x40100000;
define symbol region_DF_end = 0x40103FFF;
define symbol region_QSPI_start = 0x60000000;
define symbol region_QSPI_end = 0x63FFFFFF;
/* Stack and heap sizes are defined in bsp_cfg.h */
define memory mem with size = 4G;
define region VECT_region = mem:[from region_VECT_start to region_VECT_end];
define region ROMREG_region = mem:[from region_ROMREG_start to region_ROMREG_end];
define region FLASH_region = mem:[from region_FLASH_start to region_FLASH_end];
define region RAM_region = mem:[from region_RAM_start to region_RAM_end];
define region DF_region = mem:[from region_DF_start to region_DF_end];
define region QSPI_region = mem:[from region_QSPI_start to region_QSPI_end];
define region MY_FUNC = mem:[from region_MY_FUNC_start to region_MY_FUNC_end]; // New section is added
をこれらの変更は、コードが正しくコンパイルされています。 しかし、「機能」は必要な場所に配置されていません0x000C0000
なぜですか?
私はあなたがまだ 'の#pragma場所を使用することができると思います=あなたのコードの中の '#pragma default_function_attribute'ブロックの中のあなたの関数の上にある行に' 0x000C0000'を置きます。 – ecle