写了一个二次 bootloader,使用SCI进行在线升级,bootloader放在A--至---D扇区,
从E---F扇区(0x88000)开始放APP程序,
APP程序的CMD文件中BEGIN设置为APP的起始地址E扇区-----0x88000,PROG程序从E扇区0x88002开始
//============================================
用仿真器,烧录APP---EF扇区后,用CCS 的memory save将flash数据保存,
仿真,通过bootloader 使用SCI串口烧录APP---EF扇区后,用CCS 的memory save将flash数据保存,
比较上述两种情况烧写的flash内容,是一致的,也就是bootloader的烧写flash应该是没问题的
//============================================
使用bootloader,SCI串口烧录APP程序
1、先使用JTAG烧录bootloader程序,烧入ABCD扇区
2、使用bootloader,SCI串口烧录APP程序----烧入-扇区E----F
3、重新上电,不能跳转到APP,进入非法中断
使用JTAG烧录APP程序可以从bootloader跳转到APP
1、先使用JTAG烧录bootloader程序,烧入ABCD扇区
2、再使用JTAG仿真器-烧录APP程序----烧入-扇区E----F (不擦除bootloader的 ABCD扇区)
3、重新上电,可以从bootloader正确跳转到APP
证明跳转程序应该是没问题的
//=======================
看了网上的一些帖子,已经尝试着把APP里面ECC使能关闭了,效果还是一样
//============================
APP--CMD里面
PROG : origin = 0x088002, length = 0x00FFFE
RESET : origin = 0x3FFFC0, length = 0x000002
{
//bl_table : > FLASHA, PAGE = 0, type = DSECT
//app_table : > BEGIN, PAGE = 0
.cinit : > PROG PAGE = 0
.binit : > PROG PAGE = 0
.pinit : > PROG PAGE = 0
.text : > PROG PAGE = 0
codestart : > PROG PAGE = 0