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.

急!C28346通过XINTF从外部Flash boot程序问题



最近在调试自己做的C28346的板子,我是通过XINTF从外部Flash在DSP上电的时候boot程序。我的bootmode选用的是1001 jump from XINTF16模式,外部Flash用的是SST39VF800,我将外部Flash映射到zone6。

现在的问题是这样的:

在程序进行烧写的时候我通过CCS的view->memory查看Flash里面的数据(从0x100000开始查看),可以看到写到里面的数据时正确的。但是,在对Flash写完之后重新上电程序不能boot到内部ram中?急求各位支招解决啊!

PS:我之前用的是SSD(索思达)的开发板做的,我的外部Flash的连接跟SSD的是一样的,我的程序在SSD的开发板上没有任何问题。我自己的板子在线仿真没有问题,现在就是不能从外部Flash boot程序这一个问题了。跪求大神指点思路啊!

  • 与XINTF复用的GPIO引脚上电默认是GPIO而不是XINTF,请确保在芯片复位后的codestartbranch.asm文件里已经将对应的GPIO初始化为XINTF.

  • 我codestartbranch.asm文件里面的程序是这样子的,将对应的GPIO初始化为XINTF应该是该那句呢?之前没有看过汇编的,一直用的C,谢谢!

    我现在的程序在之前SSD的开发板上是可以在线仿真,也可以boot!

    ***********************************************************************

    WD_DISABLE .set 1  ;set to 1 to disable WD, else set to 0

        .ref _c_int00
        .global code_start

    ***********************************************************************
    * Function: codestart section
    *
    * Description: Branch to code starting point
    ***********************************************************************

        .sect "codestart"

    code_start:
        .if WD_DISABLE == 1
            LB wd_disable       ;Branch to watchdog disable code
        .else
            LB _c_int00         ;Branch to start of boot.asm in RTS library
        .endif

    ;end codestart section


    ***********************************************************************
    * Function: wd_disable
    *
    * Description: Disables the watchdog timer
    ***********************************************************************
        .if WD_DISABLE == 1

        .text
    wd_disable:
        SETC OBJMODE        ;Set OBJMODE for 28x object code
        EALLOW              ;Enable EALLOW protected register access
        MOVZ DP, #7029h>>6  ;Set data page for WDCR register
        MOV @7029h, #0068h  ;Set WDDIS bit in WDCR to disable WD
        EDIS                ;Disable EALLOW protected register access
        LB _c_int00         ;Branch to start of boot.asm in RTS library

        .endif

    ;end wd_disable

     

     .end
     
    ;//===========================================================================
    ;// End of file.
    ;//===========================================================================

  • MOVZ DP, #7029h>>6  ;Set data page for WDCR register

    MOV @7029h, #0068h  ;Set WDDIS bit in WDCR to disable WD

    这两句话是对0x0729地址的寄存器WDCR进行初始化的语句,你可以参考这个方式对XINTF所在的GPIO口进行对应的初始化。