做网店好还是网站,怎么做卖橘子的网站,江苏营销型网站策划,一般注册公司要多少钱#x1f48c; 所属专栏#xff1a;【BES2500x系列】 #x1f600; 作 者#xff1a;我是夜阑的狗#x1f436; #x1f680; 个人简介#xff1a;一个正在努力学技术的CV工程师#xff0c;专注基础和实战分享 #xff0c;欢迎咨询#xff01; #x1f49… 所属专栏【BES2500x系列】 作 者我是夜阑的狗 个人简介一个正在努力学技术的CV工程师专注基础和实战分享 欢迎咨询 欢迎大家这里是CSDN我总结知识的地方喜欢的话请三连有问题请私信 您的点赞、关注、收藏、评论是对我最大的激励和支持 文章目录 前言1 什么是Flash2 获取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;
}参数/函数讲解
序号参数/函数说明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 学习笔记】 【软件安装教程】 订阅更多你们将会看到更多的优质内容