为了实现在ZC702开发板上的两颗Cortex-A9处理器上实现Linux Master/Baremetal Remote 配置,并对Remote端的裸机程序进行调试,需要注意的几点如下:

一、建立petalinux工程后,执行petalinux-config,选择Kernel Bootargs--->

取消“generate boot args automatically ”,然后选择user set kernel bootargs,回车后输入:

console=ttyPS0,115200 earlyprintk maxcpus=1 mem=384M

保存并退出。

二、执行petalinux-config -c kernel,选择Kernel Features --->,然后取消Symmetric Multi-processing(若不取消,那么在Cpu0启动的时候,CPU1会随之启动。)

三、建立SDK工程,为CPU1建立BSP,设置BSP OS为standalone,cpu为ps7_cortexa9_1,并且BSP setting中设置extra_complier_flags的值为

-g -DUSE_AMP=1 -DUSEAMP=1

四、建立CPU1的程序, 同样OS选为standalone,cpu为ps7_cortexa9_1,建立完成后修改<app_cpu1>/src/lscript.ld,将ps7_ddr_0_S_AXI_BASEADDR的基址和大小分别设置为0x18000000,0x80000000,这是为了避免裸机程序和Linux在运行时发生内存冲突,所以应该设置相应完全独立的两块内存空间来分别执行Linux和裸机程序。在第二步中没有设置Linux 内核基址(默认为0x0),则mem=384M意为(0x0~0x1800 0000)。

五、接下来使用SDK进行裸机程序调试。首先利用petalinux编译生成的zynq_fsbl.elf、download.bit、u-boot.elf文件制作成BOOT.bin,并随同image.ub镜像拷贝到SD中,使ZC702从SD卡启动系统。利用SDK,选择run--->debug configurations,然后按类似以下步骤进行设置。

Linux Master/Baremetal Remote 配置下的裸机调试-LMLPHP

这边应取消一下几项:

Linux Master/Baremetal Remote 配置下的裸机调试-LMLPHP

防止cpu0被重启或是重新初始化。

之后切换到application :

Linux Master/Baremetal Remote 配置下的裸机调试-LMLPHP

最后点击Debug就可以了。

参考文献:1.xapp1078 Simple AMP Running Linux and Bare-Metal System on Both Zynq SoC Processors

     2.http://www.wiki.xilinx.com/XAPP1078+Latest+Information

05-08 08:33