请问C6678配置CMD时需要注意哪些问题?有没有官方文档?
Shine:
需要注意的是每个core LL2的地址有局部及全局地址之分,局部基地址为0x00800000开始的memory只有core可见,全局基地址为0x1n800000(n为coreID,取值从0开始)开始的memory,这是包括core及其他master都可通过全局地址进行访问。
下面是个简单的cmd文件。*Linker command file**/
-c
-heap0x41000
-stack 0xa000/* Memory Map 1 – the default */
MEMORY
{L1PSRAM (RWX): org = 0x0E00000, len = 0x7FFFL1DSRAM (RWX): org = 0x0F00000, len = 0x7FFF
L2SRAM (RWX): org = 0x0800000, len = 0x80000MSMCSRAM (RWX) : org = 0xc000000, len = 0x400000DDR3 (RWX): org = 0x80000000,len = 0x10000000
}SECTIONS
{.text:_c_int00 > L2SRAM.text:_isr> L2SRAM/* ISR CODE SPACE*/.text> L2SRAM/* CODE*/.bss> L2SRAM.data> L2SRAM/* GLOBAL & STATIC VARS*/.sysmem> L2SRAM/* DYNAMIC MEMORY ALLOCATION AREA*/.stack> L2SRAM/* SOFTWARE SYSTEM STACK*/
.cinit> L2SRAM/* INITIALIZATION TABLES*/.const> L2SRAM/* CONSTANT DATA*/.cio> L2SRAM/* C I/O BUFFER*/.testData> L2SRAM.init_array> L2SRAMtest_data> DDR3
Bess:
回复 Shine:
我把.text放到MSMCSRAM (RWX) ,烧到Flash中,程序不能正常启动,放到L2SRAM或DDR3中就能正常启动,这是为什么呢?
Shine:
回复 Bess:
flash是用来存储程序的,一般把程序从flash里搬移到L2RAM,或DDR3上运行。您是要直接在flash里运行代码?
Bess:
回复 Shine:
是把程序存储到NAND Flash里面,采用IBL NAND Flash方式启动。我用的是创龙的开发板,具体代码如何运行是不是与开发板的设计有关?
Shine:
回复 Bess:
如果您用的芯片硅版本是1.x的版本,需要用IBL来规避PLL的bug。如果是2.x的版本,不需要IBL,可以直接从nand flash启动。
processors.wiki.ti.com/…/KeystoneI_Bootloader_Resources_and_FAQ
Bess:
回复 Shine:
IBL_Build_Burn.doc文档中编译生成的 i2cparam_0x51_c6678_le(be)_0x500.out文件里面有哪些功能呢?
Bess:
回复 Shine:
如果芯片是2.x版本,可以直接从Flash启动,那么程序里面是不是要有DDR、PLL的初始化程序?如果使用IBL的话,是不是可以把DDR、PLL的初始化工作交给IBL完成,程序里面就不需要有DDR、PLL等初始化代码?
Shine:
回复 Bess:
DDR初始化配置可以在boot parameter table,然后添加到boot image里,boot parameter table的内容可以参考C:\ti\C66x MCSDK 2.1\mcsdk_2_01_02_06\tools\boot_loader\ibl\src\device\c66x\tiboot_c66x.h。具体的用法可以参考上面链接中的C6657 EVM SPI boot example with DDR initialization
Bess:
回复 Shine:
如果芯片是2.x版本,IBL也是可以使用的是吧?DDR初始化可以通过IBL,也可以通过SPI是吗?
Shine:
回复 Bess:
也可以使用IBL,DDR初始化通过IBL,SPI是硬件接口,传输数据用的。