APM32F072将变量存储到片内flash的指定位置 最近在使用APM32F072进行项目开发的过程中,需要使用到内部flash存储运行参数,这一大堆的系统运行的参数表需要存储到一个指定的位置便于读写。那我们需要怎么做才能把这些变量定义到这个指定的片内flash位置呢? static const uint8_t dataflash[1024]__attribute__((at(0x0801F800))) ={……,……,……}; 通過这种方式定义变量就可以把dataflash数组存储到0x0801F800地址上。后续只需要通过SDK中写FLASH的操作对0x0801F800里面的内容进行修改,就可以改变运行参数了。 因为我划出去存储运行参数的FLASH区是芯片的最后一个扇区,如果单纯这样定义的话又会出现编译出来的程序就会包含整个芯片的FLASH区,HEX文件较大,用keil下载程序时间较久。 在这里我们可以通过修改AMP32的连接文件来优化。 通過把USE memory layout from target dialog的√去掉,點擊Edit我们就可以对.\Objects\test_module.sct链接文件进行修改啦。 ROM1为0x08001000~0x0801F7FFSIZE:0x0001E800只要把0x0801F800不包含在内就可以了,那样编译出来的程序就会小好多了。
|