双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");

本文详细介绍了如何在Zynq 7000系列SoC中进行双CPU工作的工程配置,包括建立工程、双处理器调试、FSBL设置和SDK技巧。在SDK中,设置了双处理器同时在线调试,并讨论了CPU1的激活程序及内存分配。此外,还讲解了如何封装IP和使用SDK的全局计时器以及数学库。
最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=105750197&d=1&t=3&u=76790bfba87e47e38d3d51489903a5df)
2537

被折叠的 条评论
为什么被折叠?



