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.

EVM6678 多核 SYS/BIOS疑问



现在有个疑问是SYS/BIOS在多核情况下到底是如何部署的?是一个SYS/BIOS系统运行在多个core上,还是每个core上都运行一个SYS/BIOS。其效果可不可以类比是window下的intel多核处理器?

  • BIOS目前只能支持单核,也就是每个核跑一个。

  • 谢啦!

    还想再问一下:多核Load program的时候,cmd中配置如下:

         .text 	 : >  MSMCSRAM
         .far    	 : >  MSMCSRAM
         .data   	 : >  MSMCSRAM
         .bss    	 : >  MSMCSRAM
         .cinit  	 : >  MSMCSRAM
         .cio    	 : >  MSMCSRAM
         .pinit  	 : >  MSMCSRAM
         .const  	 : >  MSMCSRAM
         .switch 	 : >  MSMCSRAM
         .bios   	 : >  MSMCSRAM
         .alignconst : >  MSMCSRAM
         .init_array : >  MSMCSRAM
         .fardata    : >  MSMCSRAM
         .neardata   : >  MSMCSRAM
         .rodata     : >  MSMCSRAM

    全部八个cores都load这个指导生成的.out文件,那么八个cores的程序会不会发生覆盖,或者八核重用一段代码?

  • 会覆盖,不能这么做,每个核自己的段必须是单独的内存段,不能像你的例子这样指定到同一个内存区间里,必须在每个cmd文件里把MEMORY分开,

    比如 core 0使用 0x0C000000-0x0C010000, core 1使用0x0C010000-0x0C020000等等,

    共享的lib库或者数据可以放在同一段Memory里面。

  • 想接着问一下:

    如果多个cores共用的都是一个project和cmd,load的时候全部load同样的.out文件,各个cores执行的功能是由coreID来区分的。

    每个core的代码都是一样的,只不过是通过if,else判断选择了不同的分支执行而已,那么即使发生覆盖,代码还是保持不变。

    那么直接将代码load到共享SRAM中作为共享代码段,所有的cores都从共享代码段开始执行,可以节省部分的内存。这种想法可不可行?会发生总线/数据竞争吗?

  • 用一个project可以,代码一样然后走分支也可以,这样的话代码段是可以共享的;但是用一个cmd比较麻烦,stack,far,bss在不同的核上要用不同的地址,否则这些数据就会冲突。