工具/软件:
我正在使用 cache_wbL1d 和 cache_invL1d 在没有 BIOS 的情况下使用双核。 如何修改此引导代码?
我可以使用这个源 https://github.com/rk4526/EMIF16-flash-DualCore.git 来写入闪存吗?
#include
#include
#include
包含“ti/csl/csl_chip.h"</s>“
#include “ti/csl/cacheAux.h"</s>“
define SHARED_MEM_BASE 0x0C000000
2700
#define SHARED_MEM_ADDR (SHARED_MEM_BASE + SHARED_MEM_OFFSET)
#define BUFFER_SIZE 4096
// IPC 寄存器宏
#define IPCGR1 (*(volatile uint32_t *) 0x02620244U)
#define IPCAR1 (*(volatile uint32_t *) 0x02620284U)
typedef 结构{
易失性 uint32_t 标志;
易失性 uint32_t 大小;
volatile char buffer[BUFFER_SIZE];
} SharedPacket;
Volatile SharedPacket* Shared =(SharedPacket*)SHARED_MEM_ADDR;
//简单的起搏
void short_delay (){
Volatile int i;
对于 (I = 0;I < 100000;I++){}
}
void sendFromCore0 (uint32_t id){
shared->size = snprintf((char*) shared->buffer、buffer_size、“Hello from CORE0: MSG %u“、id);
shared->flag = 0xA5A50000 | id;
cache_wbL1d (void *) shared、sizeof (SharedPacket)、cache_wait);
IPCGR1 = 1;//触发 CORE1
printf(“[C66xx_0] sent msg %u:\“%s\"\n",“,id“id,、,shared->buffer、shared->buffer );
}
void waitReplyCore0(){
while (1){
CACHE_INVL1d (void *) shared、sizeof (SharedPacket)、cache_wait);
if (shared->flag =0) break;
short_delay ();
}
printf(“[C66xx_0]获得回复:\“%s\"\n",“,共享“共享->、->缓冲区);
}
Void handleCore1(){
CACHE_INVL1d (void *) shared、sizeof (SharedPacket)、cache_wait);
如果 (shared->flag !=0){
uint32_t msgid = shared->flag 和 0xFFFF;
printf(“[C66xx_1]获得 msg %u:\“%s\"\n",“,msgid“msgid,、,共享、共享->缓冲区);
snprintf((char*) shared->buffer、buffer_size、“Core1 ACK: msg %u“、msgid);
shared->size = strlen ((char*) shared->buffer);
shared->flag = 0;
cache_wbL1d (void *) shared、sizeof (SharedPacket)、cache_wait);
}
}
void main(){
uint32_t coreNum = CSL_chipReadReg (CSL_CHIP_DNUM);
uint32_t count = 0;
if (coreNum == 0){
printf(“[C66xx_0] CORE0 starting……\n“);
while (1){
sendFromCore0 (count);
waitReplyCore0();
count++;
//short_delay ();
}
}其他{
printf(“[C66xx_1] Core1 ready……\n“);
while (1){
//如果 (IPCGR1 和 1){
// IPCAR1 = 1;//确认
handleCore1();
//}
}
}
while (1);//从不退出
}
内存{
MSMCSRAM (RWX):origin = 0x0C000000、length = 0x00080000 /* 512KB Shared */
L2SRAM (RWX):origin = 0x00800000、length = 0x00080000 /* 512KB 本地*/
L2SRAM2 (RWX):origin = 0x00880000、length = 0x00080000 /* 512KB Local */
}
Sections{
.text > L2SRAM
.stack > L2SRAM
.bss > L2SRAM
.const > L2SRAM
.cinit > L2SRAM
.pinit > L2SRAM
.data > L2SRAM
.fardata > L2SRAM
.sysmem > L2SRAM
.sharedPacket > MSMCSRAM
.boot_load:load > MSMCSRAM、align (0x100)
}

