原文中文,约2900字,阅读约需7分钟。
📝
内容提要
在开发过程中,固件编译体积超出限制,通过分析浮点计算代码,优化除法和减法的使用,成功减少2.8KB的固件体积。开发时需注意资源和指令的使用,尽量使用整数计算。
🎯
关键要点
-
固件编译体积超出 Flash 限制,超出772字节。
-
使用 PlatformIO 的 Inspect 功能分析固件编译产物的资源使用情况。
-
通过 Inspect 功能可以查看固件的内存和 Flash 使用情况,以及代码缺陷。
-
发现浮点计算相关的代码占用较大体积,特别是 __subdf3、__divdf3 和 __muldf3。
-
CH32V003 不支持硬件浮点计算,需优化浮点计算代码。
-
通过优化除法为乘法和去掉不必要的减法,成功减少固件体积2.8KB。
-
开发时需注意资源和指令的使用,尽量使用整数计算。
-
USB 电流表的所有资料已开源,包括固件代码和硬件文件。
❓
延伸问答
如何使用 PlatformIO Inspect 分析固件体积问题?
可以通过 PlatformIO 的 Inspect 功能分析固件的资源使用情况,包括 Flash 和内存占用,帮助找出体积超标的原因。
CH32V003 固件体积超标的原因是什么?
固件体积超标主要是由于浮点计算相关的代码占用较大体积,特别是 __subdf3、__divdf3 和 __muldf3 等符号。
如何优化固件以减少体积?
可以通过将浮点除法替换为乘法,并去掉不必要的减法来优化固件,从而减少体积。
CH32V003 是否支持硬件浮点计算?
CH32V003 不支持硬件浮点计算,使用的指令集 RV32EC 不包含浮点计算相关的指令。
固件体积优化后减少了多少?
通过优化,固件体积减少了 2.8KB,从之前的 15.5KB 降至更小的体积。
USB 电流表的开源资料在哪里可以找到?
USB 电流表的所有资料已开源,可以在 GitHub 仓库获取,包括固件代码和硬件文件。
🏷️