选出固件最小的ash 比较紧张时,我们需要考虑代码体积的优化,使其尽量精简,这样的代码在之后的迭代开发中才可以实现小而美的目标。
01裁剪 裁剪是优先需要考虑的方向,这种方式操作简单,也最为见效。
2 260932 1648 5388 267968 416c0 rtthread.elf 3 Used Size(B) Used Size(KB) 4Flash: 262580 B 256.43 KB 5RAM: 7036 B 6.87 KB 裁剪 Ulog 组件(-3.8KB)
裁剪文件系统及 Flash 设备(-83.2KB)2 172148 1308 3556 177012 2b374 rtthread.elf 3 Used Size(B) Used Size(KB) 4Flash: 173456 B 169.39 KB 5RAM: 4864 B 4.75 KB 裁剪外设驱动(-101.8KB)
2 68856 384 2524 71764 11854 rtthread.elf 3 Used Size(B) Used Size(KB) 4Flash: 69240 B 67.62 KB 5RAM: 2908 B 2.84 KB 裁剪 FinSH(-13K)
裁剪内核 IPC(体积几乎不变)2 54888 336 2232 57456 e070 rtthread.elf 3 Used Size(B) Used Size(KB) 4Flash: 55224 B 53.93 KB 5RAM: 2568 B 2.51 KB 检查 RT-Thread Setting 和 rtconfig.h 配置文件
02选择合适的优化等级 gcc -O option flag2 38724 336 2232 41292 a14c rtthread.elf 3 Used Size(B) Used Size(KB) 4Flash: 39060 B 38.14 KB 5RAM: 2568 B 2.51 KB
03开启newlib-nano 选项 Use float with nano printf 和 Use float with nano scanf 选项框。04对Map File进行分析优化(使用 Amap.exe 工具) 05使用readelf命令分析ELF文件 readelf --help 查看用法。readelf -all rtthread.elf 可以查看 elf 的所有信息。GLOBAL 代表全局符号,OBJECT 代表数据对象,比如变量数组,FUNC 代表函数等等。我们可以利用这些这些信息,分析具体的段对应的大小。06如有必要,可以更换libc库 07更换同类型Flash较大的硬件平台 |
|
来自: 魅影苍穹 > 《RT-Thread》