ZYNQ7000 petalinux系统启动文件固化到FLASH
首先明确:petalinux启动文件从FLASH启动系统,也就是将启动文件放入FLASH中。
1,vivado配置:
2,导入硬件后配置petalinux
source /opt/Xilinx/Vivado/2017.4/settings64.sh
source /opt/pkg/petalinux/settings.sh
petalinux-create --type project --template zynq --name ax_peta
petalinux-config --get-hw-description ../linux_base.sdk (存放 *.hdf文件的地方)
这里我们仅需要修改两个启动方式选项即可。boot和kernel的存储位置,都选到QSPI Flash即可
Subsystem AUTO Hardware Settings --->
# Advanced bootable images storage Settings --->
# boot image settings --->
# image storage media ---> <*> primary flash
#Subsystem AUTO Hardware Settings --->
# Advanced bootable images storage Settings --->
# kernel image settings --->
# image storage media ---> <*> primary flash
附录:如果板子没有SD卡硬件,就不能通过简单的SD卡烧写boot.bin到flash,必须通过JTAG下载BOOT.bin和image.ub文件,下载两个文件时间很慢。
3,内核配置: petalinux-config -c kernel //设置驱动
配置完成后,ESC并保存。
4,编译petalinux启动文件
petalinux-build 时间很慢
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force 生成启动文件
5,将启动文件烧写到flash中:
方法一:先用SD卡在板子上启动petalinux系统,系统起来后执行
(1)flash_erashall /dev/mtd0 先擦除
用于存放BOOT.bin : flashcp BOOT.bin /dev/mtd0
(2)flash_erashall /dev/mtd2 先擦除
用于存放image.ub:flashcp image.ub /dev/mtd2
方法二:从裸机SDK下载petalinux启动文件
(1)在Xilinx SDK中选择 Xilinx Tools->Program Flash。
Image File选择刚才生成的BOOT.bin文件,Flash Type选择qspi_single,Offset填写0,点击Program按钮。烧录完成后,我们的FSBL,bit,FSBL就下载到QSPI Flash中去了,已经可以实现u-boot的启动了,但是要烧录完uImage后才能引导kernel。
(2)烧录image.ub文件,因为Image File只能选择.bin或者.mcs文件,
所以需要把image.ub重新命名为image.ub.bin,然后再烧录( Xilinx Tools->Program Flash)
Offset需要填写偏移地址,这个地址可以通过petalinux-config配置,或者可以通过system-config.dtsi文件查看。内容如下:
&qspi {
#address-cells = <1>;
#size-cells = <0>;
flash0: [email protected] {
compatible = "micron,n25q128";
reg = <0x0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
[email protected] {
label = "boot";
reg = <0x00000000 0x00500000>;
};
[email protected] {
label = "bootenv";
reg = <0x00500000 0x00020000>;
};
[email protected] {
label = "kernel";
reg = <0x00520000 0x00a80000>;
};
[email protected] {
label = "spare";
reg = <0x00fa0000 0x00000000>;
};
};
};
我们kernel的偏移地址是0x00520000,因此Offset就填写这个数值,点击烧录。
6,将拨码开关设置为flash启动,就能看到petalinux在putty启动起来;