#########################################################################################
. 必须使用su用户下,才能用jtag下载程序##
#########################################################################################
0.定位目录
先在shell中找一个准备存放工程的地方,(我的是/media/keith/work),命令行:cd /media/keith/work
1.定位编译链
根据安装petalinux的路径:
source /media/keith/work/petalinux/settings.sh
2.创建petalinux工程
在目录下面,创建一个工程:
petalinux-create --type project --template zynq --name zynq_hb
h1_petalinux_test是工程名,该命令会自动在PRO文件夹里创建zynq_hb文件夹
3.引用刚才输出的硬件描述文件
把之前导出的硬件描述文件system_wrapper.hdf拷贝到虚拟机中的h1_petalinux_test工程文件夹下,然后:
petalinux-config --get-hw-description=/media/keith/work/z7_tmp/bsp
会进入一个配置界面,在里面我们可以配置一些系统参数,主要的配置包括:启动方式,启动存储器分区表,启动文件名称等等,本文暂不对其修改(默认是从SD卡中启动),然后等待其配置(时间较长),然后就可以输入petalinux-build来编译了,是整个工程直接编译。
4.获取文件夹权限
在上一步完成后,输入命令sudo chmod -R 777 /home/hlf获取文件夹权限(工程文件夹和petalinux的安装文件夹),否则编译的时候,会发生错误
目前为止,在shell中的命令既可以以超级用户su的身份运行也可以以普通用户的方式运行(建议全部都用普通用户的方式,免得切换),但是等下编译u-boot和kernel以及rootfs的时候,必须以普通用户的身份运行命令行,否则会报错的
5.编译u-boot
注意:到此处的时候,不能再用超级用户了,要切换到普通用户下,之后的所有操作都在普通用户下
普通用户的shell中输入petalinux-config -c u-boot(依然要事先输入source /home/hlf/mnt/petalinux/settings.sh命令),然后等待GUI出来,这里暂时不改动啥,直接save(save为u-boot.config,名字随便取但不要留空),然后继续等(新建工程要等的时间还是比较长的,后来就会好的)
这里写图片描述
6.编译kernel
命令petalinux-config -c kernel,操作同上(save为kernel.config)
7.编译rootfs
命令petalinux-config -c rootfs,操作同上(save为默认即可)
8.设备树配置
若要修改,直接在工程文件夹下,Ctr+F搜索.dts就可以找到相关文件,做出相应修改”
暂时默认吧,不修改,按照它自动生成的设备树
9.编译工程
输入命令petalinux-build,等待即可,最后生成的文件在 image/linux下
10.生成BOOT.BIN
把shell定位到image/linux目录下,执行命令
petalinux-package --boot --format BIN --fsbl zynq_fsbl.elf --fpga system_wrapper.bit --u-boot,在文件夹下就可以发现,多了一个BOOT.BIN
11.使用jtag下载镜像到板子,需先切换到su
petalinux-package --prebuilt --fpga <FPGA bitstream>
petalinux-boot --jtag --prebuilt 3
12.编译工具链,可以独立编译应用
petalinux-build -c meta-toolchain
13.添加一个自己的应用
petalinux-create -t apps --template install --name myapp --enable ,编译完成后
14.配置内核模块,关闭版本校验,避免每次都要重新编译内核模块
CONFIG_MODULE_FORCE_LOAD:y
CONFIG_MODVERSIONS:n