概述
作者:卢浩
时间:2017.3.4
转载请注明出处
这个实验要实现的是在zynq-zed上,cpu0运行linux系统,cpu1运行baremetal。原理上其实就是两个CPU共享DDR,比如zed上DDR有512M,我把384M分给CPU0-linux来使用,剩余的128M分给CPU1-BAREMETAL来使用。
首先建立vivado工程,工程文件就使用基于zedboard的example工程。编译生成bit文件,导出bit,然后launch sdk。这一步也就是说,AMP模式完全是软件上的实现,主要在SDK上做一些修改配置,与vivado工程并没有直接的联系。
下图是vivado工程:
打开sdk后,首先设置一下环境变量
- 选择
Xilinx_Tools->Repositories
.具体设置如下图,用户可以根据自己的实际路径来设置, -
- 然后点击ok。
- 接下来选择
File->New->Application_Project
- 新建一个amp_fsbl,
- 如下图:
-
- 点击next,选择zynq_fsbl,然后点击finish。
- 选择modify this bsp setting。确认the OS Version is
5.19
。
- 如下图:
-
- 选择
File->New->Board_Support_Package
- 输入工程名称
app_cpu1_bsp
,更改CPU选择ps7_cortexa9_1
. - 点击Finish
- 在
Board Support Package Settings
选择Overview->drivers->ps7_cortexa9_1
- 然后改变
extra_compiler_flags
值为-g -DUSE_AMP=1
- 点击OK。
- 如下图:
-
- 打开
app_cpu1_bsp/ps7_cortexa9_1/libsrc/standalone_v5_19/src/xil-crt0.s
删除以下行:
bl XTime_SetTime
- 选择
File->New->Application_Project
- 输入工程名称
app_cpu1
- 选择cpu1
ps7_cortexa9_1
- 选择
Board Support Package
使用Use existing
app_cpu1_bsp
- 然后点击 Next
- 选择一个空的程序
Empty Application
- 然后点击finish。
- 如下图:
- 为app_cpu1导入 C 和 linkerscript 文件 . 右击
app_cpu1/src
然后选择Import
,选择General->File_System
- 然后选择
From directory
, 选择<your path>/src/cpu1_app/src
,全选app_cpu1.c
和lscript.ld
然后finish. - 点击Yes 来覆盖 lscript.ld。
- 如下图:
-
- 点击finish。
- 接下来就是制作BOOT.BIN文件了。
- BOOT.BIN包含如下文件
-
-
- amp_fsbl.elf,base_zynq_design_wrapper.bit,u-boot.elf,app_cpu1.elf。
- 其中记得修改uboot的DDR大小设置,
-
- 打开uboot源代码目录
u-boot/include/configs/zynq_zed.h
,编辑CONFIG_SYS_SDRAM_SIZE
大小为
(384 * 1024 * 1024)
,原本是(512*1024*1024)
修改内核dts文件关于DDR的设置和maxcpu的设置
在devicetree文件里,增加如下配置到环境变量 bootargs, mem=384M maxcpus=1。改变reg = <0x0 0x20000000>
- 打开uboot源代码目录
-
附件下载链接
http://download.csdn.net/detail/luhao806/9770064
在linux下运行
./devmem 0xfffffff0 w 0x18000000
LED0会不断闪烁。
最后
以上就是贤惠犀牛为你收集整理的zynq-7000系列基于zynq-zed的AMP模式的实现(linux+bare-metal)的全部内容,希望文章能够帮你解决zynq-7000系列基于zynq-zed的AMP模式的实现(linux+bare-metal)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复