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.
我想编一个CAN 烧写程序的BootLoader,比如我将执行CAN 烧写的程序放在FLASHA,其他应用程序放置在其他FLASH 段,这样不管其他应用程序运行是否良好(即便是CRASH 了),我总可以通过内置在FLASHA 的CAN 烧写程序将我的应用程序进行重新烧录,这样可以摆脱对JTAG 或是串口的依赖;
也就是我想,芯片在上电加载程序的时候,总是先从FLASHA 开始,如果检测到不用加载程序,就跳转到我其他的应用程序区域,这样可以吗?能不能给点提示?
我之前做过应用程序和CAN 烧写程序混编在一起的,但是一旦这个合二为一的程序变砖了,还得用JTAG 进行自救,我觉得这样不好;
是不是通过在CAN 烧写程序中指向新程序的这个地址即可?
BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
你好,你是指基于CAN通讯的二次bootloader?官方提供的有一个例程,你看看是否跟你的要求一样:
C:\ti\c2000\C2000Ware_4_00_00_00\device_support\f2806x\examples\c28\f28069_can_flash_kernel
从这个说来看,是可以,不过我要再理解理解:
//! <h1>F28069 CAN Flash Kernel (f28069_can_flash_kernel)</h1>
//!
//! This example is for use with the CAN Flash Programmer utility. This
//! application is intended to be loaded into the device's RAM via the
//! CAN boot mode. After successfully loaded this program implements a
//! modified version of the CAN boot protocol that allows a user application
//! to be programmed into flash
这其实就是一个CAN FLASH 刷写程序,运行在RAM 侧,来通过跟上位机通信,不断地将数据写进FLASH,上位机可以读一个HEX 文件分拆成很多个数据包,然后这个RAM 程序最终就能完成用户程序的刷写;
这个跟我的需求不一样,我的需求这个刷写FLASH 的程序,要始终在上电的时候先运行,如果有上位机指令刷写程序,那就刷写程序,否则就转入到相应用户程序去运行;
我的大致想法如图所示,就是是现在FLASHA 内置一个通过CAN 来接收上位机数据,然后对FLASH 进行刷写的程序,然后:
1, BOOTROOM 加载位于FLASH A 的程序,比如加载到Unsecured RAM,将PC 指向该程序;
2,加载完成后,将函数主体Copy 到 Secured RAM 中;
3,上位机送数据,即根据用户程序 的HEX 文件来送数据;
4,执行FLASH 擦写,编程;
我网上找到一个TI 的技术文档,类似于这个:
这个图里面,就是通过SCI 先加载一个小程序,这个小程序可以重新获得PC 指针(也就是你说的二次BootLoader),运行这个小程序,然后可以接受上位机指令来拆解User Application 的HEX,完成下载到FLASH 的功能;
我看手册里面有个CAN BOOT 的模式,但貌似需要拉引脚电平,最终是不是可以执行类似的过程?
说实话没太接触过你要求的这种升级方式,翻了好久论坛,找到一个看着有点类似的9年前的帖子,里面讨论了很多内容,不知道有没有对你有帮助的:https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/15220/thread?tisearch=e2e-sitesearch&keymatch=%2522%25E5%2588%25A4%25E6%2596%25AD%25E6%2598%25AF%25E5%2590%25A6%25E5%258D%2587%25E7%25BA%25A7%2522#
关于CAN BOOT模式,这个是用来通过CAN在线升级程序用的,确实要配置引脚电平,需要烧写的时候配置为can boot,烧写完再改成flash运行的再上电。所以跟你的要求应该不符。
抱歉确实没太接触过你提到的升级方式,论坛翻了很久,找到一个9年前的帖子,似乎跟你要求比较类似。里面讨论了很多,不知道有没有对你有帮助的内容:
关于CAN boot,确实需要配置引脚电平。简单来说就是需要升级的时候配置为CAN boot模式,升级完再改成flash boot再上电运行。所以跟你的要求应该不符合。
另外,我感觉你的要求可能要自己编写bootloader程序和上位机程序,感觉会是一项很大的工程。