TI专家你好,目前在做6678的8核的加载启动工作,通过EMIF16外挂的 NORFLASH(16比特位宽-64MB容量)来启动,有几点疑问想请教下专家:
1: 如果8核的应用程序完全相同,用的同一个CCS工程编写,那么在最终固化时是不是只需要烧写两份到 NOR FLASH内去就可以?
第一份: 主核0的工程带二级bootloader asm汇编代码 和 应用程序代码
第二份: 从核1-7共用的只有应用程序的代码,不带bootloader ,
2: 主核0带二级bootloader 负责上电启动正常运行后将其他从核的代码从NOR FLASH拷贝至各自的L2 SRAM内,拷贝完后需要将从核的程序的入口地址写入到对应的MAGIC_ADDRESS内, 那是不是该写动作完成后,从核就会立即开始执行其应用程序代码,还是必须要主核发送IPC中断去触发从核唤醒从核,才能使从核从入口地址执行程序?(我的理解是此时从核都还没有执行代码,也没有配置中断相关内容,不可能响应IPC中断吧)
3: .out文件最终转换成待烧写的.bin文件需要多步操作,其中使用的hex6x.exe ,b2ccs.exe ,ccs2bin.exe这些转换工具在哪里呢,是否有官方的相关的工具链的使用说明?
4: 最终.bin 烧入FLASH时是必须按16比特位宽读写操作flash么,在上电启动时DSP从NOR FLASH读数时具体是按8还是16比特位宽呢?担心位宽搞错会影响加载
虽然对大体流程有了了解,但因为从网上查的加载步骤毕竟零碎不是特别详细,所以烦请TI专家抽空能给解答一下,多谢支持
Shine:
1. 是的,EMIF16是直接从EMIF CS2空间执行代码的,所以需要写IBL搬移core0~core7的代码
2.需要核0写其他core发送IPC中断,即写寄存器IPGR1=0x1。
3. b2ccs.exe ,ccs2bin.exe在MCSDK里mcsdk_2_01_02_06\tools\boot_loader\ibl\src\util\btoccs, hex6x.exe在CCS编译器里C:\ti\ccsv7\tools\compiler\ti-cgt-c6000_8.1.6\bin
4.EMIF16 boot是16bit位宽的,可以看一下数据手册上的2.5.3.1 EMIF16 Boot Parameter Table
Memory Width Memory width of the Emif16 bus (16 bits)
www.ti.com/…/tms320c6678.pdf
user4787357:
回复 Shine:
已经有些明白了,多谢支持!!
另外有个疑问是关于 EMIF16加载 上电启动时,GPIO 0管脚是和大小端配置的功能是复用的
如果上电时GPIO0 管脚上拉置为高电平 它是小端模式,对应的我在固化烧写.bin进 NOR FLASH的时候是不是也要按照16比特位宽 + 小端的方式往进写
eg: 0x11223344 要写入到NOR FLASH 是不是要先写 0x3344 到 地址0x70000000 再写0x1122 到 地址0x70000002
如果上电时GPIO0 管脚下拉置为低电平 它是大端模式,对应的我在固化烧写.bin进 NOR FLASH的时候是不是也要按照16比特位宽 + 大端的方式往进写
不知道我这样理解的对不对呢?
因为我看网上有的人说是上电加载启动时芯片内自带的IBL只能识别大端方式的数据,要把待烧写的数据做一个大小端的转换swap后再往进烧写。。。