各位TI工程师,你们好。前天请教了一下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接口等等外设呢?
Shine:
看了一下HPI boot文档,像您说的HPI boot之前可以去配置EMIF寄存器,所以就不需要二次bootloader来初始化EMIF后再去搬移代码。
www.ti.com/…/spru642
Gangping Li:
回复 Shine:
嗯嗯,好,谢谢Shine。
Gangping Li:
回复 Shine:
嗯嗯,好,谢谢Shine。
Gangping Li:
回复 Shine:
看了这么多文档,发现自己对二次flash引导,HPI二次引导有点混乱了。查看了一下文档www.ti.com/…/spra512.pdf,看到了可以使用HPI MAP0方式,因为程序是600多k,所以C6701 DSP内存是肯定放不下的,而这种方式直接就把DSP外挂的SDRAM地址映射到0x00000000中,那么如果使用这种方式,DSP地址会自动映射到外挂的SDRAM上,Host只需要将EMIF配置好,并且把代码搬移到外挂的SDRAM就可以。