双CPU工作
建立工程
为双CPU分别建立Board Support Package
Standalone_bsp_cpu0
Standalone_bsp_cpu1
分别在package工程上建立应用工程
Hello_cpu0
Hello_cpu1
双处理器同时在线调试DEBUG
选择配置选项Run >debug Configuration的Device Initialization选项卡的Reset Type选项,将Reset Entire System改为Reset Processor Only。
注:SDK2013.4下,在不烧写PL配置程序下可直接下载程序,cpu0,cpu1按先后顺序在线运行后,不需任何唤醒设置,即可同时运行。
SDK2013.4同时调试。
Help中搜索Multi-Processor,查看多核处理器的调试,如图所示。
Step1:选择配置。
Step2:配置软件。选择处理器,分别勾选各自的下载程序,点击Debug即开始调试。
SDK2014.4同时调试,可能cpu1的运行必须由cpu0激活。
在地址分配,或根据程序大小分配:
从应用工程下的lscript.ld文件,更改hello_cpu0与hello_cpu1的DDR地址,其它不变。
cpu0
ps7_ddr_0_S_AXI_BASEADDR base address(0x00100000) size(0x00100000)
cpu1
ps7_ddr_0_S_AXI_BASEADDR base address(0x00200000) size(0x00100000)
Downloading Program -- F:/zynq_work/zynq_test/AXI_project_1/project_1.sdk/hello_cpu1/Debug/hello_cpu1.elf
section, .text: 0x00200000-0x0020170b
section, .init: 0x0020170c-0x00201723
section, .fini: 0x00201724-0x0020173b
在cpu0中添加激活程序。
第一步:Disable Cache on OCM
使用函数: Xil_SetTlbAttributes(0xFFFF0000,0x14de2);
第二步:载入CPU1程序的存储地址到CPU1处理器的入口地址:
*(unsigned int*)(0xFFFFFFF0) = (unsigned int) 0x200000;
第三步:cpu0发出唤醒命令,唤醒cpu1
print("CPU0: sending the SEV to wake up CPU1\n\r