请问:
我想在code_start处插入一段代码Bootloader(),用于接收CAN发送过来的APP.HEX,并调用FLASH API将APP.HEX写入到FLASH2
写入FLASH2完成后,执行LB _c_int00 ,然后跳转到main .
这样的流程是否可行?
正常的程序都是先LB _c_int00 后跳转到main .。
现在Bootloader()在 _c_int00 能正常工作吗?
问题2:
ccs 5 仿真时,直接运行到main()。我想从Codestart 开始仿真,怎样设置。
Debug ->configuration->target->Auto Run Option ->Run to symbol 填写code_start不起使用
Eric Ma:
1. 通常code start会跳转到_c_int00,然后跳转到main, 如果你要进行升级烧写,则可以在code start 那里判断,跳转到你CAN的程序(我们称之为boadloader),在你的算法里接收CAN的数据,然后擦除flash,烧写。完成之后,做一个软件复位靠谱点。
2. 你设置_C_int00试试。
ERIC
请问:
我想在code_start处插入一段代码Bootloader(),用于接收CAN发送过来的APP.HEX,并调用FLASH API将APP.HEX写入到FLASH2
写入FLASH2完成后,执行LB _c_int00 ,然后跳转到main .
这样的流程是否可行?
正常的程序都是先LB _c_int00 后跳转到main .。
现在Bootloader()在 _c_int00 能正常工作吗?
问题2:
ccs 5 仿真时,直接运行到main()。我想从Codestart 开始仿真,怎样设置。
Debug ->configuration->target->Auto Run Option ->Run to symbol 填写code_start不起使用
Kaiqiang Chen:
回复 Eric Ma:
Eric Ma
1. 通常code start会跳转到_c_int00,然后跳转到main, 如果你要进行升级烧写,则可以在code start 那里判断,跳转到你CAN的程序(我们称之为boadloader),在你的算法里接收CAN的数据,然后擦除flash,烧写。完成之后,做一个软件复位靠谱点。
2. 你设置_C_int00试试。
ERIC
请问:
我想在code_start处插入一段代码Bootloader(),用于接收CAN发送过来的APP.HEX,并调用FLASH API将APP.HEX写入到FLASH2
写入FLASH2完成后,执行LB _c_int00 ,然后跳转到main .
这样的流程是否可行?
正常的程序都是先LB _c_int00 后跳转到main .。
现在Bootloader()在 _c_int00 能正常工作吗?
问题2:
ccs 5 仿真时,直接运行到main()。我想从Codestart 开始仿真,怎样设置。
Debug ->configuration->target->Auto Run Option ->Run to symbol 填写code_start不起使用
Eric Ma:
回复 Kaiqiang Chen:
解释一下:
如果要在线升级,则芯片内部要划分一个扇区来存bootloader, 其他扇区都来存你的APP。一般来讲是分两个工程,烧写两次把bootloader和APP分开加载进去芯片。
如果要升级,一种方法是可以上电后,直接跳转到APP的入口地址,然后在APP中去判断CAN接受的命令,如果要升级,则跳转到bootloader的入口地址。bootloader再初始化后,擦除flash,接受CAN的数据,烧写。
另外要注意的情况是,假如通过上述的步骤烧写失败了,如应用程序被擦除了,但是新的代码没烧写成功,这时候重新上电,通过上述步骤就没办法再次烧写,所以要考虑多一个防烧写失败的功能。例如在擦除前,往某一个flash单元写入0xF0,表示烧写没完成,烧写完成后,才修改为0xF1. 然后在上电后的bootloader的code start去判断这个地址,如果0xF1,则跳转到APP的入口,否则跳转到code start的_c_int00.
ERIC.
请问:
我想在code_start处插入一段代码Bootloader(),用于接收CAN发送过来的APP.HEX,并调用FLASH API将APP.HEX写入到FLASH2
写入FLASH2完成后,执行LB _c_int00 ,然后跳转到main .
这样的流程是否可行?
正常的程序都是先LB _c_int00 后跳转到main .。
现在Bootloader()在 _c_int00 能正常工作吗?
问题2:
ccs 5 仿真时,直接运行到main()。我想从Codestart 开始仿真,怎样设置。
Debug ->configuration->target->Auto Run Option ->Run to symbol 填写code_start不起使用
Kaiqiang Chen:
回复 Eric Ma:
谢谢Eric大神的指点!我现在用的是TMS320F28377D,程序是双CPU的,如果是只用一个CPU的话,想您说的那样可以完美解决,但是CPU2该如何配置呢?
请问:
我想在code_start处插入一段代码Bootloader(),用于接收CAN发送过来的APP.HEX,并调用FLASH API将APP.HEX写入到FLASH2
写入FLASH2完成后,执行LB _c_int00 ,然后跳转到main .
这样的流程是否可行?
正常的程序都是先LB _c_int00 后跳转到main .。
现在Bootloader()在 _c_int00 能正常工作吗?
问题2:
ccs 5 仿真时,直接运行到main()。我想从Codestart 开始仿真,怎样设置。
Debug ->configuration->target->Auto Run Option ->Run to symbol 填写code_start不起使用
Eric Ma:
回复 Kaiqiang Chen:
你先把CPU1搞定了,你就能搞定CPU2了。一般要两个CPU都能独立升级或是同时升级。
我是建议都只用CPU1的CAN作为唯一的通信接口,当要升级CPU2的时候,CPU1的APP接到升级指令,同样跳转到CPU1的bootloader, 但是这个bootloader这时的功能只是作为接收CAN发来的数据,然后通过IPC标志告诉CPU2的APP去升级了,同时通过IPC把数据发送给CPU2。
所以CPU1,CPU2都有各自的bootloader和APP,只不过CPU2的bootloader监视的是IPC标志及CPUd1通过共享RAM发来的数据而已。
而CPU1的bootloader不但要升级自己,还有有部分功能作为传递数据用。
ERIC
请问:
我想在code_start处插入一段代码Bootloader(),用于接收CAN发送过来的APP.HEX,并调用FLASH API将APP.HEX写入到FLASH2
写入FLASH2完成后,执行LB _c_int00 ,然后跳转到main .
这样的流程是否可行?
正常的程序都是先LB _c_int00 后跳转到main .。
现在Bootloader()在 _c_int00 能正常工作吗?
问题2:
ccs 5 仿真时,直接运行到main()。我想从Codestart 开始仿真,怎样设置。
Debug ->configuration->target->Auto Run Option ->Run to symbol 填写code_start不起使用
Kaiqiang Chen:
回复 Eric Ma:
我现在的做法就如您所说,CPU1bootloader接收数据,并判断是升级CPU1还是CPU2,如果是CPU2,就设置一个IPCFLAG,数据存储在共享的GSRAM中,CPU2只做读取,这些都实现了,现在问题是应用程序的CPU2中也需要使用同一个CAN,跳转到应用程序后CAN不工作,请问这是什么原因?
请问:
我想在code_start处插入一段代码Bootloader(),用于接收CAN发送过来的APP.HEX,并调用FLASH API将APP.HEX写入到FLASH2
写入FLASH2完成后,执行LB _c_int00 ,然后跳转到main .
这样的流程是否可行?
正常的程序都是先LB _c_int00 后跳转到main .。
现在Bootloader()在 _c_int00 能正常工作吗?
问题2:
ccs 5 仿真时,直接运行到main()。我想从Codestart 开始仿真,怎样设置。
Debug ->configuration->target->Auto Run Option ->Run to symbol 填写code_start不起使用
Kaiqiang Chen:
回复 Eric Ma:
我修改了CodeStartBranch.asm,但是不是很懂汇编,能帮我看一下这样写哪里不对吗?跳转不到应用程序

