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

C6701 关于二次boot的疑问

本人目前碰到一个问题:使用HPI boot方式启动C6701 Dsp,C6701内部的程序存储器只有64kb,而我们的代码有600多kb;在论坛里找到了一下资料,这种情况需要二次boot。但是本人有些疑惑,就算是二次boot,C6701的内部程序存储器只有64k,就算加上内部数据存储器也才128Kb,根本就容纳不了代码。这种情况,我想是否是可以直接将代码从flash中搬移到外挂RAM中,然后将外挂RAM地址映射到0x00000000中呢?

另外,使用HPI 二次boot是否需要在host上运行初始化EMIF接口,IDMA外设等等,用来将代码从flash中搬移到外挂RAM中呢?

Shine:

二次boot代码一般不大,可以在片上运行。600多K代码片上放不下,那要放到外挂RAM中运行,这个可以由二次boot代码从主机通过HPI加载到外挂RAM中。

如果600多K代码是烧写到片外flash中,也是要用二次bootloader程序去搬移,对EMIF口等进行初始化。可以参考下面的二次bootloader应用报告。
www.ti.com/…/spra999a.pdf

Gangping Li:

回复 Shine:

我们自己的600多k代码烧写到flash中也需要二次bootloader程序来搬移吗?难道不是直接通过flash烧写程序进行烧写就可以吗?我的思路是将二次boot程序(汇编代码)和自己的代码(C代码)作为一个工程,在cmd文件新建段来指定二次boot程序放在flash中的前64k空间,而将自己的代码的各个字段放在flash的baseAddress + 0x00010000之后;然后因为C6701的IPRAM只有64K,所以希望在boot程序中对EMIF进行初始化,同时设置好Main函数的run地址,这样在C6701 DSP reset的时候首先C6701会自动将flash中的二次boot程序搬移到IPRAM中,并且执行,执行完二次boot程序后相当于做了三件事:1、初始化好了EMIF接口,2、600k代码搬移到外挂RAM中,3、告诉程序指针指向这600k代码的main函数地址开始执行。不知道我这个思路是否正确呢?另外将程序指针指向外挂RAM中运行代码是否可以执行。谢谢 Shine

Gangping Li:

回复 Shine:

Shine ,你好。将600多k代码烧写到片外flash中也需要二次bootloader程序搬移吗?不是可以直接通过flash烧写程序就可以烧写吗?

我的思路是将二次boot代码(汇编代码)和600多k代码(C代码)放在一个工程中,在CMD文件中创建段来指定二次boot代码放在flash的前64k空间中,而600多代码放在flash的64k之后,在C6701 DSP reset之后开始将flash中前64k代码搬移到C6701的内部程序存储器中,并执行;在执行完成后,就相当于做了三件事:1、初始化EMIF,2、搬移flash中600多k代码到外挂RAM中,3、将程序指针指向600多k代码中的main函数地址(外挂RAM中的地址),这样就进入main函数中执行我们自己的代码了。不知道这样的思路是否有误,总觉得将程序指针指向外挂RAM上之后DSP不会运行。请各位TI工程师加以指点,谢谢了哈。

Gangping Li:

回复 Shine:

嗯嗯,谢谢Shine哈

Gangping Li:

回复 Shine:

Hi,Shine, 昨天把二次boot的整体思路整理了一下,今天对于HPI二次boot的一些细节部分有些疑问。

首先我们这边准备使用HPI二次boot,根据C6701的Bootconfiguration文档说明使用HPIboot方式,在HPIboot方式下,首先DSP是停止工作
的,这时需要Host通过HPI对CPU所有的内存空间(包括内部寄存器配置,EMIF接口等外设配置),然后设置DSPINT完成boot配置,之后才是开始引导过程;而根据spra999a.pdf文档,二次boot代码和用户程序是放在一个工程下的,编译后将.out文件转为Hex后烧入flash的

可能是本人对HPI不是很熟悉,综合两个文档的分析,我的初步理解是在Host上对DSP的EMIF接口,时钟等等外设配置好,二次boot代码实际上是放在外挂flash中的,二次boot代码只实现一个搬移用户程序的功能和将程序指针指向用户代码的main函数地址上(即在引导过程时,首先二次boot代码被搬移到address 0 被执行,执行二次boot代码时就把用户程序搬移到外挂的SDRAM中)。

1、请教一下Shine,如果具体到HPI二次boot方式上,本人的这种理解是否正确呢?

2、根据spra999a.pdf文档,如果要编写二次boot程序,总共需要三个文件(boot_C671x.s62,c6713_Emif.s62,boot_c671x.h62),其中boot_C671x.s62为二次boot程序文件,我查看了一下这个文件里面对EMIF寄存器进行了配置。如果是HPI二次boot方式,按照我上面的思路,实际上Host可以通过HPI接口直接对DSP的外设进行配置,那么二次boot程序中是否就可以不需要用汇编来配置EMIF接口等等外设呢?

赞(0)
未经允许不得转载:TI中文支持网 » C6701 关于二次boot的疑问
分享到: 更多 (0)