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

C6455 flash外部启动问题

问题表述:
1,我使用的TI C6455芯片,最高主频是1000KHZ的,我采用的是C6455 EMIF 8位 ROM启动方式,DSP工程是带有DSP/BIOS系统的。DSP的执行文件下载到IRAM L2中的。

问题:
1,在EMIF 8位 ROM启动的时候。C6455芯片在上电的时候会从CE3中(也就是FLASH的映射地址)读取1K的数据吗?
也就是C6455是否有一段固化的bootloader代码。我在官方文档上没有发现这个部分的说明,但是在一些使用者的技术资料上说的是可以。

2,在上电的时候,C6455的C环境初始化是否创建完成,也就是说写bootloader的二次加载代码的时候是否可以用C语言来写,还是说只能用汇编?

3,由于我的程序是带有dsp/bios的,所以在二次加载代码前应该有一段代码用于启动DSP(主要是PLL1,EMIF,DDR2等),这样
二次加载代码拷贝可执行文件并执行后,bios才能启动,main函数才能执行。请问有类似的二次加载代码的例程吗?

4,如果方便的话,请给我一个C6455的EMIF 8 位 ROM启动的例程。

Shine:

1.EMIFA 8-bit ROM boot mode是一个hardwarw boot, 直接跳转到EMIFA CE3 (0xB000 0000)地址处开始,不搬移代码。

2. c语言环境的初始化是在_c_int00中完成,因为二次bootloader代码在应用程序(_c_int00)之前运行,所以二次加载代码需用汇编写。 3.4,  二次加载代码的写法,可以参考下面的应用文档。http://www.ti.com/lit/an/spra999a/spra999a.pdf

Stephen chen:

回复 Shine:

你好:     文档里提到:

”C6000 DSPs offer three types of boot configurations: no boot process, ROM boot process, and host boot process“。

“When ROM boot is selected as the boot configuration, 1K byte (on C621x/C671x/C64x) of code will automatically be copied from CE1 to address 0”。

在spruec6g中,也就是《TMS320C645x/C647x DSP Bootloader User Guide》中,提到C6454/55的boot方式有:

1、no boot,直接从地址为0x80_0000的L2启动

2、Host boot

3、EMIFA boot,从地址为0xB000_0000的CE3启动。

4、I2C EEPROM boot

5、I2C slave boot

6、SRIO boot

问题:

1、ROM boot 包含EMIFA boot和两种I2C boot吗?我理解应该是的,不知道是否正确

2、第一个文档里提到的是从CE1加载,而且只能是1K大小的代码。可是在第二个文档里CE的范围是从2~5,并没有CE0和CE1。

3、第二个文档里说的EMIFA boot时,是从CE3加载,跟第一个文档不一致,请问是什么原因?

4、在EMIFA boot时,程序不搬运到L2或者DDR吗?是在EMIFA中运行吗?

5、什么是hardware boot?还有软件boot吗?

谢谢!

Shine:

回复 Stephen chen:

1. 是的,ROM boot支持多种boot方式,包括EMIFA和I2C boot方式。2. 3,第一个文档是针对c67x, c64x老的C6000器件,C6455有专门的boot文档,以spruec6g为准。4. EMIF boot模式,没有程序搬移,直接从CE3(0xB000 0000)开始执行.5. Hardware boot是硬件搬移代码,不需要软件搬,像第一个文档里的EMIF boot, 1K搬移就是硬件EDMA搬的。

Stephen chen:

回复 Shine:

Shine你好:

还有几个问题:

1、 6455在EMIF boot模式下,程序直接从CE3开始执行。那是不是就不用自己编二次加载代码了?

2、程序运行在外部Flash,会影响速度吧?是不是最好将其搬运到L2或者DDR中呢?

3、程序运行在外部Flash,数据和变量之类的应该是存在内存里的吧?这个时候的cmd文件有什么特殊要求吗?

4、如果想把程序搬运到内存当中运行,是不是就按第一个文档编写二次加载代码?

5、烧录flash的时候,使用http://c6000.spectrumdigital.com/dsk6455/v2/例程里,flashburn程序是否可以?

6、参考c6678,6455的烧录我的理解是这样的:

    a、将工程的out文件转换为bin文件

    b、将boot mode改为no boot

    c、运行ccs,将flashburn目录下的FBTC645x.out加载进去。然后把bin文件用load memory的方式,将CE3(0xB000 0000)的区域填充。load完毕后,运行。

    d、重新上电,并在重新上电前将boot mode更改为EMIF boot

不知这样的步骤是否正确?

7、现在手上原有的工程文件的是ccs3.3生成的,并且我看dsk6455的例程也是ccs3.3下的。我用的是ccs5.4,如果直接用“import from legacy ccs3.3 project”是否可以?是不是最好用ccs3.3?这两个版本可以同时安装吗?

谢谢!

Shine:

回复 Stephen chen:

1.一般还是会用二次加载代码,因为外部flash的速度慢。2. 你的理解正确。3. 建议放在RAM中运行。4. 是的。5.6 flashburn免费版本只能烧写DSK/EVM板,如果是自己的板子,建议自己编写flash烧写程序。7. 都可以,不管是CCS3.3还是CCS5.4, 只要都能调试通过就可以。

赞(0)
未经允许不得转载:TI中文支持网 » C6455 flash外部启动问题
分享到: 更多 (0)