请问:
我想在code_start处插入一段代码Bootloader(),用于接收CAN发送过来的APP.HEX,并调用FLASH API将APP.HEX写入到FLASH2
写入FLASH2完成后,执行LB _c_int00 ,然后跳转到main .
这样的流程是否可行?
正常的程序都是先LB _c_int00 后跳转到main .。
现在Bootloader()在 _c_int00 能正常工作吗?
问题2:
ccs 5 仿真时,直接运行到main()。我想从Codestart 开始仿真,怎样设置。
Debug ->configuration->target->Auto Run Option ->Run to symbol 填写code_start不起使用
youdong sheng:
回复 Kaiqiang Chen:
你好:
我也在做CAN的bootloader,通过CAN下载程序到flash中,就差最后一步跳转,不知道要怎么修改这个文件?你解决了吗?可以指教下吗?
请问:
我想在code_start处插入一段代码Bootloader(),用于接收CAN发送过来的APP.HEX,并调用FLASH API将APP.HEX写入到FLASH2
写入FLASH2完成后,执行LB _c_int00 ,然后跳转到main .
这样的流程是否可行?
正常的程序都是先LB _c_int00 后跳转到main .。
现在Bootloader()在 _c_int00 能正常工作吗?
问题2:
ccs 5 仿真时,直接运行到main()。我想从Codestart 开始仿真,怎样设置。
Debug ->configuration->target->Auto Run Option ->Run to symbol 填写code_start不起使用
youdong sheng:
回复 youdong sheng:
解决了~~~~
TI中文支持网



