链接文件/分散加载文件的作用

📅 2026/7/26 17:41:35
链接文件/分散加载文件的作用
1.指定RO RW ZI CODE的存储位置.ANY(RO) .ANY(RW ZI)2.指定某个段的存储位置如指定RESET段的存储位置*.o (RESET, First)这里创建了一个RESET段并指定了它的存储位置那个First是指首先存储即存储在开头位置。3.指定某个文件的RO RW ZI的存储位置如gd32f30x.o (HEAP) gd32f30x.o (RW ZI) gd32f30x.o (RO)上面三行代码分别指定了gd32f30x.o文件的堆、RW、ZI、RO的存储位置4.生成/创建一个段.ANY (seg)以上代码创建了一个名为seg的段然后程序中就可以配合__attribute__((section(seg)))将某一个变量或函数指定到该段了如#define MY_FLASH __attribute__((section(seg))) MY_FLASH u16 test_function(void) { return 0; }5.指定某一个内存区域复位后不初始化(针对编译器AC6)RW_IRAM12 0x200000B0 UNINIT 0x00000008 { .ANY (.bss.NO_INIT) } uint16_t reset_flg __attribute__((section(.bss.NO_INIT)));上诉代码中UNINIT就是表示该段不需要初始化的意思在这里面存的数据(如示例的reset_flg)就不用担心程序异常复位后数据丢失的问题了只要不是上电复位里面存的数据都会在上电复位是因为断电了RAM断电的话数据是必然丢失的6.新增一个flash或者RAM段如外挂FLASH或RAM的情况并指定将某些数据存在该段里面RW_ERAM1 0xD0000000 0x00800000 ; 外部SDRAM { *.o(HEAP) ;选择堆区 .ANY (EXRAM) ;选择EXRAM节区 }7.目前知道的就这么多后续发现更多作用再增加注1.上诉第2点说了First是指将该段存放在BIN文件的开头那么相对应的Last就是将该段存在BIN文件的末尾这个可用于在程序中增加校验信息之类。