PetaLinux学习笔记
petaLinux 工具可帮助简化基于 Linux 产品的开发;您可以使用下列工具来完成从系统启动到执行的所有操作:
① 命令行接口
② 应用、器件驱动程序、库生成器以及开发模板
③ 可引导的系统映像生成器
④ 调试代理程序
⑤ GCC 工具
⑥ 集成的 QEMU 全系统仿真器
⑦ 自动化工具
⑧ 支持 Xilinx 系统调试器
使用这些工具,开发人员可以定制引导载入程序、Linux 内核或 Linux 应用。他们可以通过网络或 JTAG 在随附的全系统仿真器 (QEMU) 或物理硬件上添加新的内核、器件驱动程序、应用和库,以及启动并测试软件协议栈。
一、利用JTAG在硬件上启动petalinux镜像
这种方法很方便,在调试的时候不需要把镜像下载到QSPIFLASH里(下载速度很慢)。
① 把xilinx仿真器连接到虚拟机上。板子启动方式设为JTAG。以太网也接入本地局域网。
② 如下图,把工作目录切换到images/linux下。
使用petalinux-build生成的镜像都在这个文件夹下。
③ 使用petalinux-boot --jtag --fpga --bitstream petalinux_wrapper.bit即可通过JTAG下载bit流到板子上。
可以看到zedboard上的LD12灯亮了。
④ 使用petalinux-boot --jtag --prebuilt 3即可把linux镜像下载到板子上。
使用了:system.dtb u-boot.elf zImage zynq_fsbl.elf
二、启动QEMU上的petalinux镜像
petalinux-boot --qemu --prebuilt 3
petalinux-boot --qemu --u-boot
petalinux-boot --qemu --kernel
注意:使用QEMU和JTAG时,要先封装预建镜像,使用如下命令:
petalinux-package --prebuilt --fpga
之后,会自动创建pre-built文件夹,并自动添加一些文件。如图:
执行petalinux-boot --qemu --kernel或者petalinux-boot --qemu --prebuilt 3 命令,启动kernel的效果如下图:
QEMU这种调试linux的方法很方便,还是可以用一用的。
三、利用SD卡在硬件上启动petalinux镜像
将文件夹linux/images下的BOOT.BIN 和 image.ub 拷贝到SD卡的FAT32分区中。
设置启动方式为SD卡。
如果启动失败,提示找不到内核镜像。可能是bootcmd环境变量不正确。
四、使用TFTP启动硬件上的PETALINUX镜像
普通文件传输协议(TFTP)
TFTP 启动可节省大量时间,因为比 JTAG 启动快很多,而且不必为内核源中的每次更改都刷新镜像。
① petalinux-boot --jtag --prebuilt 2
② 输入任意字符,使其停在UBOOT中。如下:
③ print serverip 检查TFTP服务器IP地址
Zynq> print serverip
serverip=192.168.157.129
④ set serverip ; saveenv 设置主机的IP地址
Zynq> set serverip 10.113.214.140 ;saveenv
Saving Environment to FAT...
writing uboot.env
done
⑤ run netboot 启动内核
Zynq> run netboot
*** ERROR: `ipaddr' not set
针对这个error,使用如下命令:
Zynq> set ipaddr 10.113.214.205
Zynq> run netboot
Using ethernet@e000b000 device
TFTP from server 10.113.214.252; our IP address is 10.113.214.205
Filename 'image.ub'.
Load address: 0x10000000
又会出现下面这个错误,是UBUNTU上的TFTP服务器还没有搭建。
Loading: T T T T T T T T T
TFTP server died; starting again
https://blog.csdn.net/zengxiaohua123/article/details/80614950这个链接里讲述了如何搭建TFTP服务器。
还有这里提示的Failed to copy built images to tftp dir: /tftpboot。就是还没有搭建TFTP服务器。
搭建成功后,还是不能使用,因为要关闭win10的防火墙。公司关不掉,算了。
五、自定义工程
① petalinux-config
可配置根文件系统类型:INITRAMFS、INITRD、JFFS2、NFS、SD card。
可配置镜像的存储位置:闪存还是SD。
可配置闪存的分区。
可配置启动方式:INITRD、INITRAMFS、TFTP、NFS、JFFS2、SD的EXT。
② petalinux-config -c kernel
③ petalinux-config -c rootfs
④ petalinux-config -c u-boot
相关说明:
① 在INITRAMFS模式中,RootFS被包含在内核镜像中。
zImage → zImage(内核) + rootfs.cpio
② 在INITRD模式中,内核镜像不包含RootFS。
在ug1144手册的第10章 高级设置里,有petalinux-config的详细说明。
“Advanced Bootable Images Storage Settings”子菜单允许指定可启动镜像的位置。PetaLinux 使用此子菜单中的设来设置 U-Boot。 如果禁用此子菜单,PetaLinux 将使用“Flash Settings”子菜单中指定的闪存分区表来定义可启动镜像的位置。
“Kernel Bootargs”子菜单允许 PetaLinux 在 DTS 中自动生成内核启动命令行设置,或者传递 PetaLinux 用户定义的 内核启动命令行设置。以下是默认的 bootargs:console=ttyPS0,115200 earlyprintk 。
还有一个UG1157《PetaLinux 工具文档:PetaLinux 命令行参考》手册 ,有petalinux命令的详细用法。