This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6678 EMIF16 NORFLASH多核加载启动的问题

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专家抽空能给解答一下,多谢支持

       

  • 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
  • 已经有些明白了,多谢支持!!

    另外有个疑问是关于 EMIF16加载 上电启动时,GPIO 0管脚是和大小端配置的功能是复用的

    如果上电时GPIO0  管脚上拉置为高电平 它是小端模式,对应的我在固化烧写.bin进 NOR FLASH的时候是不是也要按照16比特位宽 + 小端的方式往进写

                  eg:  0x11223344 要写入到NOR FLASH               是不是要先写 0x3344   到 地址0x70000000    再写0x1122  到 地址0x70000002

    如果上电时GPIO0  管脚下拉置为低电平 它是大端模式,对应的我在固化烧写.bin进 NOR FLASH的时候是不是也要按照16比特位宽  + 大端的方式往进写

    不知道我这样理解的对不对呢?

    因为我看网上有的人说是上电加载启动时芯片内自带的IBL只能识别大端方式的数据,要把待烧写的数据做一个大小端的转换swap后再往进烧写。。。