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

news2024/11/20 3:22:34

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

📋 个人简介

  • 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎
  • 📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:沁恒蓝牙mesh二次开发
    🍁
  • 💬格言:写文档啊不是写文章,重要的还是直白!🔥

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

  • 1. CH583的flash分区
  • 2.code分区介绍
    • 2.1【蓝牙配网数据存储】
    • 2.2 【蓝牙mesh 配网信息数据存储】
    • 2.3 【数据存储示意图】

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 的地址: 0x00077000 - 0x070000 =0x7000

2.1【蓝牙配网数据存储】

codeflash : 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 【数据存储示意图】

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/830582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DPG算法

1 一言以蔽之 (1) DPG是属于确定性策略梯度算法(2)用于解决连续动作空间问题 2 优点和缺点 2.1 优点(1)从理论上可以证明,deterministic policy的梯度就是Q函数梯度的期望,这使得…

SAP数据库表维护视图生成器的使用

在SAP中,经常需要自定义数据库表。而且可能需要人工维护数据库表中的数据,可以通过SM30进行维护数据;但是SM30事务的权限太大,不适宜将SM30直接分配;因此,可以通过给维护表分配事务代码,来达到控…

云曦暑期学习第三周——ctfshow--php特性(89-104)

目录 web89 preg_match函数 、数组 web90 intval()函数、强比较 web91 正则修饰符 web92 intval()函数、弱比较 web93 八进制、小数点 web94 strpos() 函数、小数点 web95 小数点 web96 highlight_file() 下的目录路径 web97 数组 web98 三目运算符 web9…

Windows搭建Snort环境及使用方式

目录 0x01 前置环境0x02修改配置文件0x03 自测0x04 使用0x05 感言 0x01 前置环境 环境描述windows10snort2.9.2https://www.snort.org/downloads 先把上面环境下载好! 需要注意的是安装npcap这个软件 0x02修改配置文件 软件安装目录:C:/Snort/ 配置文…

有哪些开源和非开源的项目管理工具?

开源和非开源项目管理工具各有其特点和优势。下面是一些常见的开源和非开源项目管理工具以及它们的简要介绍。 开源项目管理工具: OpenProject:OpenProject 是一个功能强大、易于使用的开源项目管理工具。它提供了项目计划、任务管理、团队协作、文档管…

Python开发环境Spyder介绍

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 Spyder简介 Spyder (前身是 Pydee) 是一个强大的交互式 Python 语言开发环境, 提供高级的代码编辑、交互测试、调试等特性,支持包括 Windows、Linux 和 OS X 系统。 👇 &#x1f44…

【多模态】BLIP——统一视觉语言理解和生成的引导语言图像预训练模型

多模态指的是多种模态的信息,包括:文本、图像、视频、音频等。而多模态研究的就是这些不同类型的数据的融合的问题。目前大多数工作中,只处理图像和文本形式的数据,即把视频数据转为图像,把音频数据转为文本格式。 目录…

PHP 前后端分离,运行配置

H5 WEB目录:安装 yarn install、npm install (依赖包) 在电脑:安装nodejs Composer下载 :https://getcomposer.org/

彭迦信和梁柱搭班两年,腾讯音乐总市值相对减少约200亿美元

8月1日、8月2日,腾讯音乐-SW(HK:01698,下称“腾讯音乐”)在港交所的股价连续两日下跌,跌幅分别为2.21%和3.02%。按2023年8月2日的收盘价计算,腾讯音乐的港股市值约为454.17亿港元,总市值约为882…

算法:DFS【深度优先搜索】

概念: 深度优先搜索(Depth First Search)简称为DFS。一种用于遍历或者搜索树或图的算法。 沿着树的深度遍历树的所有节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或在搜寻时结点不满足条件,则搜索将回溯…

《HeadFirst设计模式(第二版)》第三章代码——装饰者模式

代码文件结构: 星巴兹案例: CondimentDecorator package Chapter3_DecorativeObjects.Decorators;import Chapter3_DecorativeObjects.Beverage;/*** Author 竹心* Date 2023/8/3**/public abstract class CondimentDecorator extends Beverage {Bever…

opencv-34 图像平滑处理-双边滤波cv2.bilateralFilter()

双边滤波(BilateralFiltering)是一种图像处理滤波技术,用于平滑图像并同时保留边缘信息。与其他传统的线性滤波方法不同,双边滤波在考虑像素之间的空间距离之外,还考虑了像素之间的灰度值相似性。这使得双边滤波能够有…

Scratch 教程 -- 逐字化输出

首先我们来探讨一下对于一个逐字化模块(自定义积木),有哪些需要设置的参数(请注意,在这里我会先提出一种常规且简便的写法,再进一步讲述其它的优化版本) 1.内容:对于一个文本,其内容是一定需要的(不然你还用啥逐字化啊…

新概念英语的网盘资源

新版新概念英语1-4册全部视频和课本_免费高速下载|百度网盘-分享无限制百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/18wyeA#l…

C++STL——deque容器详解

纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.deque容器的基本概念二.deque容器常用操作①deque构造函数②deque元素操作③deque赋值操作④deque交换操作⑤deque大小操作⑥deque插入和删除…

使用IPSEC VPN 在有防火墙的场景和有NAT转换的场景下实现隧道通信实验

目录 一、在有防火墙的场景 1、为所有设备配置对应ip地址: 2、进入两个防火墙实现公网互通 3、测试公网是否互通 4、进入SW1配置IPSEC VPN 5、进入SW2配置IPSEC VPN 6、配置策略方向ESP的流量 7、尝试使用PC1访问PC2 二、在有NAT地址转换的场景 1、为新增加…

C语言中的数据类型有哪些?

有符号数signed可以存储负数,无符号数呢只能存储非负数 我们要考虑两个问题。 第一个问题是要存储的这个整数,它是一个多大的范围,比如说要存储一个五。还有比如说我可能要算个数65535,或者说我要算出一个数65536,可能…

Cilium系列-11-启用带宽管理器

系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于: 启用本地路由(Native Routing)完全替换 KubeProx…

P-DQN:离散-连续混合动作空间的独特算法

一、说明 本文首先说明DQN是个什么概念, DQN(Deep Q-Network)是一种基于深度学习的强化学习算法,在游戏AI中表现优异,如AlphaGo。然后说明人物动作预测的算法实现方法。 二、关于DQN的概念和实验 DQN(Deep …

混合精度训练中的内存占用

结论: 在模型训练中,fp16会比fp32快很多,因此,一般会使用fp16的参数进行模型的前向和后向计算。然而,在进行梯度累加的时候,fp16往往会精度不够,无法满足计算需求。因此,会在反向计…