【BES2500x系列 -- RTX5操作系统】深入探索CMSIS-RTOS RTX -- 配置篇 -- flash的使用 --(八)

💌 所属专栏:【BES2500x系列】
😀 作 者:我是夜阑的狗🐶
🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!
💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘
您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩 🤩 🤩

文章目录
- 前言
- 1 什么是Flash
- 2 获取Flash参数
- 3 修改Flash参数
- 4 注意事项
- 总结
前言
大家好,又见面了,我是夜阑的狗🐶,本文是专栏【BES2500x系列】专栏的第8篇文章;
今天开始学习BES2500x系列的一天💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。
专栏地址:【BES2500x系列】, 此专栏是我是夜阑的狗对BES2500x系列开发过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
1 什么是Flash
前面已经介绍了GPIO配置之后。接下来就来讲解一下flash的使用吧。话不多说,让我们原文再续,书接上回吧。

在嵌入式系统中,Flash存储器是一种非易失性存储器,它能够在断电后保留数据,常用于存储固件、操作系统(OS)、配置信息和其他关键数据。在实时操作系统(RTOS)如Keil RTX中,Flash参数涉及到启动加载程序、分区管理、以及系统更新等方面,对系统的正常运行至关重要。
2 获取Flash参数
获取Flash参数通常涉及到以下几个步骤:
Step 1、只能获取到结构体 nvrecord_env_t 中包含的参数,如果需要获取新的参数,需要添加到结构体中
Step 2、查阅芯片数据手册:首先,你需要查看目标MCU的数据手册,了解其Flash存储器的特性,如存储容量、页大小、擦除和编程时间、地址空间等。
Step 3、检查固件配置:如果系统已经存在固件,你可以查找相关的配置文件或源代码,这些文件可能包含了关于Flash分区、地址映射和访问方式的信息。
Step 4、使用工具链:某些开发环境,如 Keil MDK ,提供了工具来查看和分析已烧录的固件,如μVision调试器的 Memory View 或 System Viewer 。
Step 5、RTOS配置:在RTX中,Flash参数可能包含在RTOS配置文件中,如rtx_config.h 或 rtos_config.h 。这些配置文件可能定义了启动地址、堆栈位置、系统区域等。
- 代码
/*** 获取当前环境的nvrecord_env实例。* * @param nvrecord_env 指向nvrecord_env_t指针的双指针,用于接收环境实例的地址。* @return 函数成功返回0,如果参数错误或环境实例未初始化则返回-1。*/
int nv_record_env_get(struct nvrecord_env_t **nvrecord_env)
{// 检查传入的nvrecord_env指针是否为NULLif (!nvrecord_env)return -1;// 检查全局nvrecord_env_p指针是否已初始化if (!nvrecord_env_p)return -1;// 将全局nvrecord_env_p指针的值赋给传入的指针变量*nvrecord_env = nvrecord_env_p;return 0;
}
- 参数/函数讲解
| 序号 | 参数/函数 | 说明 |
|---|---|---|
| 1 | nv_record_env_get | 获取 Flash 中的环境参数 |
3 修改Flash参数
修改Flash参数通常是为了适应不同的固件布局或优化系统性能:
| 序号 | 功能 | 说明 |
|---|---|---|
| 1 | 调整分区 | 根据应用程序的需求,可能需要重新分配Flash分区,比如增加或减少存储用户数据的空间,或为新的固件更新区域分配空间。 |
| 2 | 调整启动配置 | 可能需要更改启动地址,特别是当使用不同版本的RTOS或固件时。 |
| 3 | 优化访问速度 | 根据MCU的特性和应用需求,可能需要调整Flash访问参数以提高读写速度。 |
| 4 | 修改固件更新机制 | 如果系统支持固件更新,需要确保更新过程的安全性和可靠性,可能需要调整擦除和编程的参数。 |
修改参数通常在源代码级别完成,涉及修改配置文件、初始化函数或链接脚本。确保修改后的参数符合硬件限制并经过充分测试。
- 代码
/*** 设置环境参数* * 本函数用于设置nvrecord_env结构体中的环境参数。在执行设置之前,会检查传入的环境结构体指针和* nvrecord_env_p指针是否为空,如果任一为空,则不进行设置操作并返回错误码-1。成功执行设置操作后,* 会更新运行时的用户数据。* * @param nvrecord_env 指向nvrecord_env_t结构体的指针,包含了需要设置的环境参数。* @return 函数执行成功返回0,失败返回-1。*/
int nv_record_env_set(struct nvrecord_env_t *nvrecord_env)
{// 检查传入的环境参数指针是否为空if (!nvrecord_env)return -1;// 检查全局环境参数指针是否为空if (!nvrecord_env_p)return -1;// 更新运行时的用户数据nv_record_update_runtime_userdata();return 0;
}
本函数用于设置 nvrecord_env 结构体中的环境参数。在执行设置之前,会检查传入的环境结构体指针和 nvrecord_env_p 指针是否为空,如果任一为空,则不进行设置操作并返回错误码 -1 。成功执行设置操作后,
- 参数/函数讲解
| 序号 | 参数/函数 | 说明 |
|---|---|---|
| 1 | nv_record_update_runtime_userdata | 更新运行时的用户数据 |
只能修改结构体 nvrecord_env_t 中的参数,如果需要修改其他参数,需要在结构体中添加新的参数
- 代码
/*** @struct nvrecord_env_t* 定义了一个包含多种环境配置信息的结构体。*/
struct nvrecord_env_t
{ /**< 媒体语言配置 */struct media_language_t media_language; ....../**< IBBR模式配置 */struct ibrt_mode_t ibrt_mode; /**< 工厂测试仪状态配置 */struct factory_tester_status_t factory_tester_status; ....../**< 人工智能管理器信息 */AI_MANAGER_INFO_T aiManagerInfo;
};
- 参数/函数讲解
| 序号 | 参数/函数 | 说明 |
|---|---|---|
| 1 | nvrecord_env_t | 定义了一个包含多种环境配置信息的结构体 |
4 注意事项
在处理Flash参数时,务必遵循以下几点:
- 备份原始数据:在修改参数前,确保有备份,以防意外导致数据丢失。
- 遵循硬件限制:不要超过Flash的物理限制,如最大擦除次数、最小编程单位等。
- 验证兼容性:修改后,检查新的参数是否与RTOS、编译器和调试工具兼容。
- 测试与验证:每次修改后,都需要通过完整的测试套件来验证系统行为,确保所有功能正常工作。
- 安全考虑:在固件更新过程中,确保有适当的错误恢复机制,防止系统因更新失败而无法启动。
理解和正确操作Flash参数对于RTX系统来说是至关重要的,它直接影响到系统的稳定性和可扩展性。确保在修改参数时遵循最佳实践,以确保系统的可靠运行。

