网站建设补充范本,百度网址提交入口平台,深圳网站设计招聘,网页设计个人总结目录
一、背景 arm-none-eabi-size 二、脚本实现 2.1. 源码2.2. 效果呈现 三、实现说明 3.1 基本思路3.2 涉及到的shell 相关知识 3.2.1 sed 实现只打印第二行3.2.2 cut 截取某一行数据的第n个字段3.2.3 使用bc 计算器#xff0c;实现浮点运算
一、背景
arm-gcc 工具链…目录
一、背景 arm-none-eabi-size 二、脚本实现 2.1. 源码2.2. 效果呈现 三、实现说明 3.1 基本思路3.2 涉及到的shell 相关知识 3.2.1 sed 实现只打印第二行3.2.2 cut 截取某一行数据的第n个字段3.2.3 使用bc 计算器实现浮点运算
一、背景
arm-gcc 工具链提供了 arm-none-eabi-size 工具查看程序的内存映像但是这个工具查到的信息可读性不强如下所示
$ arm-none-eabi-size -B -d ./build/app.elftext data bss dec hex filename213768 164 57652 271584 424e0 ./build/app.elf上面呈现出来每个分区的大小都是一长串数据我希望它能显示每个分区占用了 xx K 这样我能有一个更直观的印象而不需要再打开一个计算器去计算。
arm-none-eabi-size
arm-none-eabi-size 的基本使用方法参照我之前的文章 https://blog.csdn.net/gdut_liujiangyi/article/details/132711069
研究了arm-none-eabi-size 的帮助文档没找到能实现我需求的参数配置所以决定自己写一个脚本实现。
二、脚本实现
2.1. 源码
脚本命名为list_section_size.sh
#!/bin/bash
cmd_get_ram_modelarm-none-eabi-size -B -d ./build/app.elfcode_size$($cmd_get_ram_model|cut -f 1| sed -n 2p)
rw_size$($cmd_get_ram_model|cut -f 2| sed -n 2p)
zi_size$($cmd_get_ram_model|cut -f 3| sed -n 2p)
hex_size$($cmd_get_ram_model|cut -f 4| sed -n 2p)# echo flash_szie:$hex_size
code_size_k$(echo scale2; $code_size/1024 |bc)
rw_size_k$(echo scale2; $rw_size/1024 |bc)
zi_size_k$(echo scale2; $zi_size/1024 |bc)
hex_size_k$(echo scale2; $hex_size/1024 |bc)echo code_size: $code_size ($code_size_kK)
echo rw_size: $rw_size ($rw_size_kK)
echo zi_size: $zi_size ($zi_size_kK)
echo hex_size: $hex_size ($hex_size_kK)
2.2. 效果呈现
$ ./list_section_size.sh
code_size: 213768 (208.75K)
rw_size: 164 (.16K)
zi_size: 57652 (56.30K)
hex_size: 271584 (265.21K)三、实现说明
3.1 基本思路 arm-none-eabi-size 工具获取到的第二行数据是具体每个分区的大小分别提前第二行的每个数据然后将它处于1024就得到以k 为单位的数据。
3.2 涉及到的shell 相关知识
3.2.1 sed 实现只打印第二行
sed -n 2p3.2.2 cut 截取某一行数据的第n个字段
这里不指定分隔符默认是制表符。-f 指定以分隔符分开的第几个字段。-f1 表示第一个字段-f2 表示第二个字段。
cut -f 13.2.3 使用bc 计算器实现浮点运算
bc 命令是任意精度计算器语言。这里使用 scale 2 指定保留两位小数。
echo scale2; $rw_size/1024 |bc