【沁恒蓝牙mesh】CH58x flash分区与数据存储管理

本文主要介绍了 沁恒蓝牙芯片 CH58x 的flash 分区与数据存储管理

📋 个人简介

1. CH583的flash分区

参考: 蓝牙mesh组网实践(dataflash的占用与管理)

512Kb 的 flashRom 0x0000_0000 - 0x0007_FFFF = 512Kb

地址范围用途描述
0x00000000-0x0006FFFFCH583/CH582:用户应用程序存储区 CodeFlash448KB
0x00000000-0x0002FFFFCH581:用户应用程序存储区 CodeFlash192KB
0x00070000-0x00077FFF用户非易失数据存储区 DataFlash32KB
0x00078000-0x0007DFFF系统引导程序存储区 BootLoader24KB
0x0007E000-0x0007FFFF系统非易失配置信息存储区 InfoFlash8KB

通过上位机读取的是 DataFlash 中的数据,上位机显示的是 0x0000 - 0x8000 ,上位机做了0x7000h的偏移,实质的flash地址为 0x00070000-0x00077FFF 范围减去0x7000h,地址范围为: 0x0000_0000 - 0x00007FFF
在这里插入图片描述
在这里插入图片描述

2.code分区介绍

从上一小节介绍,CH58x的 codeflash 分区为 0x00000000-0x0006FFFF,统共 0x70000 = 448 kb 的空间

整个 code 区分为5块:

  • 前4K : 4k (0-4)
  • imageA(APP): 152K (4-156)
  • imageA(OTA): 152K (156-308)
  • imageA(IAP): 4K (308-312)
  • LIB : 136K (312-448)

存放 OTA_DATAFLASH_ADD的地址: 0x00077000 - 0x070000 =0x7000

2.1【蓝牙配网数据存储】

data_flash : 0x00070000-0x00077FFF

若使用到了BLE且配对绑定保存置为true,那么配对绑定的信息保存在dataflash尾部,

BLE_SNV_ADDR - SNV信息保存地址,使用data flash最后( 默认:0x77E00 )

#define BLE_SNV_ADDR 0x77E00-0x70000 = 0x7e00 // 这是一个偏移地址

实质的flash地址为 0x00070000-0x00077FFF 范围减去0x7000h,偏移地址为 0x0000 - 0x8000

所以存储区间为偏移后的地址:0x7e00 - 0x8000 (512字节)

2.2 【蓝牙mesh 配网信息数据存储】

默认mesh协议栈占用的dataflash首地址从0开始,占用3个扇区,每个扇区大小4K,配网信息只占用最前面的部分,即默认保存在dataflash首地址起往后的200个字节内。

const struct device app_dev = {
    .api = {
        .read = read_flash,
        .write = write_flash,
        .erase = erase_flash,
        .write_protection = flash_write_protection,
    },
    .info = {
        .nvs_sector_cnt = CONFIG_MESH_SECTOR_COUNT_DEF,   /*占用3个扇区*/
        .nvs_write_size = sizeof(int),					  /*4字节为单位*/
        .nvs_sector_size = CONFIG_MESH_SECTOR_SIZE_DEF,  /*每个扇区4096*/
        .nvs_store_baddr = CONFIG_MESH_NVS_ADDR_DEF,		/*起始地址为0*/
    },
};

2.3 【数据存储示意图】

其中在,ota.h文件中可得:

ota 数据存放的起始位置为 0x7000
#define OTA_DATAFLASH_ADD 0x00077000 - FLASH_ROM_MAX_SIZE

存放的信息为结构体,占用四个字节

/* 存放在DataFlash里的OTA信息 */
typedef struct
{
    unsigned char ImageFlag; //记录的当前的image标志
    unsigned char Revd[3];
} OTADataFlashInfo_t;

因此 OTA 的区域为 0x7000 ~ 0x7004

在这里插入图片描述

/* 
	DATA_FLASH:         0x70000 ~ 0x77fff  
   offset_memory:      0x0000  ~ 0x7fff     // [偏移地址]
   ble_mesh use:       0x0000 ~ 0x2fff      // 蓝牙mesh信息
   led_control_use:    0x3000 ~ 0x6fff      // 自定义
   ota_data ues:       0x7000 ~ 0x7004      // ota信息
   ble pairing :       0x7e00 ~ 0x7fff      // 蓝牙配对信息
*/
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积跬步、至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值