DATA_SECTION 宏,可以定位寄存器文件到指定的位置。
通常,编译器分配 全局变量和静态变量到 .ebss or .bss section中,寄存器文件也同样适用
方法如下 :
#pragma DATA_SECTION (symbol,"sectionname") --C语言
#pragma DATA_SECTION ("sectionname") ----C++语言
#ifdef __cplusplus
#pragmaDATA_SECTION("SciaRegsFile")
#else
#pragmaDATA_SECTION(SciaRegs,"SciaRegsFile");
#endif
volatile struct SCI_REGS SciaRegs;
//----------------------------------------
#ifdef __cplusplus
#pragmaDATA_SECTION("ScibRegsFile")
#else
#pragmaDATA_SECTION(ScibRegs,"ScibRegsFile");
#endif
volatile struct SCI_REGS ScibRegs;
在CMD文件中,
MEMORY
{
...
PAGE 1:
SCIA : origin =0x007050, length = 0x000010 /* SCI-A registers */
SCIB : origin =0x007750, length = 0x000010 /* SCI-B registers */
...
}
SECTIONS
{
...
SciaRegsFile : >SCIA, PAGE = 1
ScibRegsFile : >SCIB, PAGE = 1
...
}