mkdir zynq_petalinx.sdk
sptl
进入petalinux工作环境mkdir
新建一个工作目录并进入该目录petalinux-create -t project --template zynq -n zynq_linux
cd zynq_linux
petalinux-config --get-hw-description **/zynq_petalinx.sdk/
后面的路径为hdf所在目录地址上一步完成后会自动弹出配置窗口
当然也可以通过这个命令重新配置
petalinux-config
一般默认配置,这一部分略
终端输入如下命令
petalinux-config -c kernel
无特殊需求,无需更改
终端输入以下命令可配置根文件系统
petalinux-config -c rootfs
无特殊需求,无需更改
备注:root用户密码,默认为“root”
如果需要配置设备树,则可以编辑当前工程目录下的project-spec/meta-user/recipes-bsp/devicetree/files/system-user.dtsi
文件
无特殊需求,无需更改
编译整个petalinux工程命令
petalinux-build
optional: 可选单独编译命令如下
-c u-boot #编译U-BOOT
-c kernel #编译内核
-c rootfs #编译根文件系统
Petalinux 提供了petalinux-package 命令将 PetaLinux 项目打包为适合部署的格式
petalinux-package --boot
命令可生成可引导映像,可直接与Zynq设备的FPGA设计一起使用
ZYNQ的启动文件BOOT.BIN一般包含fsbl文件、bitstream文件和U-BOOT文件
使用下面的命令可生成BOOT.BIN文件
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force
参数--boot
表明我们要通过petalinux-package
命令生成BOOT.BIN启动镜像文件
参数--fsbl
用于指定 fsbl 镜像文件的位置
参数--fpga
用于指定 bitstream文件的位置
参数--u-boot
用于指定 U-BOOT文件的位置
参数--force
表示强制覆盖当前目录下的BOOT.BIN文件
配置过程详见正点原子启明星ZYNQ之Linux开发指南第六章6.2.10节
插入SD卡,连接到虚拟机,会出现一个BOOT分区
然后将该工程image/linux
目录下的BOOT.BIN和image.ub文件拷贝到BOOT分区,最后拔出SD卡
FSBL全称First Stage Boot Loader(第一阶段启动、引导程序)
即FSBL是开发板在开机上电后运行的第一段代码
系统启动后,FSBL代码会第一个运行,用于引导、启动用户裸机程序
在嵌入式Linux系统中,对于ZYNQ平台来说,BOOT.BIN = FSBL + U-BOOT + bitstream
即先由FSBL启动U-BOOT,再由U-BOOT用于启动内核
对于ZYNQ平台,对于嵌入式Linux系统来说:
详见UG585手册 Ch6:Boot and Configuration–BootROM Code–SD Card Boot
详见UG585手册 Ch6:Boot and Configuration–BootROM Code–Quad-SPI Boot
help
很重要!不懂就查bdinfo
echo
version
printenv
printenv
查看U-BOOT所有环境变量printenv 变量名
查看指定的一个环境变量setenv
setenv 变量名 变量值
setenv
setenv 变量名
即为某一变量名添加/设置一个变量值,该值为空setenv
saveenv
env default -a
最为常用,恢复U-BOOT环境变量为默认环境变量env delete 变量名
“删”env print 变量名(可选)
“查”env save
“保存”env set 变量名 变量值
“设置/添加”命令行操作下的环境变量都是在内存中维护
只有将环境变量保存到外部Flash存储设备中,才能让之前修改的环境变量在下一次启动时生效
md [.b, .w, .l] address [# of objects]
nm [.b, .w, .l] address
mw [.b, .w, .l] address value [count]
cp [.b, .w, .l] source target count
cmp [.b, .w, .l] addr1 addr2 count
U-BOOT 支持 EMMC 和 SD 卡,统一使用 mmc 来代指 EMMC 和 SD 卡
mmc
命令合集
mmc info - display info of the current MMC device
mmc read addr blk# cnt
mmc write addr blk# cnt
mmc erase blk# cnt
mmc rescan
mmc part - lists available partition on current mmc device
mmc dev [dev] [part] - show or set current mmc device [partition]
mmc list - lists available devices
mmc hwpartition [args...] - does hardware partitioning
sf
命令集
sf probe [[bus:]cs] [hz] [mode] - init flash device on given SPI bus and chip select
sf read addr offset|partition len - read `len' bytes starting at
`offset' or from start of mtd
`partition'to memory at `addr'
sf write addr offset|partition len - write `len' bytes from memory
at `addr' to flash at `offset'
or to start of mtd `partition'
sf erase offset|partition [+]len - erase `len' bytes from `offset'
or from start of mtd `partition'
`+len' round up `len' to block size
sf update addr offset|partition len - erase and write `len' bytes from memor y
at `addr' to flash at `offset'
or to start of mtd `partition'
sf protect lock/unlock sector len - protect/unprotect 'len' bytes starting
at address 'sector'
usb start - start (scan) USB controller
usb reset - reset (rescan) USB controller
usb stop [f] - stop USB [f]=force stop
usb tree - show USB device tree
usb info [dev] - show available USB devices
usb test [dev] [port] [mode] - set USB 2.0 test mode (specify port 0 to indicate the device's upstream port) Available modes: J, K, S[E0_NAK], P[acket], F[orce_Enable]
usb storage - show details of USB storage devices
usb dev [dev] - show or set current USB storage device
usb part [dev] - print partition table of one or all USB storage devices
usb read addr blk# cnt - read `cnt' blocks starting at block `blk#'
to memory address `addr'
usb write addr blk# cnt - write `cnt' blocks starting at block `blk#'
from memory address `addr'
ping
命令——用于测试开发板与另一台主机之间的网络连通性ping pingAddress
只能ping某一个ip地址nfs
命令——使用NFS协议通过网络启动镜像nfs [loadAddress] [[hostIPaddr:]bootfilename]
tftboot
命令——通过tftp协议下载文件到开发板内存中tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
tftput
命令——将内存中数据通过tftp协议上传到tftp服务器,以文件的形式存在dhcp
命令——使用DHCP协议下载文件dhcp [loadAddress] [[hostIPaddr:]bootfilename]
bootp
命令——通过BOOTP/TFTP协议下载文件,同dhcp
命令bootp [loadAddress] [[hostIPaddr:]bootfilename]
fstype
命令——用于查看一个文件系统的类型fstype :
fatinfo
命令——用于查看fat文件系统信息fatinfo []
fatls
命令——用于列举出Fat文件系统某个目录下的文件,默认根目录"/"fatls [] [directory]
fatls mmc 0:1
fatload
命令——用于从fat文件系统中读取文件到内存中fatload [ [ [ [bytes [pos]]]]]
fatload interface dev:part addr filename
fatwrite
命令——用于将内存中的数据写入到Fat文件系统中fatwrite []
fatwrite interface dev:part addr filename bytes
ext4ls
命令——用于列举出Ext4文件系统某个目录下的文件,默认根目录"/"ext4ls [] [directory]
ext4ls mmc 0:2
ext4load
命令——用于从Ext4文件系统中读取文件到内存中ext4load [ [ [ [bytes [pos]]]]]
ext4load interface dev:part addr filename
ext4write
命令——用于将内存中的数据写入到Ext4文件系统中ext4write
ext4write interface dev:part addr sizebytes
Ext2文件系统操作命令只需将以上命令中的Ext4换成Ext2即可
以下三条命令与具体的文件系统类型无关,即既可以用于Fat,也可以用于Ext文件系统
ls
命令——用于列出文件系统中的所有文件和文件夹ls [ [directory]]
load
命令——用于读取文件系统中的文件到内存中load [ [ [ [bytes [pos]]]]]
save
命令——用用于将内存中的数据写入到文件系统中save bytes [pos]
loadb
命令——通过串口的方式下载文件到内存中,使用kermit modeloadb [ off ] [ baud ]
loadx
命令——通过串口的方式下载文件到内存中,使用xmodem modeloadb [ off ] [ baud ]
loady
命令——通过串口的方式下载文件到内存中,使用ymodem modeloadb [ off ] [ baud ]
fpga info
命令——查看FPGA信息fpga info [ dev ]
fpga loadb
命令——从.bit文件加载FPGA,用该命令前先将bit文件拷贝到开发板内存中fpga loadb [dev] [address] [size]