我认为有三种方式:
1. 配置GPIO口,设置引导模式
芯片的ROM中有自带的引导程序,如果要进入那个引导程序,就需要配置对应的GPIO口,见TMS320x2803x Piccolo Boot ROM reference guide文档说明。
同时需要上位机通过CAN硬件将对应格式的数据发送给到C2000.
2. 在应用程序中跳转到ROM中的CAN引导入口
参考例程C:\ti\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_ccsv5\f2803x_flash_kernel
这种情况是可以用在在线升级中。
3. 自己写引导程序,包括flash API操作
这种也用于在线升级中,跟2有点类似,只不过你可以自己定义数据格式,通过CAN接受上位机的数据,然后擦除flash,烧写接收到的数据包。
Eric
】
我在应用程序中,想用你的第二种方式来实现在线刷新应用程序。
Uint32 (*SCI_Boot_ptr)(void) = (Uint32 (*)(void))0x3ff7dd;
Uint32 entryAddr;
。。。应用程序代码。
DINT;
DisableDog();
entryAddr = (*SCI_Boot_ptr)();
即在某种条件下(目前是通信给一特定数据),让程序直接跳转到 SCI_BOOT的起始地址 0x3ff7dd。
思路基本是如上。。
目前遇到的问题是,我在程序跳转到0x3ff7dd之后(此时应用程序已经飞掉了)用C2PROG软件烧写HEX文件,出现如下提示
*** PLEASE RESET TARGET IN SCI BOOT-LOADER MODE ***
Connecting with target (autobaud)… OK.
Bootloading… OK.
Please wait…
Connecting with target… failed (no response)!
在这一步完成不了。。。所以要完成不了,自己想要的简易BOOTLOADER
我的目标板是TMS320F28035 我用C2PROT 在上电直接进SCI_BOOT 没问题(上电把GPIO34拉底)
按道理,我目前程序能接受前面的一些指令,后面的进行不下去,很奇怪,所以发出来,看看有没有同行一起再研究这个。。。。
大家可以一起讨论,我同时也发了一封邮件给ERIC,希望能得到一些指导。。。大家可以互相学习下。
Seven Han:
您好,
不知您使用的哪个版本的C2PROG,论坛中有C2PROG V1.5 烧写总结:http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/9864.aspx
同时也期待您分享解决方法。
谢谢!