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】如何制作带Boot Configuration Table的Boot镜像

SPI直接引导,RBL支持的Boot流程对DDR的配置只限于DDR controller的配置,并不支持DDR leveling寄存器的配置。

想要让DDR在Boot阶段能正常工作版上有帖子讨论过两种方法:

  1. 将DDR Configuration Table插入镜像时,对应的PLL参数配置使DDR工作在较低的频率;Boot流程完毕,应用程序中配置DDR leveling参数后,重新初始化DDR,让DDR工作在较高频率。
  2. 通过在镜像文件中插入Boot Configuration Table,配置对应的DDR leveling寄存器,RBL配置完这些寄存器后,开始搬运实际要加载的section,此时DDR leveling寄存器已完成配置,故DDR Configuration Table可以配置DDR为正常工作频率。

尝试的过程中遇到了些问题:

  1. 第一种方法在C6678的EVM上尝试了,并没有成功。我会考虑继续尝试,同时如果能够得到成功的demo的话最好。
  2. 第二种方法在制作带Boot Configuration Table的Boot镜像时,不知如何操作,不知道有没有人成功?这个方法在RBL user guide中有说明,但只是介绍了功能原理,以及Boot Configuration Table的形式,并没有介绍该如何制作这种镜像,或者说并没有介绍该如何将自己写好的Boot Configuration Table插入到现有的boot table前。目前的想法如下:
    1. Boot Configuration Table的形式是知道了,自己可以对照写出一张配置表。使用b2i2c.工具转换成RBL识别的形式,使用b2ccs转换成.ccs文件
    2. 添加option对应为Boot Configuration Table的Boot parameter table,并在Boot parameter table中指定实际的Boot Table存放位置
    3. 转换成大端格式,生成A.dat文件
    4. 应用程序.out使用hex6x工具生成Boot Table,并添加DDR Configuration Table(EMIF controller)
    5. 通过b2i2c.工具转换成RBL识别的形式,通过b2ccs转换成.ccs文件
    6. 添加option对应为Boot  Table的Boot parameter table
    7. 转换成大端格式,生成B.dat文件
    8. 将两个.dat文件合并成一个(C.dat),并根据A.dat中Boot parameter table中指定的Boot Table存放位置,放置B.dat文件

不知道想法是否合理,有没有什么不能实现的地方?