Topic

FAQ
Login Register
如何确认flash读写是否安全呢?
Sep 21, 2022 18:57

/

A

/A

三个问题:

1. 代码执行的flash和例程中的可写入读取的flash是一个flash么?为什么地址出入这么大?如果从map地址来看的话,似乎map的flash的地址区间已经超过了flash本身的最大地址范围


2. 另外,怎么找到哪些flash是可安全读写,用于用户配置的flash地址块呢?


3.我需要开辟200 byte用于用户配置的存储,在运行过程中偶尔会更新flash内容,更新之前必须要擦除么?

4 replies
Soyo Sep 22, 2022 10:20
0
/A

你好

1、是否说的sram的地址,有图片和具体工程吗,

2、Flash所有地址都能擦写,所以程序会在运行中对一些地址加入写保护,具体协议栈有分配给用户配置使用的区域

3、写之前会进行擦除,按照块擦除。

reborn [Author] Sep 22, 2022 14:21
0
/A

1. 是的,是sram地址:0x20000000~0x21000000【数据手册上给出的】,这个地址范围似乎超过了flash本身大小?

2. “具体协议栈有分配给用户配置使用的区域“ 这块有具体的说明么?还是不太清楚用户使用哪块flash是属于安全区域。目前只看到了例程使用了0x00d000

3. 写之前整个4k的块都必须要擦除么?比如我要写 0x00d000 ~ 0x00d022  的内容,那么整个 0x00d000~0x00dfff都需要擦除么?

Soyo Sep 22, 2022 14:44
0
/A

1 你参考的是哪个手册,请前往wiki下载你使用芯片的数据手册(http://wiki.telink-semi.cn/wiki/chip-series/TLSR825x-Series/

sram地址和ram大小相关的,地址起始偏移地址为0x840000,64kram,最大到0x850000.

2同样前往wiki下载对应协议栈,以及handbook,以BLE SDK为例,手册中注明了flash哪部分为用户使用的区域。

3,是的,写flash时,需要对自己数据做些保护。

reborn [Author] Sep 22, 2022 15:00
0
/A


我参考的是9218,我用的是9218芯片,不好意思哈,说漏了。


另外比较疑惑的是,除了烧写程序占用的flash,运行过程中会有分配flash给程序运行使用么?


关于第三点,我刚刚采用9218测试,发现可以不用擦除也能写入,这样做的风险是什么呢?