news 2026/4/20 11:38:52

【OTA专题】18 OTA性能优化:优化bootloader存储空间与固件完整性校验(CRC)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【OTA专题】18 OTA性能优化:优化bootloader存储空间与固件完整性校验(CRC)

目录

1 优化Bootloader存储空间

目的:

方法:

一、代码结构优化

二、函数优化

三、变量优化

四、编译优化

五、数据存储优化

使用工具查看Bootloader占用片上Flash空间

2 完整性校验(CRC)

3 移植代码


1 优化Bootloader存储空间

目的:

为实现后续对 Bootloader的标准化并拓展其功能,在完成常规功能逻辑后,有必要对 Bootloader的代码内存进行深度优化。鉴于仅分配了32K的Flash 空间供Bootloader使用,因此在前期阶段需竭力压缩空间,以满足当前需求并为未来的发展预留充足的空间资源。|

方法:

一、代码结构优化

  1. 冗余代码清理:

  • 对现有Bootloader代码进行全面的代码审查,精准识别并剔除那些不再使用或功能重复的代码片段。

  • 针对功能相似但实现方式略有差异的代码块,进行整合重构。

  1. 算法与逻辑优化:

  • 在涉及校验、加密等计算密集型部分,若当前采用的算法较为复杂且占用大量代码空间,可考虑寻找更为精简高效的替代算法。

  • 简化复杂的条件判断和分支逻辑。比如多层嵌套的if-else语句或switch-case结构

二、函数优化

  1. 合理控制函数参数传递:

  • 尽量减少函数参数的数量和大小,避免传递大型结构体等占用较多栈空间的数据类型作为参数。若确实需要传递较多数据,可考虑使用指针传递方式,仅传递地址,有效减少参数传递时在栈上占用的空间。

三、变量优化

  1. 减少全局变量使用:

  • 全局变量在整个程序运行期间持续占用内存空间。应尽量将不必要的全局变量转化为局部变量,使其在函数执行完毕后自动释放所占用的栈空间。

  1. 优化变量类型:

  • 根据实际需求选择合适的数据类型定义变量,避免使用过大的数据类型造成空间浪费。

四、编译优化

  1. 启用编译器优化选项:

  • 不同的编译器提供了一系列优化级别选项,如GCC编译器的-01、-O2、-03等。

  1. 裁剪库函数使用:

  • 若Bootloader中链接了标准库或第三方库,应仔细分析哪些库函数是真正必需的。

五、数据存储优化

  1. 合理规划数据布局:

  • 在Flash空间中精心规划数据和代码的存储布局,将相关的数据尽量紧凑地排列,减少因地址对齐等原因造成的空间碎片浪费。例如,把一些固定长度的数据结构按照顺序依次存放,避免中间出现大量空洞的未使用空间。

使用工具查看Bootloader占用片上Flash空间

工具:keil-build-viewer.exe (网上直接就能找到,这里就不放资源了)

将该程序放在工程目录中:

然后在魔术棒的User栏:

此时点击编译,就可以查看占用flash情况了:

2 完整性校验(CRC)

CRC开源库:https://www.libcrc.org/download/

参考文章与视频:

【视频】[CRC校验]手算与直观演示

【文章】zhuanlan.zhihu.com(CRC计算原理)

【文章】CRC(循环冗余校验码)简介与实现解析

CRC在线计算:https://www.ip33.com/crc.html

3 移植代码

在ymodem.c中包含头文件 “checksum.h”

在接受一包数据函数"Receive_Packet()"里,返回前,进行CRC校验:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 4:20:52

Windows右键菜单管理:从混乱到高效的完整解决方案

Windows右键菜单管理:从混乱到高效的完整解决方案 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾经在右键点击文件时,面对着一长…

作者头像 李华
网站建设 2026/4/20 11:35:24

OpCore Simplify终极指南:四步打造完美黑苹果系统

OpCore Simplify终极指南:四步打造完美黑苹果系统 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配置而头疼吗&…

作者头像 李华
网站建设 2026/4/19 18:08:38

BiliTools AI视频总结功能:3分钟掌握B站视频精华的智能秘籍

BiliTools AI视频总结功能:3分钟掌握B站视频精华的智能秘籍 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Trending/bilit…

作者头像 李华
网站建设 2026/4/19 18:11:47

B站视频下载神器DownKyi:从入门到精通的完整使用指南

B站视频下载神器DownKyi:从入门到精通的完整使用指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#x…

作者头像 李华
网站建设 2026/4/19 18:08:50

OpCore Simplify:黑苹果新手必备的完整OpenCore配置解决方案

OpCore Simplify:黑苹果新手必备的完整OpenCore配置解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配置流程…

作者头像 李华
网站建设 2026/4/19 18:10:12

BiliTools高效攻略:跨平台B站资源下载与管理的终极解决方案

BiliTools高效攻略:跨平台B站资源下载与管理的终极解决方案 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Trending/bilit…

作者头像 李华