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.

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:
 
会不会是因为这里导致的?
烦请指导一下

 



  • 关于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工程

  • 例程里面是需要硬件修改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
  • 看您的错误提示,像是与Boot_asm文件存在冲突。请问您是否使用了TI-RTOS? 

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


    现在是把bootloader完成后 和 APP 初始化的ECC 都disable了就可以了
  • 谢谢您的反馈
  • 你好,我遇到了与你相通的问题,请问ECC disable要怎么操作?

  • Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0xA;

    改为

    Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0x0;

  • 谢谢,按照你的这个方法以解决问题
  • 您好!我看您的bootloader程序和APP程序是分两次烧写进dsp的,请问dsp上电后怎么判断先进入哪部分程序呢,这里是怎么判断的?还有就是您的bootloader引导程序能否分享一下?万分感谢!
x 出现错误。请重试或与管理员联系。