您好!
我正在尝试测试一个简单的多核应用、其中主内核和第一个次级内核都向 UART 打印一些内容。 我使用 MAD 实用程序(预链接器旁路模式)构建了.bin 文件。 我在两个内核上运行相同的应用。 以下是我的代码:
void main (空 main)()
{
platform_init_flags init_flags;
platform_init_config init_config;
char version_msg[]="\r\n\r\nEMAC Boot Over I2C 示例版本";
char boot_msg[]="\r\n\r\n 通过 IBL 通过 I2C 0x51从 EMAC 启动 Hello World 映像...";
uint32_t core_num;
int i;
core_num = platform_get_CoreID ();
if (core_num = 0)
{
printf ("%s%s%s\n"version_msg、version);
//初始化主平台库
memset (init_config、0、sizeof (platform_init_config));
memset (init_flags、1、sizeof (platform_init_flags));
init_flags.pll = 0;
init_FLAGS.DDR = 0;
if (platform_init (&init_flags、&init_config)!= platform_eok)
{
printf ("平台初始化失败!\n");
print_platform_errno();
返回;
}
platform_UART_init();
platform_UART_set_baudate (boot_UART_BAUDRATE);
Write_UART ("\n\n 引导内核0...");
WRITE_UART (VERSION_msg);
WRITE_UART (版本);
printf ("%s"、boot_msg);
WRITE_UART (BOOT_msg);
对于(I = 1;I < 2;I++)
{
WRITE_UART ("正在唤醒内核1...");
//解锁 kicker 寄存器
DEVICE_REG32_W (KICK0、0x83e70b13);
DEVICE_REG32_W (KICK1、0x95a4f1e0);
//device_REG32_W (boot_magic_ADDR (i)、(uint32_t)&_c_int00);
DEVICE_REG32_W (boot_magic_ADDR (i)、(uint32_t) write_boot_magic_number);
platform_delay (1);
DEVICE_REG32_W (IPCGR (I)、1);
platform_delay (1000);
}
}
其他
{
write_boot_magic_number ();
}
while (1);
}
void write_boot_magic_number (void)
{
uint32_t core_num;
core_num = platform_get_CoreID ();
if (core_num = 1)
{
Write_UART ("\n\nHello World from secondary core 1...");
}
while (1);
}
我遇到的问题是、当我为 EVM 通电(使用 TFTP 引导)时、只有主内核将消息输出到 UART。
正在引导内核0...
通过 I2C 引导 EMAC 示例版本01.00.00.00
通过 I2C 0x51上的 IBL 从 EMAC 启动 Hello World 图像...正在唤醒内核1...
我看不到来自内核1的消息。
我是否遗漏了什么?
感谢你的帮助。
谢谢、
Viney