当前位置: 首页 > news >正文

【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 ViewSystem Viewer
  Step 5、RTOS配置:在RTX中,Flash参数可能包含在RTOS配置文件中,如rtx_config.hrtos_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;
}
  • 参数/函数讲解
序号参数/函数说明
1nv_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 。成功执行设置操作后,

  • 参数/函数讲解
序号参数/函数说明
1nv_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; 
};
  • 参数/函数讲解
序号参数/函数说明
1nvrecord_env_t定义了一个包含多种环境配置信息的结构体

4 注意事项

  在处理Flash参数时,务必遵循以下几点:

  • 备份原始数据:在修改参数前,确保有备份,以防意外导致数据丢失。
  • 遵循硬件限制:不要超过Flash的物理限制,如最大擦除次数、最小编程单位等。
  • 验证兼容性:修改后,检查新的参数是否与RTOS、编译器和调试工具兼容。
  • 测试与验证:每次修改后,都需要通过完整的测试套件来验证系统行为,确保所有功能正常工作。
  • 安全考虑:在固件更新过程中,确保有适当的错误恢复机制,防止系统因更新失败而无法启动。

  理解和正确操作Flash参数对于RTX系统来说是至关重要的,它直接影响到系统的稳定性和可扩展性。确保在修改参数时遵循最佳实践,以确保系统的可靠运行。

<<【系列文章索引】>>

请添加图片描述


总结

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

在这里插入图片描述

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉

更多专栏订阅:

  • 😀 【LeetCode题解(持续更新中)】

  • 🥇 【恒玄BES】

  • 🌼 【鸿蒙系统】

  • 💎 【蓝牙协议栈】

  • 🎃 【死机分析】

  • 👑 【Python脚本笔记】

  • 🚝 【Java Web项目构建过程】

  • 💛 【微信小程序开发教程】

  • 【JavaScript随手笔记】

  • 🤩 【大数据学习笔记(华为云)】

  • 🦄 【程序错误解决方法(建议收藏)】

  • 🔐 【Git 学习笔记】

  • 🚀 【软件安装教程】



订阅更多,你们将会看到更多的优质内容!!

相关文章:

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

&#x1f48c; 所属专栏&#xff1a;【BES2500x系列】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f49…...

vue视频、图片自动轮播并伴随进度条

废话不多说直接上代 多余没用的部分自己看着删除 <template><div class"showImg"><el-carousel ref"carousel" trigger"hover" :autoplay"false" class"dimControl" :height"${(currenInnerWith*0.37…...

Android Studio环境安装指南

一、安装前注意事项&#xff1a; 安装android studio之前&#xff0c;请先检查下操作系统中的用户名(C盘->用户或user)下是否含有中文&#xff0c;如果含有中文&#xff0c;请新建一个用户&#xff08;必须全部英文&#xff09;&#xff0c;JDK的安装和配置也请重新安装和配…...

CentOS 7 初始化环境配置详细

推荐使用xshell远程连接&#xff0c;如链接不上 请查看 CentOS 7 网络配置 修改主机名 hostname hostnamectl set-hostname xxx bash 关闭 SElinux 重启之后生效 配置yum源&#xff08;阿里&#xff09; 先备份CentOS-Base.repo&#xff0c;然后再下载 mv /etc/yum.repos…...

数据结构(双向链表)

链表的分类 链表的结构⾮常多样&#xff0c;以下情况组合起来就有8种&#xff08;2 x 2 x 2&#xff09;链表结构&#xff1a; 虽然有这么多的链表的结构&#xff0c;但是我们实际中最常⽤还是两种结构&#xff1a;单链表和双向带头循环链表 1.⽆头单向⾮循环链表&#xff1a…...

关于Kafka的17个问题

1.Kafka 的设计时什么样的呢&#xff1f; Kafka 将消息以 topic 为单位进行归纳 将向 Kafka topic 发布消息的程序成为 producers. 将预订 topics 并消费消息的程序成为 consumer. Kafka 以集群的方式运行&#xff0c;可以由一个或多个服务组成&#xff0c;每个服务叫做一个…...

Redis 散列

1. 数据结构 我们自底向上来描述redis散列涉及的数据结构。 首先是负责存储键值的结构&#xff0c;Java 中存储的结构叫 Entry&#xff0c;redis里也差不多&#xff0c;叫dictEntry: typedef struct dictEntry {void *key; // 键&#xff0c;它是一个指针类型…...

