zynq自定义PL IP核linux驱动开发流程

概述

zynq的开发主要分为两个阶段:

1)硬件逻辑开发阶段:该过程与传统的fpga 软核cpu(microblaze)开发类似,在vivado中进行。需要在BlockDesign中例化zynq硬核cpu。该阶段综合编译完成后,可以export hardware,生成.hdf文件,交付给第二阶段,软件开发。

2)软件开发。软件开发又分为裸板应用程序开发,以及带操作系统(通常是linux系统)的驱动程序开发和应用程序开发。软件开发在linux主机环境下完成。其中驱动程序、linux镜像编译在xilinx的petalinux环境下完成。(由于zynq的cpu是arm a系列处理器,嵌入式开发人员也可使用通用的yocto开发工具链进行驱动和应用程序的开发,petalinux实际上是将yocto工具链打包,简化了开发步骤)

硬件开发

该部分与microblaze开发类似,在vivado内开发。BlockDesign内zynq cpu的配置可先设置一种开发板的预设置(preset),在预设置的基础上适当修改,以符合设计的需求。综合编译后,可file->export->export hardware输出.hdf文件,供petalinux开发使用。

软件开发(petalinux开发流程)

首先确保linux主机(安装redhat或者ubuntu)正确安装好petalinux开发环境。并将.hdf文件准备好。

1.source安装目录下的petalinux脚本

source /home/petalinux/settings.sh

看是否成功进入petalinux环境:echo $PETALINUX 会回应peta的安装路径

2.创建peta工程

petalinux-create --type project --template zynq --name test

环境会为该工程创建一个test文件夹,进入test文件夹,继续第三步

3.petalinux-config --get-hw-description=/xxx/hdf

/xxx/hdf是hdf文件所在的文件夹,这一步获取了hdf所包含的硬件信息

第三步过程中,会弹出界面,选择启动方式,多线程编译等

4.(可选)创建自定义逻辑ip的驱动,并编译进linux系统中

petalinux-create -t modules --name blink --enable

这一步也可跳过,linux可以后续动态加载驱动模块

驱动模块路径位于test/project-spec/meta-user/recipes-module/blink

5.修改test/project-spec/meta-user/recipes-module/blink下的.bb文件,添加blink.h的文件路径,修改./files下的blink.c

6.test/project-spec/meta-user/recipes-module/blink路径下编译petelinux工程

petalinux-build

编译完成以后,在test/build/tmp/sysroots/plnx_arm/lib/modules/4.9.0-xilinx-v2017.2/extra下有blink.ko驱动目标文件

在test/images/linux下有image.ub u-boot.bin等系统文件,若要用sd卡启动,需要将U-boot打包一下

7.打包

test/images/linux路径下,petalinux-package --boot --format BIN --fsbl zynq_fsbl.elf --u-boot u-boot.elf --fpga xxx.bit,得到BOOT.BIN,将该文件以及image.ub拷贝到sd卡,即可启动linux

启动linux后,进入extra路径下,modprobe blink.ko 加载驱动模块

mknod  /dev/blink_Dev c 244 0 

mount /dev/xxx/mnt

./blink_app.elf  运行应用程序

你可能感兴趣的:(ZYNQ学习笔记)