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.

F2812 外部 SCI boot 升级无法正常运行,请指教

        为了能更清楚的摸清楚原理,我准备了两个程序,一个测试程序:只有一个简单的中断,让LED高速闪烁,bin文件大小只有4K;另一个项目程序:上面包含大量的驱动,bin文件大小为64K。

        现在的情况是,先对测试程序进行升级,升级地点为外部RAM,从0x010000开始,上位机波特率为1200bps,缓冲区大小为256 bytes,好像高于这个配置,数据包就会丢失,这个暂时先不管了,估计到下位机与下位机时,情况能改善。 升级完成后,程序返回入口地址,入口地址与map文件中的入口地址进行比较,发现是一样的,结果,测试程序能够正常运行。

        之后,再对项目程序进行升级,基本配置与测试程序一样,然后,查看升级区域,明确数据已经正确写入外部RAM,但是,程序一直卡在如下这段汇编中:

3FFCF3 CC1C AND AL,@28,#0x8000
3FFCF5 FFCE LSR AL,15
3FFCF6 5201 CMPB AL,#1
3FFCF7 EDFC SBF -4,NEQ                                                                                                                                                                                                                                               

表示入口地址没起作用,但是,我查看了入口地址,它确定如map文件所给的入口地址是相同的,结果,程序就是无法进行跳转。

        然后,我查看了SCI boot的map文件,好像也没有问题,现在,我不知道该从哪里下手来解决这个问题,map文件如下:

********************************************************************************
TMS320C2000 COFF/Hex Converter v4.1.3
********************************************************************************

INPUT FILE NAME: <e343.out>
OUTPUT FORMAT: Intel

PHYSICAL MEMORY PARAMETERS
Default data width : 16
Default memory width : 8 (LS-->MS)
Default output width : 8

BOOT LOADER PARAMETERS
Table Type: SERIAL PORT (SCI 8 bit Mode)
Entry Point: 0x000a2b86


OUTPUT TRANSLATION MAP
--------------------------------------------------------------------------------
00000000..003fffff Page=0 Memory Width=8 ROM Width=8
--------------------------------------------------------------------------------
OUTPUT FILES: e343.hex [b0..b7]

CONTENTS: 00000000..0001051f BOOT TABLE
codestart : dest=00000000 size=00000002 width=00000002
.text : dest=000a0000 size=0000447e width=00000002
.cinit : dest=000a447e size=00002303 width=00000002
.econst : dest=000a6782 size=00001420 width=00000002
ramfuncs : dest=000a7ba2 size=00000549 width=00000002
.const : dest=000a80ec size=00000161 width=00000002
.switch : dest=000a824e size=00000022 width=00000002

--------------------------------------------------------------------------------
00000000..003fffff Page=1 Memory Width=8 ROM Width=8 "*DEFAULT PAGE 1*"
--------------------------------------------------------------------------------
NO CONTENTS

  • 补充:

    (1)

    3FFCF3 CC1C AND AL,@28,#0x8000
    3FFCF5 FFCE LSR AL,15
    3FFCF6 5201 CMPB AL,#1
    3FFCF7 EDFC SBF -4,NEQ  

    上面这段为自动波特率设置,也就是需要输入‘A’或者‘a’进行波特率锁定,但是,实际情况是,我在升级之前已经进行过一次锁定,升完之后难道又跳回0x3FFC00?

    (2)

    cmd文件:

    prj.out

    -i
    -o prj.hex
    -map prj.map
    -boot
    -sci8