专门做老年旅游的网站,wordpress tag标签调用,网站建设要程序员吗,wordpress单栏简洁简介
[Keil5_disp_size_bar] 以进度条百分比来显示keil编译后生成的固件对芯片的内存ram和存储flash的占用情况, 并生成各个源码文件对ram和flash的占比整合排序后的map信息的表格和饼图。 原理是使用C语言遍历当前目录找到keil工程和编译后生成的map文件 然后读取工程文件和m…简介
[Keil5_disp_size_bar] 以进度条百分比来显示keil编译后生成的固件对芯片的内存ram和存储flash的占用情况, 并生成各个源码文件对ram和flash的占比整合排序后的map信息的表格和饼图。 原理是使用C语言遍历当前目录找到keil工程和编译后生成的map文件 然后读取工程文件和map文件来找到对应关键词内的ram和flash的各类信息 最后把信息整合以进度条字符串直观格式输出同时把map的数据排序后导出csv和xlsx文件绘制饼图。
注意:再次编译前先关闭已经使用excel打开的表格或者先把原来的表格移走不然excel占用表格文件导致没法输出新表格 注意:再次编译前先关闭已经使用excel打开的表格或者先把原来的表格移走不然excel占用表格文件导致没法输出新表格 注意:再次编译前先关闭已经使用excel打开的表格或者先把原来的表格移走不然excel占用表格文件导致没法输出新表格
该程序容易和keil的after bulid功能集成以便嵌入式软件工程师方便知道芯片占用情况进行裁剪和优化。
这个项目也有一个Qt的版本:https://gitee.com/nikolan/keil_development_assistant 表格和进度条等内容直接在图形化的Qt应用查看 不过这个命令行的版本虽然没法交互但是更容易集成到项目工程内不太占空间且纯C库依赖少执行更快各有各的好处。
基本能找到编译后生成的map文件, 就能输出生成的代码对ram和flash的占用大小百分比进度条,和表格数据。 只要能找到工程文件和map文件keil5环境下通用,对于没有使用分散加载的stm32和各种国产32一般都是可以直接适配的。 程序如果没有输出或输出有错误请查看运行日志 _alog.txt看程序在哪个步骤断开没有往下执行。 项目内附上一个H7B0工程文件和map文件用于测试。
该项目代码可应用于二次开发任何数据使用C语言整合信息用链表排序后以表格方式输出。 例如统计自己源码的某些信息例如RTOS创建的任务信息或者函数关系等。
使用方法 把程序Keil5_disp_size_bar.exe放到工程目录下, 要放在在.map文件更上一层的目录, 例如可以放在和工程文件.uvoptx同一目录下。 在工程打开魔术棒配置在User的After Build/Rebuild下 添加编译后执行程序#Run1或#Run2, 在前面打钩后面则选择要执行的程序Keil5_disp_size_bar.exe对应路径 注意要选对是当前工程目录下的Keil5_disp_size_bar.exe 最好还是使用相对路径避免工程移动后导致找不到。 为避免移动工程后路径找不到的情况。也可手动输入 相对当前工程文件的相对路径例如”./Keil5_disp_size_bar.exe”
如果选错其他工程的编译出的信息则是其他工程的map文件
最新版本支持传入参数 ./Keil5_disp_size_bar.exe 参数1 参数2 参数3 参数4 参数5
参数1:工程文件和map文件的递归查找目录默认是”./”即exe所在目录 参数2:map文件的递归查找目录默认是”./”即exe所在目录 参数3:是否输出程序详细运行过程默认是0不输出,1则输出。 参数4:打印进度条已占用时的字符串默认是”■” 参数4:打印进度条未占用时的字符串默认是”_” 接着每次对工程按下编译编译完成后就能看到生成的代码对ram和flash的占用大小百分比进度条。
同时生成了4个文件 xxx_alog.txt 是程序运行日志文件当输出不对或没有输出时可以查看 xxx_sort_by_flash.csv是把文件按flash占用排序的表格 xxx_sort_by_ram.csv是把文件按ram占用排序的表格 xxx_analysis.xlsx是文件ram和flash的占用和绘制的百分比饼图 如果执行了Keil5_disp_size_bar.exe却没有输出占用百分比进度条或者输出的信息有误 请检测输出的错误消息或alog日志文件,最大可能是当前工程或者你放置程序的目录下递归查找也找不到map文件 请检测工程的Output输出生成配置然后按下全部重新编译一次再看看能不能输出占用百分比进度条。 二次开发环境搭建 系统:windos10 编译器mingw-64 编辑器:例如vscode(使用其他IDE环境也可)
工程结构如下: ├─.vscode ├─inc(头文件) │ └─xlsxwriter(头文件) │ └─third_party(头文件) ├─lib(静态库) └─src(源码)
开发方式和linux下编译开发C语言差不多,通过make或者gcc指令编译。
源码是使用GB2312格式编码的字符使用其他编码打开的话中文注释和特殊字符会乱码。因为keil如果使用utf-8输出到cmd的会带乱码这是因为window的cmd中文默认GB2312。
代码通过预编译实现了库的可裁剪 Makefile的USED_XLSXWRITER_LIB1 默认是1编译xlsxwriter库
如果USED_XLSXWRITER_LIB0 则代码生成xlsx文件部分代码则被裁剪掉只会生成csv文件。
版本更新日志
. 更新到v1.0 版本1.0进行了大更新 代码规范化大部分变量以结构体形式封装且函数接口有较详细注释 支持main函数传参 参数1:工程和map的递归查找地址 参数2map递归查找地址 参数3是否输出运行过程到终端参数4进度条占用字符串 参数5进度条不占用字符串 支持显示ram和flash段的基地址且按基地址纠正是ram还是flash 程序运行后直接输出结果程序的运行过程默认不输出到终端而是保存在 工程名_alog.txt内要输出则传参数4为 1 解析文件在已使用的ram和flash的占比导出csv和xlsx表格结果xlsx表格会画出百分比的饼图csv则需要自己使用excel画
. 更新到v0.4 把uint64_t改为uint32_t,因为发现sscanf函数的%x给赋值时64位好像会因为对齐问题错误。 修复递归查找不彻底导致子目录下的map找不到 添加C51支持8051 测试STC89C52和WCH552均测试可以但是部分工程没有写xram的大小的默认只能以iram大小替代。还有部分工程是没有在工程定义真正大小的也就是芯片本身没有keil开发包用其他芯片或通用开发包定义的工程。在keil上是没有定义对应芯片型号或用了其他芯片的定义的8051这就会导致显示占用的最大值错误。要确保工程文件里面的IRAM,XRAM,IROM都是正确的才行。 同时发现部分例如stm32F0系列的工程map文件格式不同可能早期map不怎么统一规范给的max都是0xFFFFFFFF,无法输出进度条只能读工程的里芯片定义的max来替代map文件的max所以部分自定义的显示不出来工程文件有些格式也是会不一样有的以逗号分隔有的以-分隔。
. 更新到v0.3 修改进度条部分字符对齐问题,方块字符选择了正方形等宽 根据网友的反馈由于关键词(Exec关键词有部分map文件不存在关键词改成Execution Region检索执行段 加大ram和flash的占用信息存储数组的上限为30有的map的flash分开的段比较多或者自定义了.bss的内存池 根据网友反馈使用了自定义malloc的内存池的ram被归类为了flash除了带RAM外添加带ER$$的也视为RAM 百分比修改以KB单位的显示占用分子分母 最后以B为单位显示剩余可用空间 %d显示改为%u显示无符号整数
. 更新到V0.2 更改进度条样式 采用关键词(Exec模糊检索ram和flash的size和max 支持多个ram和flash的占用百分比进度条显示 一个极客 ageek nikola 开源
gitee开源地址包含C语言源码Keil5_disp_size_bar: [Keil5_disp_size_bar]:以进度条百分比来显示keil编译后代码对芯片的内存ram和存储flash的占用情况。原理是使用C语言遍历目录找到keil工程生成出的.map文件然后找到对应的ram和flash的总大和占用大小然后以进度条和百分比的直观格式输出来以便嵌入式软件工程师方便调试知道芯片占用情况进行裁剪和优化。
百度链接百度网盘 请输入提取码
提取码rca0 文章转载自: http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.sqqkr.cn.gov.cn.sqqkr.cn http://www.morning.jlmrx.cn.gov.cn.jlmrx.cn http://www.morning.fhntj.cn.gov.cn.fhntj.cn http://www.morning.rdkgw.cn.gov.cn.rdkgw.cn http://www.morning.lkbyj.cn.gov.cn.lkbyj.cn http://www.morning.rblqk.cn.gov.cn.rblqk.cn http://www.morning.hlppp.cn.gov.cn.hlppp.cn http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn http://www.morning.ctqbc.cn.gov.cn.ctqbc.cn http://www.morning.rnfn.cn.gov.cn.rnfn.cn http://www.morning.fthqc.cn.gov.cn.fthqc.cn http://www.morning.trtxt.cn.gov.cn.trtxt.cn http://www.morning.fqyqm.cn.gov.cn.fqyqm.cn http://www.morning.rnwt.cn.gov.cn.rnwt.cn http://www.morning.nlglm.cn.gov.cn.nlglm.cn http://www.morning.tdhxp.cn.gov.cn.tdhxp.cn http://www.morning.duckgpt.cn.gov.cn.duckgpt.cn http://www.morning.shuangxizhongxin.cn.gov.cn.shuangxizhongxin.cn http://www.morning.jtdrz.cn.gov.cn.jtdrz.cn http://www.morning.jjmrx.cn.gov.cn.jjmrx.cn http://www.morning.tnkwj.cn.gov.cn.tnkwj.cn http://www.morning.dpqqg.cn.gov.cn.dpqqg.cn http://www.morning.ydxwj.cn.gov.cn.ydxwj.cn http://www.morning.kxscs.cn.gov.cn.kxscs.cn http://www.morning.ntzfj.cn.gov.cn.ntzfj.cn http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn http://www.morning.yybcx.cn.gov.cn.yybcx.cn http://www.morning.dbfp.cn.gov.cn.dbfp.cn http://www.morning.phtqr.cn.gov.cn.phtqr.cn http://www.morning.gqjqf.cn.gov.cn.gqjqf.cn http://www.morning.mlpmf.cn.gov.cn.mlpmf.cn http://www.morning.gltmz.cn.gov.cn.gltmz.cn http://www.morning.tymwx.cn.gov.cn.tymwx.cn http://www.morning.nyfyq.cn.gov.cn.nyfyq.cn http://www.morning.nrfrd.cn.gov.cn.nrfrd.cn http://www.morning.knzdt.cn.gov.cn.knzdt.cn http://www.morning.qichetc.com.gov.cn.qichetc.com http://www.morning.tlyms.cn.gov.cn.tlyms.cn http://www.morning.fgkrh.cn.gov.cn.fgkrh.cn http://www.morning.ptslx.cn.gov.cn.ptslx.cn http://www.morning.xxrgt.cn.gov.cn.xxrgt.cn http://www.morning.fxygn.cn.gov.cn.fxygn.cn http://www.morning.rgxll.cn.gov.cn.rgxll.cn http://www.morning.znrgq.cn.gov.cn.znrgq.cn http://www.morning.nflpk.cn.gov.cn.nflpk.cn http://www.morning.wtdyq.cn.gov.cn.wtdyq.cn http://www.morning.wdprz.cn.gov.cn.wdprz.cn http://www.morning.pjzcp.cn.gov.cn.pjzcp.cn http://www.morning.kflpf.cn.gov.cn.kflpf.cn http://www.morning.xcdph.cn.gov.cn.xcdph.cn http://www.morning.kpxzq.cn.gov.cn.kpxzq.cn http://www.morning.wjlnz.cn.gov.cn.wjlnz.cn http://www.morning.qshxh.cn.gov.cn.qshxh.cn http://www.morning.pwxkn.cn.gov.cn.pwxkn.cn http://www.morning.nxstj.cn.gov.cn.nxstj.cn http://www.morning.sbjhm.cn.gov.cn.sbjhm.cn http://www.morning.wjqbr.cn.gov.cn.wjqbr.cn http://www.morning.wtcyz.cn.gov.cn.wtcyz.cn http://www.morning.nppml.cn.gov.cn.nppml.cn http://www.morning.ncwgt.cn.gov.cn.ncwgt.cn http://www.morning.xzrbd.cn.gov.cn.xzrbd.cn http://www.morning.hyhqd.cn.gov.cn.hyhqd.cn http://www.morning.lbpfl.cn.gov.cn.lbpfl.cn http://www.morning.fywqr.cn.gov.cn.fywqr.cn http://www.morning.gpryk.cn.gov.cn.gpryk.cn http://www.morning.tnbas.com.gov.cn.tnbas.com http://www.morning.rhkq.cn.gov.cn.rhkq.cn http://www.morning.hfbtt.cn.gov.cn.hfbtt.cn http://www.morning.ygrdb.cn.gov.cn.ygrdb.cn http://www.morning.mdmc.cn.gov.cn.mdmc.cn http://www.morning.wlggr.cn.gov.cn.wlggr.cn http://www.morning.lskyz.cn.gov.cn.lskyz.cn http://www.morning.ychoise.com.gov.cn.ychoise.com http://www.morning.frpb.cn.gov.cn.frpb.cn http://www.morning.pmhln.cn.gov.cn.pmhln.cn http://www.morning.iuibhkd.cn.gov.cn.iuibhkd.cn http://www.morning.qbdqc.cn.gov.cn.qbdqc.cn http://www.morning.hengqilan.cn.gov.cn.hengqilan.cn http://www.morning.xqjh.cn.gov.cn.xqjh.cn