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

c6748引导问题

我写一个程序想实现,从spiflash中读取另一个程序到指定内存中,然后跳转到指定内存运行新程序,但并新程序并没有运行。可能原因是跳的内存位置不对。。。

star yin:

求助,如何编写正确的引导程序。。。。

jie li1:

基本上遇到同一个问题,我也是配置BOOT引脚,从SPI FLASH启动,放置在FLASH首地址的secondary-bootloader程序能成功运行,并将放置在FLASH的另一程序A搬运到指定位置(由A的CMD文件配置决定,并不与secondary-bootloader的CMD配置文件重叠),最后并跳转到A的DSPEntryPoint处。现在问题是如果A所代的段都分配到片内二级RAM区域时,A程序能正确执行。但是一旦将A的.txt段放在DDR2时,程序就无法执行了。将TI工作人员帮忙解决一下。另外看资料显示,执行A搬运完成后,应该将DSPEntryPoint的值赋给DSPBOOTADDR(C6748文档有关该地址说明),并执行Local Reset,才能正确执行。请问如何执行local reset?

Shine:

你好,

可以参考starterware中ubl源代码C6748_StarterWare_1_20_04_01\bootloader和下面的wiki网站介绍.http://www.ti.com/tool/starterware-c6dsphttp://processors.wiki.ti.com/index.php/C6748_StarterWare_Booting_And_Flashing#The_StarterWare_Bootloader

star yin:

回复 jie li1:

谢谢的回答,我有几个疑惑要问你一下

A程序在spiflash中存得是.bin格式,但.bin 文件的大小比.map所分配的内存小很多,如何根据.map文件搬运到指定位置,还有就是有很多段都不连续,不能一次性搬运,要一个段一个段的搬运?

Shine:

回复 star yin:

你可以参考startware bootloader, 不用自己重头写, 如果你的板子和EVM板有不一样的地方, 可以参考源代码稍做修改.

star yin:

回复 Shine:

我移植了那个bootloader,然后把程序中的各个段拷贝到相应的内存中,然后我在第二程序的入口处打了个断点,然后运行程序发现跳转不到哪里,有那些原因会导致这个结果呢?

Shine:

回复 star yin:

你跟一下bootloader代码, 看跳到哪里去了? 程序有没有正确的搬进来?

star yin:

回复 Shine:

我是把bootloader的程序移植到一个带bios的程序中,然后引导一个带bios的程序A,已经确定把A中的各个段拷贝到相应的内存中。单步调试,在跳转的时候,突然就不知道跑到哪里了

jie li1:

回复 star yin:

我使用了hex6x.exe将A.out文件转换成.bin文件,根据其文件格式,加载到片内或片外,如果加载到片内,程序A可以运行,如果加载到片外,如DDR时,程序A无法运行,转到bootload程序main()函数最后一处代码中while(1)处:

main(){

//Pseudo code to boot DSP

U32 * DSPImageOffsetU32 DSPEntryPoint= * DSPImageOffset++;DSP_Modulel_RESET();While(* DSPImageOffset++ !=0){        SectionLength = * DSPImageOffset++;       SectionAddress = * DSPImageOffset ++;       For( i = 0; i< SectionLength; i++)       {              *(U32 *)SectionAddress = * DSPImageOffset ++;       }}*(U32 *)DSPBOOTADDR = DSPEntryPoint;    //Reg:  HOST1CFG      #define HOST1CFG (*(volatile Uint32 *)0x01C14044u)DSP_Local_RESET()

//copy .bin file data from SPI FLASH to dest address according to the .bin file format while(1);}

hex6x.exe将A.out文件转换成.bin文件format

Entry Point(4 bytes)

Section 1 size(4 bytes)

section 1 dest addr(4 bytes)

section 1 datas

.

.

.

Section n size(4 bytes)

section n dest addr(4 bytes)

section n datas

0x00000000(4 bytes, End flag)

jie li1:

回复 jie li1:

我是依据这个来做的bootloader   :http://www.deyisupport.com/question_answer/dsp_arm/omap_l1x/f/54/t/5319.aspx

赞(0)
未经允许不得转载:TI中文支持网 » c6748引导问题
分享到: 更多 (0)