TI中文支持网
TI专业的中文技术问题搜集分享网站

28377D 二次 boot 跳转 APP异常

Other Parts Discussed in Thread:TMS320F28377D, C2000WARE

写了一个二次 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里面

    BEGIN   : origin = 0x088000, length = 0x000002
    PROG    : origin = 0x088002, length = 0x00FFFE  
    RESET   : origin = 0x3FFFC0, length = 0x000002
SECTIONS
{
    //bl_table            : > FLASHA,   PAGE = 0, type = DSECT
    //app_table           : > BEGIN,   PAGE = 0
    /* Allocate program areas: */
    .cinit              : > PROG    PAGE = 0
    .binit              : > PROG    PAGE = 0
    .pinit              : > PROG    PAGE = 0
    .text               : > PROG    PAGE = 0
     codestart          : > PROG    PAGE = 0 

 
此处如果改为   codestart          : > BEGIN  PAGE = 0 就会报错  
"../Cmd/TMS320F28377D_cpu01.cmd", line 100: error #10099-D: program will not fit into available memory.  placement with alignment/blocking fails for section "codestart" size 0x2 page 0.  Available memory ranges:
 
会不会是因为这里导致的?
烦请指导一下

 

Susan Yang:

关于SCI BOOT, 我们是有相关例程供您参考的 您可以下载C2000Ware后在下面路径查找: 上位机:C:\ti\c2000\C2000Ware_3_01_00_00\utilities\flash_programmers\serial_flash_programmer\serial_flash_programmer BOOT:C:\ti\c2000\C2000Ware_3_01_00_00\device_support\f2837xd\examples\dual\F2837xD_sci_flash_kernels文件夹下的F2837xD_sci_flash_kernels工程

,

NormalOne:

例程里面是需要硬件修改GPIO72,GPIO84的电平,选择SCI BOOT MODE,
我是单独写的二次boot的bootloader,

现在问题是,从bootloader 跳转 APP ,跳转不进去。

但是我用JTAG只把APP烧录进去,(boot loader区不擦除),是可以跳转的,是不是就是可以认定,跳转程序没问题,

然后用CCS 的memory save ,对比 JTAG烧写的APP FLASH区 ,和 bootloader烧写的APP FLASH区 ,两者是一样的,也就是说通过bootloader烧写flash的内容是对的

但是从bootloader烧写以后,就是不能跳转到APP

,

Susan Yang:

看您的错误提示,像是与Boot_asm文件存在冲突。请问您是否使用了TI-RTOS? 

,

NormalOne:

已经可以了,是BOOTLOADER里面,最后把ECC Enable了,

现在是把bootloader完成后 和 APP 初始化的ECC 都disable了就可以了

,

Susan Yang:

谢谢您的反馈

,

user6339213:

你好,我遇到了与你相通的问题,请问ECC disable要怎么操作?

,

NormalOne:

Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0xA;

改为

Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0x0;

,

user6339213:

谢谢,按照你的这个方法以解决问题

,

Wentao Wu:

您好!我看您的bootloader程序和APP程序是分两次烧写进dsp的,请问dsp上电后怎么判断先进入哪部分程序呢,这里是怎么判断的?还有就是您的bootloader引导程序能否分享一下?万分感谢!

赞(0)
未经允许不得转载:TI中文支持网 » 28377D 二次 boot 跳转 APP异常
分享到: 更多 (0)