想请教一下各位: 在kiel里面用类似section的定义(配置keil的sct文件)来定义一个page(比如flash的最末尾的一个page),然后用attribute关键字+section的方式将变量定义并存储在flash的固定section,比如软件版本号: 如下是sct文件(也取消勾选了keil里面的Use Memory Layout from Target Dialog): ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x08000000 0x00014000 { ; load region size_region ER_IROM1 0x08000000 0x00014000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00020000 { ; RW data .ANY (+RW +ZI) } RW_IROM2 0x08017000 0x0000800{ .ANY (cpdata) } } 然后在一个C文件里面定义了软件版本号,想存储在指定地址的section(0x08017000起始的2k=0x800区域内),如下是一个C文件中的指定变量到指定section的语句: #define CPDATA __attribute__((section("cpdata"))) CPDATA uint8_t softversion[8] = "20210108"; 编译链接后的map文件并未能找到软件版本号变量的地址分配信息(说明:芯片flash是512K的STM32G4开发板); 但是查看map文件找不到softversion变量的地址分配信息,下载到单片机看0x08017000也没有对应的数据,想请教下大家有没有类似的经验,谢谢。 |
https://community.st.com/s/quest ... Email=1&s1ext=0