沁恒risc-v蓝牙芯片的flash使用注意点

目录

Ⅰ.调用接口方面

  ①codeflash与dataflash分为两组接口,详见EVT包中的FLASH例程。

  codeflash基地址为0。读写codeflash的接口带有内核加解密。擦除flash不涉及加解密;擦除dataflash后读出4字节循环“乱码”是正常的。codeflash最小擦除单位:4096字节。

  dataflash基地址为0x70000。读写dataflash的接口自带0x70000的基地址,不带加解密,操作dataflash时只需要关心偏移地址。用户可以进MCU的原厂boot,走ISP工具直接读出dataflash。dataflash最小擦除单位:256字节。

  ②不论是codeflash还是dataflash,写之前一定要先擦除。dataflash的接口名中带有EEPROM字样,但本质上它还是flash。

  ③接口中的读/写buff缓存在ram中的地址,一定要4字节对齐,否则可能导致hardfault复位。四字节对齐问题的排查可见博客:CH57x/CH58x/CH32V wch risc-v 芯片hardfault问题追踪&程序卡死追踪 - iot-fan - 博客园 (cnblogs.com)

  ④擦除flash的起始地址、擦除长度都建议对齐最小擦除单位。由于地址或是长度不对齐,擦除n个单位长度时,会将涉及到的n+1甚至n+2个最小单位全部擦除。

 

Ⅱ.手册信息,介绍了擦写寿命、单词扇区擦除操作时间。RISC-V内核的CH5Xx蓝牙MCU此处参数相差不大。

 

Ⅲ.BLE例程中使用到的dataflash区域。注意避开或是在宏定义中重新规划

Dataflash
偏移地址

占用长度
(截止地址)

相关宏定义

用途

0

12K字节(0x2FFF)

CONFIG_MESH_NVS_ADDR_DEF等

Mesh网络信息

0x7000

4字节(0x7003)

OTA_DATAFLASH_ADD

OTA升级的标志

0x7E00

512字节(0x7FFF)

BLE_SNV_ADDR等

BLE配对绑定信息

 

 Ⅳ.操作flash时间开销实测(以CH592为例)

codeflash只支持4096字节“块擦”,不支持“页擦”。dataflash支持256字节“页擦”,也支持4096字节“块擦”。本质上是同一块flash,

字节数

擦除时长(ms)

写入时长(ms)

读出时长(us)

1

17.14

2.2

7

100

17.15

2.2

48

256(1页)

17.15

1.6

110

300

34.28

3.7

127

500

34.27

3.7

207

512(2页)

34.28

3.2

212

513

51.45

5.3

212

4096(1块)

17.13

25.5

1.65ms

4096+256(1块+1页)

34.32

27.1

1.75ms

4096+300

51.44

29.2

1.76ms

posted @ 2024-05-31 09:52  JayWell  阅读(69)  评论(0编辑  收藏  举报