Part Number:TMS320F28069Other Parts Discussed in Thread:C2000WARE
我想编一个CAN 烧写程序的BootLoader,比如我将执行CAN 烧写的程序放在FLASHA,其他应用程序放置在其他FLASH 段,这样不管其他应用程序运行是否良好(即便是CRASH 了),我总可以通过内置在FLASHA 的CAN 烧写程序将我的应用程序进行重新烧录,这样可以摆脱对JTAG 或是串口的依赖;
也就是我想,芯片在上电加载程序的时候,总是先从FLASHA 开始,如果检测到不用加载程序,就跳转到我其他的应用程序区域,这样可以吗?能不能给点提示?
我之前做过应用程序和CAN 烧写程序混编在一起的,但是一旦这个合二为一的程序变砖了,还得用JTAG 进行自救,我觉得这样不好;
user6049953:
是不是通过在CAN 烧写程序中指向新程序的这个地址即可? BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
,
Green Deng:
你好,你是指基于CAN通讯的二次bootloader?官方提供的有一个例程,你看看是否跟你的要求一样:
C:\ti\c2000\C2000Ware_4_00_00_00\device_support\f2806x\examples\c28\f28069_can_flash_kernel
,
user6049953:
从这个说来看,是可以,不过我要再理解理解://! <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
,
user6049953:
这其实就是一个CAN FLASH 刷写程序,运行在RAM 侧,来通过跟上位机通信,不断地将数据写进FLASH,上位机可以读一个HEX 文件分拆成很多个数据包,然后这个RAM 程序最终就能完成用户程序的刷写;
这个跟我的需求不一样,我的需求这个刷写FLASH 的程序,要始终在上电的时候先运行,如果有上位机指令刷写程序,那就刷写程序,否则就转入到相应用户程序去运行;
,
user6049953:
我的大致想法如图所示,就是是现在FLASHA 内置一个通过CAN 来接收上位机数据,然后对FLASH 进行刷写的程序,然后:1, BOOTROOM 加载位于FLASH A 的程序,比如加载到Unsecured RAM,将PC 指向该程序;2,加载完成后,将函数主体Copy 到 Secured RAM 中;3,上位机送数据,即根据用户程序 的HEX 文件来送数据;
4,执行FLASH 擦写,编程;
,
user6049953:
我网上找到一个TI 的技术文档,类似于这个:
这个图里面,就是通过SCI 先加载一个小程序,这个小程序可以重新获得PC 指针(也就是你说的二次BootLoader),运行这个小程序,然后可以接受上位机指令来拆解User Application 的HEX,完成下载到FLASH 的功能;我看手册里面有个CAN BOOT 的模式,但貌似需要拉引脚电平,最终是不是可以执行类似的过程?
,
Green Deng:
说实话没太接触过你要求的这种升级方式,翻了好久论坛,找到一个看着有点类似的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运行的再上电。所以跟你的要求应该不符。
,
Green Deng:
抱歉确实没太接触过你提到的升级方式,论坛翻了很久,找到一个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 boot模式,升级完再改成flash boot再上电运行。所以跟你的要求应该不符合。
另外,我感觉你的要求可能要自己编写bootloader程序和上位机程序,感觉会是一项很大的工程。
,
user6049953:
对,需要自己搞上位机,类似于这样,基本搞好了:
,
Green Deng:
好的,方便的话可以分享一下自己的资料或者经验,供其他工程师参考。
,
user6049953:
顺便问一下, 这个128bit 的password位置可以换到其他SECTOR吗?
,
Green Deng:
这个换不了,固定的
,
user6049953:
是的,确实换不了,如果强行换到其他地方,就起不了密码保护的作用了;
,
user6049953:
资料的话,就是上面那幅图,稍微细化一下就是: