RISC-V IDE MRS进阶分享一picolibc C标准库简介与使用今天分享一个使用MRS开发、优化代码大小时可以尝试启用的 PICLIBC标准库先上效果以MRS CH32V307RCT整型打印输出工程为例选择newlib-nano和PICOLIBC 分别为C标准库输出结果如下。Newlib-nanoPICOLIBC对比可见选用PICOLIBC为C标准库的text段和data段都会明显减少对于资源受限的芯片程序开发时可将C标准库切换为PICOLIBC进行调优尝试。PICOLIBC是一款专为资源受限的嵌入式系统设计的C标准库通过整合Newlib和AVR Libc的核心代码为微控制器等低功耗设备提供基础运行支持。在MRS中已经集成了PICOLIBC C标准库与newlib C标准库默认选择的是newlib,其功能更全面与通用选择PICOLIBC只需要在编译前按下图设置下即可。针对PICOLIBC中的printf系列输出函数MRS目前提供三种输出等级-Dformat-defaultd 此模式提供完整的 printf 功能包括浮点数float 和 double转换、C99 扩展及 POSIX 位置参数。-Dformat-defaulti 此模式移除对 long long 转换以及浮点数的支持当该值大于 long 时。-Dformat-defaultm 此格式移除了宽度与精度控制、替代显示模式及替代符号显示功能。虽然这些格式符号仍会被正确解析因此大多数情况下应用程序无需调整格式字符串但输出结果将有所不同用户可以根据代码输出格式选择相应的输出等级不同级别的输出会极大影响代码尺寸。在MRS中以CH32V307RCT整型打印输出工程为例选择-Dformat-defaultd完整输出模式其输出结果如下-Dformat-defaulti整型输出模式其输出结果如下以上结果可以看出text段也就是代码段有非常明显的变化以上对比结果可在MRS中使用编译后分析功能来获取更详细的代码尺寸地址布局等分析。