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.

两核程序空间分配问题



各位好,28377D的两核程序单独编译,那么如何才能保证不会引起程序空间分配冲突呢?

此外,CPU1进行了FLASH初始化,CPU2还需进行FLASH初始化的过程吗?(TI的F2837xD_sci_flash_kernels 是都进行了)

将程序从FLASH拷贝到RAM1是由主CPU进行吗?(我尝试过由CPU2拷贝,则程序无法运行)两个核的CMD中SECTIONS如何分配?

谢谢大家的帮忙。

  • 两个核之间基本都是独立的,都有各自的flash和RAM,地址空间也都是一样的,所以cpu1和CPU2都有各自的cmd,而且基本一样。但分别映射到自对应的memory中,你把它理解为两个MCU来处理。

    ERIC

  • 1、正因为地址是一样的,而且又是独立编译,那么是否就会存在地址冲突的问题呢?假如CPU1的程序存放在扇区E,而CPU2的程序如果也存放在扇区E,那么由于是独立编译,那么是否会两个程序都往同一段地址空间分配呢?

    2、我尝试了下,由CPU2进行FLASH往RAM拷贝,结果程序跑飞,是不是拷贝无法由CPU2来运行?亦或是GSRAM必须先由主CPU分配给CPU2,CPU2才可以进行拷贝?

  • 1. 不会冲突,因为物理上是由两个E扇区,他们各自用。两个工程是独立编译,独立烧写,烧写在各自的flash上。而不是烧写在同一个flash上。

    2. Global RAM的权限一开始是在CPU1上的,所以你CPU1的程序要将RAM分配给CPU2,CPU2在CPU1初始化完之后才启动,这样才用的了。

    ERIC

  • 谢谢您的答疑,原来是有两个相同地址的扇区,这样就不冲突了,不过有个疑问,F28377D是只有一个flash pump,因此通过控制PUMPREQUEST寄存器来分配控制权,而F2837xD_sci_flash_kernels的例程中两个CPU程序均需进行FLASH的初始化,这是代表两个CPU都有FLASH的寄存器,需要分别初始化吗?但是没看到相关说明,麻烦解答一下,万分感谢。

  • 是的,他们都有各自的flash寄存器,但是flash Pump(类似flash控制中心)只有一个,比如CPU1要进行flash操作时,要把flash PUMP的控制权要过来,同理CPU2。

    你看一下memory的那一章。

    ERIC