阿范839 发表于 2023-2-22 18:02

芯旺微32位机flash的指定位置存数据定义方式

#申请原创#
敲重点前提:在我们定义flash起始地址后,假设程序区起始地址为A,那么在A+0x1C-0x1F的这四个字节是通过链接器创建的特征值,代码在此处编写0。所以在中断向量表里面的这几个数也是放置的0。

客户常见需求 :
在我们做bootloader的时候,经常有工程师需要在APP区的前面放置一些校验或者程序版本之类的固定数据。如果此时数据过长达到了特征值位置的话会导致数据错误的现象。

### 下面就来提供三种方式来解决此问题:
1、缩减自身需要的数据字节长度,当未达到此相对位置的时候就不会出现数据异常的可能 ; (此方式根据需求可缩减的话)

2、在程序区的后面找一片区域来进行储存,这样就不会遇到遇到前面的额特征值啦;

3、重点说一下第三种,也是为了满足客户需求的前提下又不破坏数据也不会破坏程序
(1)、将程序区再划分出一段单独拎出来做为数据存储区,实现方式在ld文件中进行如下操作:

2、在主程序进行指定位置定义,主要指定端 定义方式

3、获取的编辑效果,可将HEX用PRO加载查看,结果如下图
![在这里插入图片描述](https://img-blog.csdnimg.cn/d5b4ff2cb0c5447d9212179e58c33ee3.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/e99742d80f434e4c96cb7c269209d5df.png)

好啦,其实本章不单单是讲解特征值的位置,也是将指定区域的如何单独开辟做为flash_data的方式也讲解了。RAM的定义方式和flash其实本质上一样的只是基地址不同,其他基本没有区别。

tpgf 发表于 2023-3-6 16:20

我们都可以通过哪些方式来实现指定位置存数据呢

木木guainv 发表于 2023-3-6 16:58

我们如何避免这个指定的地址是一个错误的地址呢

磨砂 发表于 2023-3-6 17:07

对于起始地址的选择 我们有没有什么需要注意的地方呢

晓伍 发表于 2023-3-6 17:19

当我们在指定地址存储数据的时候,如何避免这个数据被误操作或者误擦除呢

八层楼 发表于 2023-3-7 08:09

这个界面中的中断向量表 我们可以在哪里进行更改啊

观海 发表于 2023-3-7 08:58

看楼主的图片 我想咨询一下 我怎么知道我需要看哪些地址的数据呢

jxdear 发表于 2023-3-14 16:39

学习学习

小小蚂蚁举千斤 发表于 2023-3-15 16:30

怎么知道哪些是我需要的地址?

leileigood1230 发表于 2023-5-17 15:46

有没有用过#pragma section这种方式实现指定位置存储的? 不同的编译器都有不同的指令,但是我没找到这个编译器指令是什么,尝试了很多都不行,楼主用过吗?

AdaMaYun 发表于 2023-5-18 14:10

怎么做到指定存储
页: [1]
查看完整版本: 芯旺微32位机flash的指定位置存数据定义方式