总结
感谢观看,这里就是 boot loader 引导程序的讲解,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹 🌹 🌹

也欢迎你,关注我。👍 👍 👍
原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉
更多专栏订阅:
😀 【LeetCode题解(持续更新中)】
🥇 【恒玄BES】
🌼 【鸿蒙系统】
💎 【蓝牙协议栈】
🎃 【死机分析】
👑 【Python脚本笔记】
🚝 【Java Web项目构建过程】
💛 【微信小程序开发教程】
⚽ 【JavaScript随手笔记】
🤩 【大数据学习笔记(华为云)】
🦄 【程序错误解决方法(建议收藏)】
🔐 【Git 学习笔记】
🚀 【软件安装教程】
订阅更多,你们将会看到更多的优质内容!!
相关文章:
【BES2500x系列 -- RTX5操作系统】深入探索CMSIS-RTOS RTX -- 配置篇 -- flash的使用 --(八)
💌 所属专栏:【BES2500x系列】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! Ὁ…...
vue视频、图片自动轮播并伴随进度条
废话不多说直接上代 多余没用的部分自己看着删除 <template><div class"showImg"><el-carousel ref"carousel" trigger"hover" :autoplay"false" class"dimControl" :height"${(currenInnerWith*0.37…...
Android Studio环境安装指南
一、安装前注意事项: 安装android studio之前,请先检查下操作系统中的用户名(C盘->用户或user)下是否含有中文,如果含有中文,请新建一个用户(必须全部英文),JDK的安装和配置也请重新安装和配…...
CentOS 7 初始化环境配置详细
推荐使用xshell远程连接,如链接不上 请查看 CentOS 7 网络配置 修改主机名 hostname hostnamectl set-hostname xxx bash 关闭 SElinux 重启之后生效 配置yum源(阿里) 先备份CentOS-Base.repo,然后再下载 mv /etc/yum.repos…...
数据结构(双向链表)
链表的分类 链表的结构⾮常多样,以下情况组合起来就有8种(2 x 2 x 2)链表结构: 虽然有这么多的链表的结构,但是我们实际中最常⽤还是两种结构:单链表和双向带头循环链表 1.⽆头单向⾮循环链表:…...
关于Kafka的17个问题
1.Kafka 的设计时什么样的呢? Kafka 将消息以 topic 为单位进行归纳 将向 Kafka topic 发布消息的程序成为 producers. 将预订 topics 并消费消息的程序成为 consumer. Kafka 以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个…...
Redis 散列
1. 数据结构 我们自底向上来描述redis散列涉及的数据结构。 首先是负责存储键值的结构,Java 中存储的结构叫 Entry,redis里也差不多,叫dictEntry: typedef struct dictEntry {void *key; // 键,它是一个指针类型…...
ip地址错误无法上网怎么修复
在数字化日益普及的今天,网络已经成为我们生活中不可或缺的一部分。然而,当遇到IP地址错误导致无法上网的问题时,很多人可能会感到手足无措。那么,IP地址错误无法上网怎么修复?下面跟着虎观代理小二一起来了解一下吧。…...
数据库管理的艺术(MySQL):DDL、DML、DQL、DCL及TPL的实战应用(上:数据定义与控制)
文章目录 DDL数据定义语言1、创建数据库2、创建表3、修改表结构4、删除5、数据类型 列的约束主键约束(primary key)唯一约束(unique key)非空约束检查约束(check)外键约束(foreign keyÿ…...
成为CMake砖家(5): VSCode CMake Tools 插件基本使用
大家好,我是白鱼。 之前提到过,白鱼的主力 编辑器/IDE 是 VSCode, 也提到过使用 CMake Language Support 搭配 dotnet 执行 CMakeLists.txt 语法高亮。 对于阅读 CMakeLists.txt 脚本, 这足够了。 而在 C/C 开发过程中ÿ…...
【简洁明了】调节大模型的prompt的方法【带案例】
简明调节大模型的prompt的方法【简洁明了带案例】 1. 明确任务目标2. 提供上下文3. 指定格式4. 限制输出长度5. 使用示例6. 逐步引导7. 提供反面例子8. 使用CoT思维链9. 反复试验和调整方法九解释:乔哈里窗检视 最后 因为网上给出的调节prompt都 过于详细ÿ…...
【操作系统】文件管理——文件存储空间管理(个人笔记)
学习日期:2024.7.17 内容摘要:文件存储空间管理、文件的基本操作 在上一章中,我们学习了文件物理结构的管理,重点学习了操作系统是如何实现逻辑结构到物理结构的映射,这显然是针对已经存储了文件的磁盘块的࿰…...
微软GraphRAG +本地模型+Gradio 简单测试笔记
安装 pip install graphragmkdir -p ./ragtest/input#将文档拷贝至 ./ragtest/input/ 下python -m graphrag.index --init --root ./ragtest修改settings.yaml encoding_model: cl100k_base skip_workflows: [] llm:api_key: ${GRAPHRAG_API_KEY}type: openai_chat # or azu…...
数学建模-Topsis(优劣解距离法)
介绍 TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution) 可翻译为逼近理想解排序法,国内常简称为优劣解距离法 TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息, 其结果能精…...
嵌入式linux相机 转换模块
convert_manager.c #include <config.h> #include <convert_manager.h> #include <string.h>static PT_VideoConvert g_ptVideoConvertHead NULL;/*********************************************************************** 函数名称: Register…...
【自学安全防御】二、防火墙NAT智能选路综合实验
任务要求: (衔接上一个实验所以从第七点开始,但与上一个实验关系不大) 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 8,分公司设备可以通过总…...
【Android】传给后端的Url地址被转码问题处理
一、问题 为什么使用Gson().toJson的时候,字符串中的会被转成\u003d 在 Gson 中,默认情况下会对某些特殊字符进行 HTML 转义,以确保生成的 JSON 字符串在 HTML 中是安全的。因此,字符 会被转义为 \u003d。你可以通过禁用 HTML 转…...
1.厦门面试
1.Vue的生命周期阶段 vue生命周期分为四个阶段 第一阶段(创建阶段):beforeCreate,created 第二阶段(挂载阶段):beforeMount(render),mounted 第三阶段&#…...
设计模式使用场景实现示例及优缺点(行为型模式——状态模式)
在一个遥远的国度中,有一个被称为“变幻之城”的神奇城堡。这座城堡有一种特殊的魔法,能够随着王国的需求改变自己的形态和功能。这种神奇的变化是由一个古老的机制控制的,那就是传说中的“状态宝石”。 在变幻之城中,有四颗宝石&…...
抖音短视频seo矩阵系统源码(搭建技术开发分享)
#抖音矩阵系统源码开发 #短视频矩阵系统源码开发 #短视频seo源码开发 一、 抖音短视频seo矩阵系统源码开发,需要掌握以下技术: 网络编程:能够使用Python、Java或其他编程语言进行网络编程,比如使用爬虫技术从抖音平台获取数据。…...
SwiftHub:终极GitHub iOS客户端开发指南 - RxSwift与MVVM-C架构实践
SwiftHub:终极GitHub iOS客户端开发指南 - RxSwift与MVVM-C架构实践 【免费下载链接】SwiftHub GitHub iOS client in RxSwift and MVVM-C clean architecture 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftHub SwiftHub是一款功能强大的GitHub iOS客户…...
自动驾驶仿真测试避坑手册:从Pattern参数选择到Comfort问题定位
自动驾驶仿真测试避坑手册:从Pattern参数选择到Comfort问题定位 在自动驾驶系统的开发流程中,仿真测试环节往往决定了算法迭代的效率和质量。不同于传统软件测试,自动驾驶仿真需要构建高度复杂的虚拟环境,模拟真实世界中的各种边缘…...
5步掌握Loop:让Mac窗口管理效率提升10倍的免费开源方案
5步掌握Loop:让Mac窗口管理效率提升10倍的免费开源方案 【免费下载链接】Loop MacOS窗口管理 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 在数字工作环境中,窗口管理已成为影响效率的隐形瓶颈。Mac用户每天平均需要执行200次窗口操作…...
猫抓插件:5分钟掌握浏览器视频下载终极指南
猫抓插件:5分钟掌握浏览器视频下载终极指南 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过想要保存网页视频却找不到下载按钮的烦恼?或者想收藏在线音乐却只…...
缺陷检测新利器:f-AnoGAN原理剖析与工业视觉实战
1. 工业视觉缺陷检测的痛点与挑战 在工业生产线上,产品表面缺陷检测一直是个让人头疼的问题。传统的人工检测方式效率低下,一个工人盯着传送带看8小时,漏检率能达到15%以上。我见过某家电企业质检车间,工人们需要检查微波炉门板上…...
Vivado IP封装实战:从源码到GUI配置的完整避坑指南(含EDF/DCP对比)
Vivado IP封装实战:从源码到GUI配置的完整避坑指南(含EDF/DCP对比) 在FPGA开发中,团队协作和代码共享是常见需求,但如何平衡代码保护与功能灵活性一直是开发者面临的难题。Vivado提供了多种模块封装方案,每…...
5步定制UEFI启动界面:技术爱好者的HackBGRT实战指南
5步定制UEFI启动界面:技术爱好者的HackBGRT实战指南 【免费下载链接】HackBGRT Windows boot logo changer for UEFI systems 项目地址: https://gitcode.com/gh_mirrors/ha/HackBGRT 一、问题发现:启动界面定制的3大痛点 在计算机使用体验中&am…...
Ostrakon-VL-8B零基础上手:无需Python基础,通过Chainlit界面完成首次图文问答
Ostrakon-VL-8B零基础上手:无需Python基础,通过Chainlit界面完成首次图文问答 你是不是对AI图文对话很感兴趣,但一看到Python代码、命令行就头疼?是不是觉得部署一个多模态大模型需要专业的技术背景?今天我要告诉你一…...
internlm2-chat-1.8b长文本处理实战:法律合同分析+关键条款提取教程
internlm2-chat-1.8b长文本处理实战:法律合同分析关键条款提取教程 你是不是也遇到过这样的烦恼?拿到一份几十页的法律合同,密密麻麻的文字看得人头晕眼花,想快速找到里面的关键条款,比如付款方式、违约责任、保密协议…...
Leaflet坐标系实战:从设置到动态切换的完整指南
1. Leaflet坐标系基础概念解析 第一次接触Leaflet坐标系时,我也被各种专业术语搞得晕头转向。简单来说,坐标系就是用来确定地图上每个点位置的规则系统。就像我们在地球上使用经纬度定位一样,数字地图也需要明确的坐标参考。 Leaflet默认支持…...
