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

6678 EMIF16 Nor Flash boot

(板子是6678,bootloader方式是EMIF16+Nor Flash,flash芯片为s29gl01gp13ffiv2)
我现在使用的是8核的6678,每个核有一个out文件,总共有8个out文件,使用如下的命令,将8个out文件转换为8个bin,然后将这8个bin文件通过EMIF口写入flash中,用于DSP boot使用。

out文件转化为bin文件:
copy "D:\ti\ccsv5\tools\compiler\c6000_7.4.1\bin\hex6x.exe" .\
copy "D:\ti\mcsdk_2_00_09_21\tools\boot_loader\ibl\src\util\btoccs\b2ccs.exe" .\
copy "D:\ti\mcsdk_2_00_09_21\tools\boot_loader\ibl\src\util\btoccs\ccs2bin.exe" .\

::copy ..\*.out .\
::rename *.out app.out
::pause

hex6x app.rmd
b2ccs.exe app.btbl app.ccs
ccs2bin.exe app.ccs app.bin
del -f *.btbl *.ccs
del -f *.exe app.out

out文件转化为bin文件时使用的app.rmd文件:

app.out
-a
-boot
-e _c_int00
-order L

ROMS
{
ROM1: org = 0x0C000000, length = 0x400000, memwidth = 32, romwidth = 32
files = { app.btbl } 
}

由于8个核的代码量大,不能都放在L2SRAM上,所以有部分代码放在DDR3上,所以在boot时需要在使用DDR3之前配置。所有应用代码都需要复制到DSP上运行。

boot思路是:

1、boot.asm:包括用于配置EMIF16、DDR3和复制三级boot工程代码到DDR3上的代码,boot.asm数据放在flash的0x70000000开始地址,(说明:boot.asm数据超过了1KB;)

2、三级boot工程:配置8个核的boot table

3、bin文件烧录工程:将boot.asm的bin文件、三级boot工程bin文件、8个核的bin文件按照顺序复制到Flash中;

boot顺序:RBL读取boot.asm执行,然后将三级boot工程数据复制到DDR3上运行,三级boot工程将8个核复制到DSP相应的空间中运行,最后转到核0的代码开始处

问题:
1、在app.rmd文件中,org是指flash地址,8个out文件都是通过上面的命令转化生成8个bin文件,并且用的是同一个app.rmd文件,在app.rmd文件中org=0x0c000000,这个org地址具体用于什么?8个bin文件放在flash的8个不同的地址上,依次放在0x70020000、0x70021000、0x70022000、0x70023000、0x70024000、0x70025000、0x70026000、0x70027000,搞不清楚org在DSP bootloader时起什么作用,与bin文件实际放在flash的地址有什么关系?对于bootfloader,org地址可以任意写么?
2、在app.rmd文件中,length也是一样的问题,不知道实际用处和意义,跟实际代码长度什么关系?
3、在app.rmd文件中,memwidth是指EMIF口的位宽,6678的EMIF口都是16位的位宽,为什么看到有人将memwidth设置为32?正如我上面例程(app.rmd)写的一样。并且我在spru186w文档中11.3.2节第一段看到“Memory width is the physical width (in bits) of the memory system. Usually, the memory system is physically the same width as the target processor width: a 32-bit processor has a 32-bit memory architecture. However, some applications require target words to be broken into multiple, consecutive, and narrower memory words.”,这句话说memwidth和processor的位宽相同,6678的位宽为32吧,所以memwidth也为32,跟6678的EMIF口位宽(即memwidth的位宽)为16矛盾了 ,所以这里可解释一下么?没搞清楚。
4、在app.rmd文件中,romwidth为flash的位宽,那例程中romwidth=32,而实际用的flash是16位的,这个怎么解释呢?可以这样用?
5、使用EMIF16+Nor flash,boot loader时需要将应用代码(核0~7代码数据)复制到DSP上来运行,需要在flash的前1KB空间(地址是0x70000000)上放入boot.asm文件数据(主要是配置外设寄存器和复制应用程序的代码),但是在实际中boot.asm的大小超过了1KB(因为需要配置DDR3,boot.asm大小超过了1KB),如果将超过1KB大小的boot.asm数据放入flash的0x70000000上,长度为数据实际长度,这样还能正常引导应用程序搬移和运行吗?(flash挂在DSP6678 EMIF16的CE0口上)
6、在dsp bootloader时,EMIF16+Nor flash方式,boot用到了DDR3空间,在boot.asm中,要配置DDR3、EMIF16,我的问题是还需要配置Main PLL么?SRIO配置是不是在核0程序中配置就行,需要在bootloader时配置么?(SRIO在这种boot方式下应该没有用到)

zhiyuc:

没有人解答么?

user6027759:

回复 zhiyuc:

你好,请问你最后解决问题了吗?

user6027759:

回复 zhiyuc:

你好,请问最后emif启动成功了吗?

赞(0)
未经允许不得转载:TI中文支持网 » 6678 EMIF16 Nor Flash boot
分享到: 更多 (0)