zynq-7000系列基于zynq-zed的AMP模式的实现(linux+bare-metal)

zynq-7000系列基于zynq-zed的AMP模式的实现(linux+bare-metal)

                             

     作者:卢浩  

                                   时间: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
  •        如下图:
  •        
        接下来给CPU1创建一个BSP,
  •         选择 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

保存。
接下来创建一个在CPU1上跑的例程
  • 选择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>
    reg = <0x0 0x18000000>。

编译uboot,kernel,然后把所有制作完成的文件放进SD卡,启动linux。此时CPU0运行linux,CPU1运行baremetal。

       附件下载链接

       http://download.csdn.net/detail/luhao806/9770064

       在linux下运行

       ./devmem 0xfffffff0 w 0x18000000

   LED0会不断闪烁。



  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
文档共60页。主要向初学者提供了Zynq开发的技术方向,针对不同应用给出了基本的参考文档;同时对Zynq双核AMP加载方式做了详细描述,对Zynq的fsbl启动流程做了简单介绍。章节如下: Zynq User Guide 1 介绍 4 2 快速上手指南 4 3 多核开发教程 4 3.1 AMP开发说明 6 3.1.1 快速生成amp工程 6 3.1.2 Generating Boot File 8 3.1.3 烧写程序 9 3.1.4 启动 10 3.1.5 调试 10 3.1.6 总结 11 3.2 SMP开发说明 11 4 ZC706启动代码分析 11 4.1 启动代码 12 4.2 FSBL流程(FOR AMP) 13 4.3 CPU0启动CPU1流程 14 5 程序在线烧写方案及流程 14 5.1 程序烧写需求 14 5.2 提出该需求的原因 14 5.3 程序烧写方案 14 5.3.1 BOOT.BIN组成 14 5.3.2 BOOT.BIN生成方法 15 5.4 FSBL.BIN和APP.BIN等的生成 15 5.5 制作*BIN及烧写的具体步骤 15 5.5.1 制作*bin流程 15 5.5.2 BOOT.bin制作过程 15 5.5.3 FSBL.bin和APP.bin等的生成过程 22 5.6 烧写BOOT.BIN步骤 26 5.6.1 通过SDK工具烧写步骤 26 5.6.2 通过上位机烧写软件的烧写步骤 29 5.6.3 通过串口调试助手烧写步骤 29 6 Zynq Qspi控制器 30 6.1 基本特性 30 6.2 I/O接口 31 6.3 QSPI控制器模式 33 6.3.1 I/O模式 33 6.3.2 线性地址(linear address)模式 33 6.3.3 传统(legacy)SPI模式 34 6.4 QSPI 例程 34 6.5 QSPI控制器支持访问32MB方法 35 6.5.1 Bank地址寄存器(Bank address register) 35 6.5.2 扩展地址模式(Extended address mode) 35 6.5.3 使用新写命令(New commands) 35 6.6 QSPI FLASH选择 35 6.7 作为BOOT器件考虑 35 7 µC/OS系统启动指南 36 7.1 INTRODUCTION 36 7.1.1 Software Requirements 36 7.1.2 Hardware Requirements 36 7.2 HARDWARE DESIGN 37 7.2.1 Step 1. Invoke the Vivado IDE and Create a project 37 7.2.2 Step 2. Create an IP Integrator Design 39 7.2.3 Step 3. Add and setup the Zynq processor system IP block 39 7.2.4 Step 4. Customize the Zynq block for our design 41 7.2.5 Step 5. Add the soft peripherals 45 7.2.6 Step 6. Generate HDL Design Files 47 7.2.7 Step 7. Synthesis, Implement and Generate Bitstream 48 7.3 SOFTWARE DESIGN 49 7.3.1 Step 1. Installation of the µC/OS Repository 49 7.3.2 Step 2. Generate the µC/OS BSP 50 7.3.3 Step 3. Build and Debug the Demonstration Project 54 7.3.4 Step 4. Program the AXI Timer 0 with the ucos_axitimer Driver 55 7.3.5 Step 5. Program the AXI Timer 1 with the Xilinx tmrctr Driver 58 7.4 CONCLUSION 59 8 Linux系统启动指南 59

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值