ZYNQ7020 AMP使用方法总结

本人使用的sdk版本为2015.4本人的方法适用于15.4之后的版本

Zynq开发双核分为两种方法,第一种双核裸跑,第二种linux+裸跑。

双核裸跑:

先使用Debug调试器调试,通过SDK新建一个工程正常建造工程不需要更改任何地方,

当工程建造好后,双击打开lscript.ld 文件。


配置ps7_ddr_0_S_AXI_BASEADDR的起始地址和长度,之后再建造一个工程


记得选择cpu1核,建造工程后打开lscript.ld配置cpu1核的内存起始地址以及长度。配置后双击system.mss选择打开,将drivers下的ps7_cortexa9_1中-g后添加-DUSE_AMP=1。


之后打开bsp下的ps7_cortexa9_1下的libsrc,找到standalone_v5_3打开其中src中的boot.S

找到将其中的内容注释掉。

之后进行编程,编成后编译。

编译后选择SDK右上角的Debug打开debug configurations,


选择application,设置cpu0的程序和cpu1的程序。设置好后点击Debug


如果调试正常后就可制作boot.bin

建造正常的fsbl,不需要任何更改。在cpu0的程序中添加

#defineCPU1_START_UP_REG 0xFFFFFFF0

#define CPU1STARTADR 0x20000000

 

Xil_SetTlbAttributes(0xFFFF0000,0x14de2);           // S=b1 TEX=b100 AP=b11,Domain=b1111, C=b0, B=b0

         Xil_Out32(CPU1_START_UP_REG,CPU1STARTADR); //CPU1STARTADR=0xFFFFFFF0, CPU1STARTADR=0x20000000);

         dmb();//waits until write has finished

         print("CPU0:sending the SEV to wake up CPU1\n\r");

         __asm__("sev");

         dmb();

这样就可以从cpu0 启动cpu1.

Linux+裸跑

使用linux需要根据官方给的xapp1078文件进行设置双核程序

第一步:建造正常的fsbl程序,同时建造cpu1程序,建造cpu1程序和上方的裸跑方法一样。

第二步:打开uboot源代码目录 u-boot/include/configs/zynq_zed.h,编辑CONFIG_SYS_SDRAM_SIZE大小为(384 * 1024 * 1024),原本是(512*1024*1024)

第三步在devicetree文件里,增加如下配置到环境变量 bootargs, mem=384M maxcpus=1改变reg = <0x0 0x20000000>为reg = <0x0 0x18000000>。

第四部编译xapp1078的应用程序。生成可以使用的程序即可。


下载源码地址

https://download.csdn.net/download/yuanzhan11/10317806

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值