This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
最近用28035做了一个CAN总线的IAP烧写功能,遇到了一些问题:将转换好的bin文件烧写进FLASH里后,跳转到烧写的起始地址后程序并不运行,而这个bin文件对应的工程,用仿真器直接下载到DSP28035里面是可以直接运行的,可以正常CAN通信。我是从flash的0x003EE000处开始烧写目标程序的bin文件,之后DSP重新上电,程序跳转到0x003EE000处,但是无法执行,没有CAN通信收发。请问是这种跳转有问题还是out转换成的bin文件不正确?
你好,你在用can烧写时,自己定义的bootloader程序把,里边是否用到了,擦除Flash_Erase、烧写Flash_Program以及验证Flash_Verify这三个函数呢?
当时的主要问题是IAP跳转到主程序的入口地址的问题。已经解决了。CAN烧写过程要用到Flash_Erase和Flash_Program,按照一定的协议进行烧写。
你好,请教三个问题:
1、据我知道的是CAN数据帧是8个字节,一般的程序至少也十几kByte,那你们是如何处理的有效数据与代码量大的问题?(串口就一帧就可以发送很长的数据);
2、烧录完成后,是如何跳转到主程序重新开始的?
3、看过HEX的数据,里面是带绝对地址的?那么转化层bin文件是仅仅将ascii码转化成二进制吗,还是有其他不同?
盼回,万分感谢!
1. IAP程序按照YMODEM协议与上位机进行交互,接收并烧写上位机下发的.bin文件的数据。
2.利用指针跳转到预先设定好的主程序入口地址。例如:
run = ( void(*)() ) 0x003F2000 ;
(*run)();
3.利用转换格式转换工具首先将.out转成.hex,再将.hex转成.bin。
方法不一定是最优,希望对你有帮助。
谢谢你的帮助,协议应该都是基于ISO 15765标准,跳转地址放到Boot-to-Flash Entry Point是否会更安全点,重新进行进行_c_init到main的工作?