情况说明:因为实际用的时候28335板子是封装在设备里面的,无法接触,所以只能通过预留的串口进行程序升级。升级过程为通过上
位机(台式机)的串口给开发板监控程序发送要升级的数据文件,开发板监控程序收到数据后烧写到内置flash的相应位置,烧写完成后
重启开发板,开发板运行新烧写的程序。为此,需要编写监控程序,板卡加电后监控程序启动,监控程序如果能收到串口发的某个特
定指令,则进入串口升级流程(上述);否则进入正常流程(监控程序把flash里的应用程序搬到ram中,然后跳到相应的位置执行程序)
。
现在已经实现部分:上位机通过串口发送的数据开发板能接收正确,也能写到相应的flash地址。
问题1:上位机应该给开发板发送编译好的什么格式的文件?out hex还是 bin?
【自己的测试:使用CCS开发环境自带的烧写工具把led.out文件烧到flash里面。程序正常启动(led指示灯周期闪烁)后,查看
0x338000地址开始的数据,该数据跟led.out、led.hex、led.bin文件都不相同。并且0x338000开始的有效数据只有大约4k大小,远小
于bin文件的30多K,更是小于out文件和hex文件大小】
问题2:如果烧写hex文件的话,需要用什么软件把out文件转换成hex文件,我试了几个软件,发现转换成的hex文件各不相同。
问题3:监控程序的程序升级流程,收到的串口数据(升级文件)写到flash的哪个位置?sectorA B C D E F G H都行吗?
问题4:板卡加电之后,监控程序怎么把flash里的程序搬到ram中,然后跳转运行。最好能提供一下参考代码,多谢。
onebyte:
问题1:简单的方法是把Hex文件送到开发板
问题2:Hex2000,网上有相关说明
问题3:Hex文件里定义了地址,写到对应的地址
问题4:用memerycopy,把指定flash地址搬到指定RAM中,在程序编译完成时,会生成一个map文件,根据map文件,你可以知道函数运行地址,知道地址就可以跳转了;你可以把要跳转的函数地址获取到,保存到特定的RAM地址上,监控程序每次都从这个地址去取函数地址就可以了