0
나는 르네사스 Syenrgy (ARM 피질 M4) 7.40.5.9722IAR 컴파일러의 특정 위치에 변수 또는 함수를 배치하는 방법은 무엇입니까?
코드 플래시 크기 IAR 임베디드 워크 벤치를 사용하고 있습니다 : 나는에이 기능을 넣을
void function (void)
{
unsigned char a;
a = a+1;
}
: 1메가바이트
다음 예제를 고려 플래시의 특정 위치. 이 코드에 대한 사용자 정의 섹션을 정의하는 방법은 무엇입니까?
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
함께 :
내가 IAR 컴파일러 사용 설명서를 통과하고 아래로 한 방법을 구현 한 다음과 같이
#pragma default_function_attribute = @ "MY_FUNC"
void function (void)
{
unsigned char a;
a = a + 1;
}
#pragma default_function_attribute =
그리고 .icf 파일을 나는 부분을 추가 한 이러한 변경 사항은 코드가 올바르게 컴파일됩니다. 그러나 "기능"이 필요한 위치에 있지 않습니다. 0x000C0000
왜 그렇습니까?
생각 당신은 여전히'의 #pragma 위치를 사용할 수 있습니다 = 코드의'#pragma default_function_attribute' 블록 안에있는 함수 위에있는 라인에 '0x000C0000'을 추가하십시오. – ecle