使用CH32V20xEVT.ZIP中的IAP示例程序CH32V20x_IAP编译完下载进入官方的CH32V203C8T6-R0评估板,在WIN10下使用WCHMcuIAP_WinAPP.exe进行下载,按照软件默认选择了编译完APP的hex文件,发现下载成功,但是APP不运行。
折腾了两天,最终发现使用HEX格式的app被下载到了0x800A000处,而不是IAP之前默认的0x8005000处,APP能运行才怪呢。但是看芯片端iap程序没发现什么大问题,考虑到这个IAP一切都靠事先约定,芯片端的IAP代码就是直接执行,问题很可能出现在PC端的WCHMcuIAP_WinAPP.exe上,苦于没有源码,没有通信协议说明,只能打算重写整套工具。
突然脑子一动,会不会PC端这个程序解析HEX文件出错了呢,再次打开下载文件选择框,改选bin格式文件,点程序下载,然后居然APP运行起来了!
把FLASH内容dump出来对比,果然是HEX文件下载的出了问题
使用HEX文件下载完5000偏移处的内容截图
A000偏移处内容截图
改用BIN文件来下载,5000偏移处内容截图,显然已经是固件的中断向量表内容
而A000偏移处则恢复了空白