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.

6678多核启动镜像搬移的问题



您好,

1、SPI 启动时,RBL会负责镜像搬移,它是按cmd中程序各段的分配情况进行搬移的吗?比如.text段放在DDR上,是不是RBL需要将.txet段的部分搬移到DDR上?

2、EMIF NOR 启动时,程序会直接跳到0x70000000处的位置执行,它是怎样执行的呢?假如在cmd中各程序段分配在L2上,对于PC指针它是否应该要跳转到对应在L2上分配的段执行,那所谓的片上执行是怎么一回事?我在0x70000000起始的位置前1k字节烧入一段搬移代码,目的是将core0的代码搬移到L2上,之后烧入core0的代码,而core1,...core7的代码分别烧在0x70100000,....0x70700000的位置上。在core0的程序中将其余各核的代码分别搬到L2,请问我该如何做搬移,需要遵照cmd的分配情况作相应的搬移吗?

3、以太网启动时,我需要将core0的代码通过网口传入从而将core0启动,之后传入其余各核的代码,同样在core0的代码内对其余各核的代码从网口做搬移,这时我又该如何搬移呢?

非常感谢!

  • 1. 不是按照cmd文件进行搬移,这样不准确,而是按照out文件格式进行搬移。out文件被解析后会变成boot table,可以根据这个table的格式进行内存搬移;

    2. 过程就如同你理解的一样,不同的是你烧写进去的不应该是out文件,一般应该是使用hex6x工具解析后的bin文件,这中类型的文件有固定的格式,你可以根据这种格式来进行内存搬移。(一般这个格式是:地址1+长度1+内容1+地址2+长度2+内容2.。。。。)如果你直接拷入out文件,那么你片上运行的代码必须解析out文件,out文件可以是ELF格式或者COFF格式。

    3. 与问题2相同。

  • King Wang1,

    您好,正如您说的烧入文件转成table格式:地址1+长度1+内容1+地址2+长度2+内容2.。。。。我只需将对应长度的内容搬移到对应的地址即可。请问该地址是否和程序中cmd文件是一一对应起来的?

    谢谢!