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