除了对文件使用 option之外,还可以使用sct文件,本质上都是调用sct文件,添加指定过的文件的.o文件。
原型如下
- LR_IROM1 0x08000000 0x00200000 { ; load region size_region
- ER_IROM1 0x08000000 0x00200000 { ; load address = execution address
- *.o (RESET, +First)
- *(InRoot$Sections)
- .ANY (+RO)
- .ANY (+XO)
- }
- RW_IRAM1 0x20000000 0x00020000 { ; RW data
- .ANY (+RW +ZI)
- }
- RW_IRAM2 0x24000000 0x00080000 {
- .ANY (+RW +ZI)
- }
- }
复制代码 对文件option之后就变成了- LR_IROM1 0x08000000 0x00200000 { ; load region size_region
- ER_IROM1 0x08000000 0x00200000 { ; load address = execution address
- *.o (RESET, +First)
- *(InRoot$Sections)
- .ANY (+RO)
- .ANY (+XO)
- }
- RW_IRAM1 0x20000000 0x00020000 { ; RW data
- .ANY (+RW +ZI)
- }
- RW_IRAM2 0x24000000 0x00080000 {
- .ANY (+RW +ZI)
- }
- }
- LR_ROM1 0x90000000 0x02000000 {
- ER_ROM1 0x90000000 0x02000000 { ; load address = execution address
- guiapp_resources.o (+RO)
- }
- }
复制代码 这个时候又想对其他文件某个常量进行映射到外部flash,继续修改
- LR_ROM1 0x90000000 0x02000000 {
- ER_ROM1 0x90000000 0x02000000 { ; load address = execution address
- guiapp_resources.o (+RO)
- *.o (EXTFLASH)
- }
- }
复制代码 这个时候就可以单独对常量操作了
- const unsigned char Tx_Buffer123[] __attribute__((section("EXTFLASH"))) =
- {
- 0x36,0x37,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
- 0x32,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
- 0x32,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
- 0x32,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
- 0x32,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
- 0x32,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
- 0x32,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
- 0x32,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
- 0x32,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
- 0x32,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
- };
复制代码 再搞一下堆栈的设置,由于使用到宏定义相关内容,所以需要添加调用宏定义的命令
这个时候再添加堆栈的定义
- ARM_LIB_STACK 0x20000000 UNINIT -STACK_SPACE { ; Stack region growing down
- *(STACK) }
- ARM_LIB_HEAP 0x20100000 EMPTY 0x200
- {
- }
复制代码 栈是向下生长,所以是负号,常用的就这些,还有sram的,看硬汉的就可以了。
|