ip地址错误无法上网怎么修复

在数字化日益普及的今天&#xff0c;网络已经成为我们生活中不可或缺的一部分。然而&#xff0c;当遇到IP地址错误导致无法上网的问题时&#xff0c;很多人可能会感到手足无措。那么&#xff0c;IP地址错误无法上网怎么修复&#xff1f;下面跟着虎观代理小二一起来了解一下吧。…...

数据库管理的艺术(MySQL):DDL、DML、DQL、DCL及TPL的实战应用(上:数据定义与控制)

文章目录 DDL数据定义语言1、创建数据库2、创建表3、修改表结构4、删除5、数据类型 列的约束主键约束&#xff08;primary key&#xff09;唯一约束&#xff08;unique key&#xff09;非空约束检查约束&#xff08;check&#xff09;外键约束&#xff08;foreign key&#xff…...

成为CMake砖家(5): VSCode CMake Tools 插件基本使用

大家好&#xff0c;我是白鱼。 之前提到过&#xff0c;白鱼的主力 编辑器/IDE 是 VSCode&#xff0c; 也提到过使用 CMake Language Support 搭配 dotnet 执行 CMakeLists.txt 语法高亮。 对于阅读 CMakeLists.txt 脚本&#xff0c; 这足够了。 而在 C/C 开发过程中&#xff…...

【简洁明了】调节大模型的prompt的方法【带案例】

简明调节大模型的prompt的方法【简洁明了带案例】 1. 明确任务目标2. 提供上下文3. 指定格式4. 限制输出长度5. 使用示例6. 逐步引导7. 提供反面例子8. 使用CoT思维链9. 反复试验和调整方法九解释&#xff1a;乔哈里窗检视 最后 因为网上给出的调节prompt都 过于详细&#xff…...

【操作系统】文件管理——文件存储空间管理(个人笔记)

学习日期&#xff1a;2024.7.17 内容摘要&#xff1a;文件存储空间管理、文件的基本操作 在上一章中&#xff0c;我们学习了文件物理结构的管理&#xff0c;重点学习了操作系统是如何实现逻辑结构到物理结构的映射&#xff0c;这显然是针对已经存储了文件的磁盘块的&#xff0…...

微软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法&#xff08;Technique for Order Preference by Similarity to Ideal Solution&#xff09; 可翻译为逼近理想解排序法&#xff0c;国内常简称为优劣解距离法 TOPSIS 法是一种常用的综合评价方法&#xff0c;其能充分利用原始数据的信息&#xff0c; 其结果能精…...

嵌入式linux相机 转换模块

convert_manager.c #include <config.h> #include <convert_manager.h> #include <string.h>static PT_VideoConvert g_ptVideoConvertHead NULL;/*********************************************************************** 函数名称&#xff1a; Register…...

【自学安全防御】二、防火墙NAT智能选路综合实验

任务要求&#xff1a; &#xff08;衔接上一个实验所以从第七点开始&#xff0c;但与上一个实验关系不大&#xff09; 7&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 8&#xff0c;分公司设备可以通过总…...

【Android】传给后端的Url地址被转码问题处理

一、问题 为什么使用Gson().toJson的时候&#xff0c;字符串中的会被转成\u003d 在 Gson 中&#xff0c;默认情况下会对某些特殊字符进行 HTML 转义&#xff0c;以确保生成的 JSON 字符串在 HTML 中是安全的。因此&#xff0c;字符 会被转义为 \u003d。你可以通过禁用 HTML 转…...

1.厦门面试

1.Vue的生命周期阶段 vue生命周期分为四个阶段 第一阶段&#xff08;创建阶段&#xff09;&#xff1a;beforeCreate&#xff0c;created 第二阶段&#xff08;挂载阶段&#xff09;&#xff1a;beforeMount&#xff08;render&#xff09;&#xff0c;mounted 第三阶段&#…...

设计模式使用场景实现示例及优缺点(行为型模式——状态模式)

在一个遥远的国度中&#xff0c;有一个被称为“变幻之城”的神奇城堡。这座城堡有一种特殊的魔法&#xff0c;能够随着王国的需求改变自己的形态和功能。这种神奇的变化是由一个古老的机制控制的&#xff0c;那就是传说中的“状态宝石”。 在变幻之城中&#xff0c;有四颗宝石&…...

