ZYNQ开发(九)分布式编译ZYNQ的镜像文件(推荐使用)

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等

采用分步式的方式编译启动开发板所需要的各种镜像文件,虽然步骤比较繁琐,但灵活性比较高
一个完整的linux系统包含PS和PL两个构件,其中PS构件包含fsbl、uboot、设备树文件、linux内核、根文件系统共5个要素,PL构件包含bit文件一个要素。
将bit文件从原先的BOOT.BIN文件独立出来;
将image.ub文件分开为内核zImage和设备树dtb;
将根文件系统放到SD卡的EXT4分区,加载启动速度。
1、创建Vivado硬件平台
①在Windows系统下使用Vivado生成项目工程,生成.SDK后缀的文件
②创建了一个名为petalinux的目录,并在petalinux目录下创建了hdf目录用于存放这个sdk文件夹,将sdk文件夹拷贝到用户节目路下的petalinux/hdf目录
在这里插入图片描述
2、设置Petalinux环境变量
指令:source /opt/pkg/petalinux/2018.3/settings.sh
或者 指令: sptl (echo “alias sptl=‘source $PETALINUX/settings.sh’” >> ~/.bashrc)
//输入sptl就可以设置Petalinux的环境变量
在这里插入图片描述
3、创建petalinux工程
指令:petalinux-create -t project --template zynq -n ZYNQ_DIS_BUILD
创建一个名为“ZYNQ_DIS_BUILD”的Petalinux工程,
template参数表明创建的petalinux工程使用的平台模板,
此处的zynq表明使用的是zynq平台模板的petalinux工程,用于zynq-7000系列的芯片。
name参数(此处简写为“-n”)后接的是petalinux工程名,如此处的“ZYNQ_DIS_BUILD”。
在这里插入图片描述
4、配置petalinux工程
4.1 petealinux-config
指令:cd ZYNQ_DIS_BUILD /进入到petalinux工程目录下
指令:petalinux-config --get-hw-description …/hdf/Navigator_7020.sdk/ //导入hdf文件
在这里插入图片描述
5、制作BOOT.BIN启动文件
5.1 将 dtb 文件从 image.ub 文件中独立开来,并将根文件系统放到 SD 卡的 EXT4分区
(1)“Subsystem AUTO Hardware Settings”
在这里插入图片描述
(2)“Advanced bootable images storage Settings”
在这里插入图片描述
(3)“dtb image settings”
在这里插入图片描述
(4)image storage media设置为primary sd
在这里插入图片描述
(5)“Image Packaging Configuration”
在这里插入图片描述
(6)“Root filesystem type (INITRAMFS)”选择“SD card”
在这里插入图片描述
(7)注意将串口修改至与开发板一致的硬件串口
5.2 编译uboot,生成BOOT.BIN文件
指令:petalinux-build -c u-boot
指令:petalinux-build -c bootloader(生成fsbl.elf)
指令:petalinux-package --boot --fsbl --u-boot --force
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6、生成设备树文件
使用Petalinux工具的hsi命令和xilinx的device-tree仓库
(1)拷贝并确认xilinx的device-tree仓库文件和工程hdf文件的路径
在这里插入图片描述
(2)指定路径下生成设备树文件
打开hdf文件
指令:open_hw_design /home/moonin/Petalinux/hdf/Navigator_7020.sdk/navigator_7020_wrapper.hdf
设置device-tree仓库所在路径
指令:set_repo_path /home/moonin/Device_tree/device-tree-xlnx-xilinx-v2018.3
create_sw_design创建软件设计,”-os device_tree”指定了软件设计的类型,
device-tree表示一个设备树类型,”-proc ps7_cortexa9_0”指定处理器的名称
指令:create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0
在指定路径下,生成设备树文件
指令:generate_target -dir /home/moonin/Petalinux/dts
在这里插入图片描述
7、编译内核kernel
在这里插入图片描述
在这里插入图片描述
7.1 添加设备树文件
将设备树文件pcw.dtsi、pl.dtsi、system-top.dts、zynq-7000.dtsi拷贝至内核路径下
指令:cp -r /home/moonin/Petalinux/dts/pcw.dtsi /home/moonin/Linux_kernel/linux-xlnx-xilinx-v2018.3/arch/arm/boot/dts
指令:cp -r /home/moonin/Petalinux/dts/pl.dtsi /home/moonin/Linux_kernel/linux-xlnx-xilinx-v2018.3/arch/arm/boot/dts
指令:cp -r /home/moonin/Petalinux/dts/system-top.dts /home/moonin/Linux_kernel/linux-xlnx-xilinx-v2018.3/arch/arm/boot/dts
指令:cp -r /home/moonin/Petalinux/dts/zynq-7000.dtsi /home/moonin/Linux_kernel/linux-xlnx-xilinx-v2018.3/arch/arm/boot/dts
在这里插入图片描述
修改system-top.dts文件以及Makefile增加system-top.dtb文件(/ZYNQ 搜索ZYNQ字符)
在这里插入图片描述
7.2 编译内核kernel
指令:cd /home/moonin/Linux_kernel/linux-xlnx-xilinx-v2018.3/
指令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xilinx_zynq_defconfig
在这里插入图片描述
指令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j10
在这里插入图片描述
7.3 编译设备树
指令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- system-top.dtb -j10
在这里插入图片描述
7.4 编译rootfs
指令:petalinux-build -c rootfs
在这里插入图片描述
在这里插入图片描述
8、制作SD卡启动
8.1 显示挂载点
指令:df -Th
在这里插入图片描述
8.2 拷贝zImage文件至SD boot区
指令:cd /home/moonin/Linux_kernel/linux-xlnx-xilinx-v2018.3/arch/arm/boot
指令:cp -r zImage /media/moonin/BOOT/
在这里插入图片描述
8.3 拷贝system-top.dtb文件至SD boot区
指令:cd /home/moonin/Linux_kernel/linux-xlnx-xilinx-v2018.3/arch/arm/boot/dts
指令:cp -r system-top.dtb /media/moonin/BOOT/
在这里插入图片描述
8.4 拷贝BOOT.BIN & system.bit文件至SD boot区
指令:cd /home/moonin/Petalinux/ZYNQ_DIS_BUILD/images/linux
指令:cp -r BOOT.BIN /media/moonin/BOOT/
指令:cp -r system.bit /media/moonin/BOOT/
在这里插入图片描述
8.5 将根文件系统rootfs.tar.gz解压到SD rootfs区
指令:cd /home/moonin/Petalinux/ZYNQ_DIS_BUILD/images/linux
指令:sudo tar -xzf rootfs.tar.gz -C /media/moonin/rootfs
指令:sync
指令:umount /dev/sdb*
在这里插入图片描述
9、启动开发板
设置uboot启动指令
9.1将uboot的环境还原到当前设置
指令:env default -a
9.2设置bitstream_load_address变量存放bitstream文件从SD卡中拷贝到内存中的地址
指令:setenv bitstream_load_address 0x100000
9.3设置bitstream_image变量等于SD卡中bitstream文件的名字
指令:setenv bitstream_image system.bit
9.4设置bitstream_size变量等于bitstream文件的大小
指令:setenv bitstream_size 0x300000
9.5设置kernel_img变量等于SD卡中内核镜像的名字zImage
指令:setenv kernel_img zImage
9.6设置dtbnetstart变量设备树dtb文件从SD卡拷贝到内存中的地址
指令:setenv dtbnetstart 0x2000000
9.7设置netstart变量内核镜像文件从SD卡拷贝到内存中的地址
指令:setenv netstart 0x2080000
9.8设置default_bootcmd变量
指令:setenv default_bootcmd ‘if mmcinfo; then run uenvboot; echo Copying Linux from SD to RAM… && load mmc 0 ${bitstream_load_address} ${bitstream_image} && fpga loadb 0 ${bitstream_load_address} ${bitstream_size} && run cp_kernel2ram && run cp_dtb2ram && bootz ${netstart} - ${dtbnetstart}; fi’
9.9显示并保存设置,重新启动
指令:printenv default_bootcmd
指令:saveenv
指令:boot

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰的FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值