芯旺微flash的指定位置存数据定义方式,以及flash地址的相对地址第0x1C-0x1F位说明
敲重点前提:在我们定义flash起始地址后,假设程序区起始地址为A,那么在A+0x1C-0x1F的这四个字节是通过链接器创建的特征值,代码在此处编写0。所以在中断向量表里面的这几个数也是放置的0。
客户常见需求 :
在我们做bootloader的时候,经常有工程师需要在APP区的前面放置一些校验或者程序版本之类的固定数据。如果此时数据过长达到了特征值位置的话会导致数据错误的现象。
下面就来提供三种方式来解决此问题:
1、缩减自身需要的数据字节长度,当未达到此相对位置的时候就不会出现数据异常的可能 ; (此方式根据需求可缩减的话)
2、在程序区的后面找一片区域来进行储存,这样就不会遇到遇到前面的额特征值啦;
3、重点说一下第三种,也是为了满足客户需求的前提下又不破坏数据也不会破坏程序
(1)、将程序区再划分出一段单独拎出来做为数据存储区,实现方式在ld文件中进行如下操作:
2、在主程序进行指定位置定义,主要指定端 定义方式
3、获取的编辑效果,可将HEX用PRO加载查看,结果如下图
好啦,其实本章不单单是讲解特征值的位置,也是将指定区域的如何单独开辟做为flash_data的方式也讲解了。RAM的定义方式和flash其实本质上一样的只是基地址不同,其他基本没有区别。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Fanshijun1/article/details/129143133
|