抖音短视频seo矩阵系统源码(搭建技术开发分享)

#抖音矩阵系统源码开发 #短视频矩阵系统源码开发 #短视频seo源码开发 一、 抖音短视频seo矩阵系统源码开发&#xff0c;需要掌握以下技术&#xff1a; 网络编程&#xff1a;能够使用Python、Java或其他编程语言进行网络编程&#xff0c;比如使用爬虫技术从抖音平台获取数据。…...

SwiftHub:终极GitHub iOS客户端开发指南 - RxSwift与MVVM-C架构实践

SwiftHub&#xff1a;终极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问题定位

自动驾驶仿真测试避坑手册&#xff1a;从Pattern参数选择到Comfort问题定位 在自动驾驶系统的开发流程中&#xff0c;仿真测试环节往往决定了算法迭代的效率和质量。不同于传统软件测试&#xff0c;自动驾驶仿真需要构建高度复杂的虚拟环境&#xff0c;模拟真实世界中的各种边缘…...

5步掌握Loop:让Mac窗口管理效率提升10倍的免费开源方案

5步掌握Loop&#xff1a;让Mac窗口管理效率提升10倍的免费开源方案 【免费下载链接】Loop MacOS窗口管理 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 在数字工作环境中&#xff0c;窗口管理已成为影响效率的隐形瓶颈。Mac用户每天平均需要执行200次窗口操作…...

猫抓插件:5分钟掌握浏览器视频下载终极指南

猫抓插件&#xff1a;5分钟掌握浏览器视频下载终极指南 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过想要保存网页视频却找不到下载按钮的烦恼&#xff1f;或者想收藏在线音乐却只…...

缺陷检测新利器:f-AnoGAN原理剖析与工业视觉实战

1. 工业视觉缺陷检测的痛点与挑战 在工业生产线上&#xff0c;产品表面缺陷检测一直是个让人头疼的问题。传统的人工检测方式效率低下&#xff0c;一个工人盯着传送带看8小时&#xff0c;漏检率能达到15%以上。我见过某家电企业质检车间&#xff0c;工人们需要检查微波炉门板上…...

Vivado IP封装实战:从源码到GUI配置的完整避坑指南(含EDF/DCP对比)

Vivado IP封装实战&#xff1a;从源码到GUI配置的完整避坑指南&#xff08;含EDF/DCP对比&#xff09; 在FPGA开发中&#xff0c;团队协作和代码共享是常见需求&#xff0c;但如何平衡代码保护与功能灵活性一直是开发者面临的难题。Vivado提供了多种模块封装方案&#xff0c;每…...

5步定制UEFI启动界面:技术爱好者的HackBGRT实战指南

5步定制UEFI启动界面&#xff1a;技术爱好者的HackBGRT实战指南 【免费下载链接】HackBGRT Windows boot logo changer for UEFI systems 项目地址: https://gitcode.com/gh_mirrors/ha/HackBGRT 一、问题发现&#xff1a;启动界面定制的3大痛点 在计算机使用体验中&am…...

Ostrakon-VL-8B零基础上手:无需Python基础,通过Chainlit界面完成首次图文问答

Ostrakon-VL-8B零基础上手&#xff1a;无需Python基础&#xff0c;通过Chainlit界面完成首次图文问答 你是不是对AI图文对话很感兴趣&#xff0c;但一看到Python代码、命令行就头疼&#xff1f;是不是觉得部署一个多模态大模型需要专业的技术背景&#xff1f;今天我要告诉你一…...

internlm2-chat-1.8b长文本处理实战:法律合同分析+关键条款提取教程

internlm2-chat-1.8b长文本处理实战&#xff1a;法律合同分析关键条款提取教程 你是不是也遇到过这样的烦恼&#xff1f;拿到一份几十页的法律合同&#xff0c;密密麻麻的文字看得人头晕眼花&#xff0c;想快速找到里面的关键条款&#xff0c;比如付款方式、违约责任、保密协议…...

Leaflet坐标系实战:从设置到动态切换的完整指南

1. Leaflet坐标系基础概念解析 第一次接触Leaflet坐标系时&#xff0c;我也被各种专业术语搞得晕头转向。简单来说&#xff0c;坐标系就是用来确定地图上每个点位置的规则系统。就像我们在地球上使用经纬度定位一样&#xff0c;数字地图也需要明确的坐标参考。 Leaflet默认支持…...