TI论坛
直播中

王秀珍

7年用户 1451经验值
私信 关注
[问答]

为什么5509A SPI模式下自己转换的.bin文件能烧到flash中,但程序自举失败了?

如题,程序通过SPI模式能将例程中的二进制.bin文件烧到串行flash中,并能自举,程序运行也正常,但自己通过转换的二进制文件不能自举。由于例程只提供了.bin文件,没有提供具体的转换命令,转换命令是参照资料写的。请高手过来看看指导指导。
这是转换的cmd文件,程序入口地址,通过查看map,确定是0x100没错,程序只有3k,flash用的是AT26df321.
-boot
-v5510:2
-serial8
-map bootloader.map
-e 0x100
-b
-o bootloader.bin
bootloader.out
还有个问题就是程序如果比较大,内部ram不够的情况下,加载到外部RAM中,是不是只要在程序的CMD文件中,将text段放在外部RAM的空间区域?相当与程序入口地址在外部RAM空间?
希望各位不吝赐教,谢谢!

回帖(20)

余少虹

2019-10-29 06:40:45
你写的hex cmd文件没什么问题, 查看一下HEX55.exe版本是不是2.10以上的版本?

查看一下bootloader.map, .cinit段正确吗? 工程在编译的时候不要用-cr选项.

查看一下GEL文件中对板子的初始化设置是否搬移到应用程序中?

用仿真器跟一下程序, 看是程序是否正确boot进来? 是否能从程序入口地址_c_int00开始执行? 执行到哪里出错? 

关于第二个问题, RAM不够的话, 在cmd文件中将.text段定义到外部RAM就可以了. 程序入口地址也在外部RAM空间, 你可以通过查看.map文件中的entry point address.
举报

王秀珍

2019-10-29 06:48:49
谢谢,我在好好看看!
举报

王秀珍

2019-10-29 07:01:00
引用: vuywsdfwf 发表于 2019-10-29 10:55
你写的hex cmd文件没什么问题, 查看一下HEX55.exe版本是不是2.10以上的版本?

查看一下bootloader.map, .cinit段正确吗? 工程在编译的时候不要用-cr选项.

还是没解决自举问题,hex55.exe的版本和GEL文件我都查看了没问题。难道烧写时的程序CMD像2000系列要要做相应的修改。
这是下载程序的CMD文件:
-w
-stack 500
-sysstack 500
-l rts55x.lib
MEMORY
[
PAGE 0:
MMR : origin = 0000000h, length = 00000c0h
SPRAM : origin = 00000c0h, length = 0000040h
VECS : origin = 0000100h, length = 0000100h
DARAM0 : origin = 0000200h, length = 0003E00h
DARAM1 : origin = 0004000h, length = 0004000h
DARAM2 : origin = 0008000h, length = 0004000h
DARAM3 : origin = 000c000h, length = 0004000h
SARAM0 : origin = 0010000h, length = 0004000h
SARAM1 : origin = 0014000h, length = 0005000h
SARAM2 : origin = 0019000h, length = 0003000h
]
SECTIONS
[
.vectors : [] > VECS PAGE 0 /* interrupt vector table */
.cinit : [] > SARAM0 PAGE 0
.text : [] > SARAM1 PAGE 0
isrs : [] > SARAM2 PAGE 0
.stack : [] > DARAM0 PAGE 0
.sysstack: [] > DARAM0 PAGE 0
.sysmem : [] > DARAM0 PAGE 0
.data : [] > DARAM1 PAGE 0
.bss : [] > DARAM1 PAGE 0
.const : [] > DARAM1 PAGE 0
.cio : [] > DARAM2 PAGE 0
.csldata: [] > DARAM0 PAGE 0
]
转换成BIN后生成的map文件如下:
NPUT FILE NAME:
OUTPUT FORMAT: Binary
PHYSICAL MEMORY PARAMETERS
Default data width : 8
Default memory width : 8
Default output width : 8
BOOT LOADER PARAMETERS
Table Type: SERIAL PORT (McBSP 8 bit Mode)
Entry Point: 0x00014000

OUTPUT TRANSLATION MAP
--------------------------------------------------------------------------------
00000000..00ffffff Page=0 Memory Width=8 ROM Width=8
--------------------------------------------------------------------------------
OUTPUT FILES: bootloader.bin [b0..b7]
CONTENTS: 00000000..000006b3 BOOT TABLE
.cinit : dest=00010000 size=000000de width=00000001
.text : dest=00014000 size=000005b1 width=00000001
--------------------------------------------------------------------------------
00000000..00ffffff Page=1 Memory Width=8 ROM Width=8 "*DEFAULT PAGE 1*"
--------------------------------------------------------------------------------
NO CONTENTS
从这两个文件看.cinit段好像也没问题啊。
举报

余少虹

2019-10-29 07:13:54
引用: 站着幻想 发表于 2019-10-29 11:15
还是没解决自举问题,hex55.exe的版本和GEL文件我都查看了没问题。难道烧写时的程序CMD像2000系列要要做相应的修改。
这是下载程序的CMD文件:
-w

cmd文件不用C2000那样修改, 因为C55x片上没有flash.

你的程序在仿真器下调试是通过的吧?
你是怎么执行hex cmd文件的? 从map文件看, Entry Point: 0x00014000和你hex cmd文件中的-e 0x100不符啊? 而且.vectors段也没转, 你在工程文件中.vectors段使用.sect定义成initialized section么?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分