Keil进阶操作
这两天工作的时候发现了些新功能,周末又刚好下雨,就做个记录吧。
脚本调试
在.ini文件中编写自定义函数。之前调试的时候,发现的新功能,CSDN还是有些作用的。通过该功能,可以把寄存器里面的数据打印出来,再拷贝到excel里面,与不同版本程序对比,查看关键寄存器数据是否正确。我下面的代码可以一次读出229个寄存器,脚本调试的启蒙老师就是下面这个链接。
KeiL 调试时保存watchwindow的参数变量到文件_keil持续记录变量值到文件-CSDN博客
然后又去官网查找相关资料,具体链接如下。
µVision User's Guide: Creating Functions
FUNC void displayvalues(void) {int idx;for (idx = 0; idx < 229; idx++) {printf ("testarray[%d] = %8x\n", idx, *(uint32_t *)(0x4001C000+4*idx));}
}
displayValues脚本运行结果如command界面所示,displayValues()函数会打印出0x4001C000地址开始的229个HT7036芯片校表寄存器数据,但我使用的软件模拟(没有接开发板),所以寄存器里面的数据都是0。
此外,command界面还可以输入一些指令,sleep,printf,exit(输入完直接退出调试模式)。我境界不够,目前只用到printf。
µVision User's Guide: printf Library Routine
软件仿真
软件仿真调试,这是同事教我的,无需硬件,用于查看与硬件无关的软件变量。前文已经展示过了,软件仿真模式下,芯片寄存器内部数据毫无意义。
生成文件
fromelf是一款可以将Image,ELF文件转换成二进制文件的工具,fromelf的具体描述如下。
ARM Compiler fromelf User Guide Version 5.06
生成合并文件
fromelf.exe --bin --bincombined --bincombined_padding=1,0xff --output HT7x2x.bin !L
使用bincombined关键字,将芯片所有加载区域输出到一个文件中。(Produces plain binary output. It generates one output file for an image containing multiple load regions.)
按程序分区生成文件
使用bin关键字,按程序加载区域生成文件bin文件,且生成文件存放在名为HT7x2x.bin的文件夹中,生成文件不带.bin后缀,需要手动添加。如果输出文件夹下包含HT7x2x.bin文件(bin文件,非文件夹),会因为这个同名文件的存在,导致生成失败。是我浅薄了,没想到同名文件和文件夹不能同时存在,之前以为同类型文件不能同名,没想到命名规则这么严格。
fromelf.exe --bin --output HT7x2x.bin !L
fromelf -bin默认生成文件与程序区域名字相同,程序区域划分如下。