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 bootloader的问题



你好!

看了bootloader 的user guide,有以下几个问题,不太明白,望解答,谢谢。

1.厂家固化的bootloader程序主要完成对8个核一些初始化配置工作,除此之外,对core0来说,bootloader还有一些搬移程序的功能,对其他core来说,进行初始化配置工作后,进入空操作和等待状态。不知这样理解是否正确。

2.如果所有核运行同一个工程,那这个工程对应的.out文件要被下载到8个核中。这下载这一步是在固化的bootloader里面运行的吗?

3.Nor Flash是不是只能挂在EMIF口的CE2空间,如果是,boot配置成EMIF Boot模式时,程序直接从CE2空间启动,也就是从地址0x78000000启动,是这样的吗?

  • xue huang

    1  对于SRIO和EMAC等采用搬移程序的方式进行的boot mode,你理解是正确的,比如以SRIO DIO BOOT为例,CORE0 完成下载后,会给其他core 发出release信号,这个通知过程是由application的程序实现的。

    2   对于一级boot 基本是如此。补充下,对于8个core 运行同一工程,建议代码段可以共享,对于栈或者bios中维护操作系统运行的相关段等可以放到各自的L2中。需要你在系统设计中具体考虑

    3  地址应该是0x70000000,

    谢谢!

  • Thomas Yang

    1、我是指固化的bootloader。

    2、如果是这样,似乎与我提到的第一点有点矛盾。第一点的意思只有core0进行程序搬移,而第二点的意思是8个核都要进行程序搬移。

    3、是不是意味着Nor Flash要挂在Emif cs2空间。

    谢谢!

  • 这几天看bootloader相关的东西,又有几个新的问题,麻烦一并解答。

    1. IBL其实就是实现程序搬移的功能,是这样吗?

    2. IBL是不是只能用于6678开发板上的硬件连接情况,也就是,Nor flash接在SPI,Nand Flash接在EMIF口。如果不是这样连接,IBL并不适用或者要做相关修改。

    3. 对于SPI接Nor Flash的情况,为什么不以SPI BOOT的方式加载,而要通过I2C BOOT的方式加载呢?

    4. 什么情况下用I2C BOOT方式加载呢?是否是需要修改设定的初始化配置的时候?

    5. 如果SRIO接FPGA,那还能用SRIO BOOT的加载模式吗?

    6. 如果EMIF接Nand Flash,则不能配置成EMIF BOOT的方式?

    因为初步接触C6678 的BOOT,问题有点多,烦请解答,谢谢。

  • 您好,

    1. IBL中主要完成的是PLL fix,关于PLL fix具体请参考www.deyisupport.com/.../5720.aspx

    2. 如果更换板子的话IBL需要做相应的修改;

    关于IBL可以参考MCSDK中的相关源码,了解其具体实现的功能。

    3. I2C boot存在的原因主要是因为PG1.0芯片中的rom code存在bug,需要通过I2C boot修复,然后再进入相应的boot方式,在后续PG2.0的版本就可以根据boot方式选择是否需要I2C boot;

    4. 如果是需要做二次加载的话可以通过I2C boot;

    5. 可以;

    6. EMIF接NorFlash时才可以用作boot。

  • 您好!

    再请解答下上次回复的这几个问题,谢谢。

    1、我是指固化的bootloader。

    2、如果是这样,似乎与我提到的第一点有点矛盾。第一点的意思只有core0进行程序搬移,而第二点的意思是8个核都要进行程序搬移。

    3、是不是意味着Nor Flash要挂在Emif cs2空间。

  • Xue huang,

    1. ROM bootloader 是否搬移数据是由你的BOOT模式决定的,比如EMAC/SRIO boot, ROM bootloader会接收通过该外设发送来的boot table,并将各个数据段放到对应的memory中. 而EMIF16 boot/NOR flash boot,ROM bootloader不需要搬移任何的数据,因为NOR flash是XIP(execute in place)设备。ROM bootloader做完基本初始化以后,直接跳转到NOR flash的起始地址开始运行。(C6678的NOR flash boot起始地址为0x70000000)

    2. 如果所有的核跑一样的程序,不必将代码段放到各自的LL2中,这样有8份相同的拷贝,太浪费片上内存。可以将代码段放到SL2中,这样只需要download一次,所有的核共享该代码段,省下宝贵的片内内存。

    3. 如果你要在C6678上做EMIF16/NOR flash boot, NOR flash应该挂在EMIF CS2空间(70000000~73FFFFFF)

  • 同求一个C6678 EMIF16 NOR FLASH 引导的工程,邮箱tangbo611@hotmail.com

  • Marvin Liang  , 您好!请问你几个问题!

    1. 如果我把代码段放到SL2中,而Stack放到各自的L2中,那么8个核的CMD文件就不一样了,是不是我需要建8个不同的工程,虽然他们的代码是一样的?

    2. 如果我还是把代码段放到L2中,也就是8个核共用一个工程,他们的代码以及内存分布也完全一样,最终只有一个OUT文件,那么我将它烧到FLASH中后,bootloader会把它搬移到所有8个核中么?采用SPI+NOR的BOOT方式。

    谢谢!