DIY USB 电流表番外篇:使用 PlatformIO Inspect 分析和优化固件体积

DIY USB 电流表番外篇:使用 PlatformIO Inspect 分析和优化固件体积

💡 原文中文,约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 仓库获取,包括固件代码和硬件文件。

🏷️

标签

➡️

继续阅读