作者:付汉杰,hankf@xilinx.com,文章转载自:赛灵思中文社区论坛
1. 介绍
有工程师反馈R5引导A53和R5的应用程序后,A53和R5的应用程序没有正确执行。因此做了一个MPSoC R5引导4个A53和两个R5的应用程序的例子。
2. FSBL
MPSoC的FSBL能引导多个CPU的应用程序。工程师可以不理解上述寄存器的细节。如果boot.bin里的某个parttiion是某一个CPU的可执行代码,FSBL中的函数XFsbl_Handoff( )会启动对应的CPU。如果是目标CPU是A53,会使用函数XFsbl_UpdateResetVector()更新A53的服务地址。
3. 应用程序例子
由于只是简单例子,所以所有CPU都使用同一个串口。为了防止所有CPU打印出来的信息,混杂在一起,所以在打印之后,增加了1秒钟延时。
打印中,增加了CPU的信息,用于区分不同CPU。
int main()
{
init_platform();
sleep(1);
for( int i=0; ; i++ )
{
xil_printf("No.%d Hello World from r5-aaa.\n\r", i );
sleep(1);
}
cleanup_platform();
return 0;
}
4. 内存分配
4个A53和两个R5的应用程序,都运行在DDR里。每个应用程序,必须使用不同的DDR空间。
CPU DDR起始地址 DDR大小
| A53-0 | 0x1000000 | 16MB |
| A53-1 | 0x2000000 | 16MB |
| A53-2 | 0x5000000 | 16MB |
| A53-3 | 0x6000000 | 16MB |
| R5-0 | 0x3000000 | 16MB |
| R5-1 | 0x4000000 | 16MB |









