【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或其他编程语言进行网络编程,比如使用爬虫技术从抖音平台获取数据。…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
