利用Petalinux定制Linux系统(ZYNQ)

目录

一、创建vivado硬件平台

二、创建Petalinux工程

三、配置Linux内核

四、设置根文件系统

五、配置设备树文件

六、编译petalinux工程

七、制作SD卡启动文件

八、开发板启动设置

九、打开串口上位机,进入 Linux 系统


一、创建vivado硬件平台

        这里使用为领航者定制开发板配置的vivado工程。

        将工程目录下的的sdk文件,比如:Navigator_7020.sdk,拷贝在Ubuntu系统下,可以使用FTP传输或者共享目录。

二、设置Petalinux的环境变量

        在 Ubuntu 系统中需要先设置 petalinux 工作环境,也就是对 petalinux 工作环境进行初 始化,在终端输入如下命令即可:      

source /opt/pkg/petalinux/2018.3/settings.sh

        就是通过souce来运行Petalinux安装目录下的setting.sh脚本文件,这个安装目录根据实际情况修改。

二、创建Petalinux工程

        为了方便工程的管理,我们在用户家目录下的 petalinux 目录中创建 petalinux 工程, 进入到用户家目录下的 petalinux/目录中,现在我们创建一个名为“ALIENTEK-ZYNQ”的 Petalinux 工程,在终端中输入如下命令:

petalinux-create -t project --template zynq -n ALIENTEK-ZYNQ
         template 参数表明创建的 petalinux 工程使用的平台模板,此处的 zynq 表明使用的是 zynq 平台模板的 petalinux 工程,用于 zynq-7000 系列的芯片。name 参数(此处简写为“- n”)后接的是 petalinux 工程名,如此处的“ALIENTEK-ZYNQ”,大家可以根据自己的喜好 修改。
        
        该命令执行完成之后会自动在当前目录下创建一个名为 ALIENTEK-ZYNQ 的文件
夹,也就是我们新建的 petalinux 工程对应的工程目录。
三、配置petalinux工程
        
        首次配置 Petalinux 工程是将 hdf 硬件描述文件文件导入到 Petalinux 工程中, Petalinux 工具会解析 hdf 文件并弹出配置窗口。在终端中输入如下命令配置: Petalinux 工程:
cd ALIENTEK-ZYNQ //进入到 petalinux 工程目录下
petalinux-config --get-hw-description ../hdf/Navigator_7020.sdk/ //导入 hdf 文件

        Hdf 文件导入成功之后会自动弹出 petalinux 工程配置窗口:

        首先按键盘上的下方向键移动到“Linux Components Selection”,然后按键盘上的“Enter”进入子菜单,子菜单内容如下图所示:
       

        括号里的“*”表示为已使能配置。前两个选项表示会自动生成程序固化实验中的 fsbl.elf 文件和自动更新 ps_init。下面两个选项用 来配置 u-boot 和 linux-kernel 的来源,本实验保持默认来源配置。

        “Auto Config Settings”菜单主要就是选择是否使能 fsbl、Device tree、Kernel 和 u-boot 的自动配置,默认为自动配置,无需更改,就不看了。

        “Subsystem AUTO Hardware Settings”子菜单的内容如下图所示:

         进入到该界面的各个外设子菜单中,可以发现都已经有了默认配置,这些默认配置是根据 hdf 文件的信息自动配置的,基本上无需我们手动修改;“Serial Settings”配置项用于 配置开发板的调试串口和串口波特率等参数,对于本次实验,这里需要修改一下,首先光标移动到该配置项按回车进入

         因为领航者开发板有两个串口外设,USB 串口和 RS232、RS485(RS232 和 485 共用),而 板子的调试串口是 USB 串口,所以在“Primary stdin/stdout”配置项中需要将其修改为 ps7_uart_0,ps7_uart_0 对应的就是 USB 串口。修改完成之后连按两次 ESC 键回到上一级菜 单。

        在“Advanced bootable images storage Settings”菜单中可配置启动引导镜像和内核 镜像的存储媒介,默认为 sd 卡,这里保持默认即可。
        
         
        返回到主界面(按四次“ESC”按键),设备树设置菜单“DTG Settings”和 u-boot 配 置菜单“u-boot Configuration”一般保持默认即可。我们进入“Image Packaging Configuration”子菜单,如下图所示:

        第一个选项便是根文件系统的类型的配置,默认为 INITRAMFS,也可以选择 SD card,这里我们保持默认。另外从该界面我们可以看到,有“Copy final images to tftpboot”选项,当在Ubuntu 的根文件下创建一个名为 tftpboot 的文件夹时,工程生成镜像后会自动将 相关文件复制到/tftpboot 目录中。

         回到主界面,“Firmware Version Configuration”可以用来修改定制的 linux 系统的 主机名和产品名,默认与该 Petalinux 工程同名,如果需要可修改。移动到底部的“Save”,,按键盘上的“Enter”键,会进入

        按键盘上的“Enter”键确认:

        再次按键盘上的“Enter”键确认,返会到原界面,接着按两次键盘上的“Esc”退出配置窗口。

        如果后面想重新配置,只需输入“petalinux-config”命令即可重新配置。

三、配置Linux内核

        现在我们开始定制 Linux 内核,在终端输入如下命令:

petalinux-config -c kernel

        等一段时间后会弹出 Linux 内核的配置界面,如下图所示:

         可以看到 Petalinux 默认使用的内核版本为 4.14.0,当然也可以换成其它版本的内核。 这里使用的内核 Xilinx 官方已经做好了基础配置,如无特定需求,无需更改。

四、设置根文件系统

        在终端输入下面的命令可配置根文件系统,如果不需要配置可不执行该命令。

petalinux-config -c rootfs

         默认配置可满足一般使用,也可以根据需求来定制根文件系统,本实验保持默认配置。 需要说明的是“PetaLinux RootFS Settings”可以用来设置 root 用户的密码,默认为 “root”。后面登录的时候会用到。 保存配置并退出。

五、配置设备树文件

        使用 vi 命令打开 system-user.dtsi 文件,如下所示:
vi project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

   

         我们把按键、led、蜂鸣器、USB 和 IIC 设备的 EEPROM 和 RTC 添加到 system-user.dtsi 设备树当中,system-user.dtsi 文件内容如下:

/include/ "system-conf.dtsi"
#include <dt-bindings/gpio/gpio.h>
/ {
 model = "Navigator Development Board";
 compatible = "alientek,zynq-7020","xlnx,zynq-7000";
 leds {
 compatible = "gpio-leds";
 gpio-led1 {
 label = "led1";
 gpios = <&gpio0 54 GPIO_ACTIVE_HIGH>;
 linux,default-trigger = "heartbeat";
 };
 gpio-led2 {
 label = "pl_led0";
 gpios = <&gpio0 55 GPIO_ACTIVE_HIGH>;
 default-state = "on";
 };
 gpio-led3 {
 label = "pl_led1";
 gpios = <&gpio0 56 GPIO_ACTIVE_HIGH>;
 default-state = "on";
 };
 gpio-led4 {
 label = "ps_led0";
 gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
 default-state = "on";
 };
 gpio-led5 {
 label = "ps_led1";
 gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
 default-state = "on";
};
 gpio-led6 {
 label = "led2";
 gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
 default-state = "on";
 };
 };
 keys {
 compatible = "gpio-keys";
 autorepeat;
 gpio-key1 {
 label = "pl_key1";
 gpios = <&gpio0 57 GPIO_ACTIVE_LOW>;
 linux,code = <105>; // Right
 debounce-interval = <20>; // 20ms
 };
 gpio-key2 {
 label = "pl_key2";
 gpios = <&gpio0 58 GPIO_ACTIVE_LOW>;
 linux,code = <106>; // Left
 debounce-interval = <20>;
 };
 gpio-key3 {
 label = "ps_key1";
 gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
 linux,code = <103>; // Up
 debounce-interval = <20>;
 };
 gpio-key4 {
 label = "ps_key2";
 gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
 linux,code = <108>; // Down
 debounce-interval = <20>;
 };
touch-key {
 label = "touch_key";
 gpios = <&gpio0 59 GPIO_ACTIVE_HIGH>;
 linux,code = <28>; // ENTER
 gpio-key,wakeup;
 debounce-interval = <20>;
 };
 };
 beeper {
 compatible = "gpio-beeper";
 gpios = <&gpio0 60 GPIO_ACTIVE_HIGH>;
 };
 usb_phy0: phy0@e0002000 {
 compatible = "ulpi-phy";
 #phy-cells = <0>;
 reg = <0xe0002000 0x1000>;
 view-port = <0x0170>;
 drv-vbus;
 };
};
&i2c0 {
 clock-frequency = <100000>;
 eeprom@50 {
 compatible = "24c64";
 reg = <0x50>;
 pagesize = <32>;
 };
 rtc@51 {
 compatible = "nxp,pcf8563";
 reg = <0x51>;
 };
};
&usb0 {
 dr_mode = "otg";
 usb-phy = <&usb_phy0>;
};

        设备树文件当中配置了 6 个 gpio led 灯,5 个按键、一个蜂鸣器、eeprom、RTC 以及 USB0 接口,下面简单的讲解下 gpio led 的配置。 6 个 gpio led 灯分别对应开发板的 6 个 led 灯,配置信息主要包括 compatible(用于与 内核驱动匹配的名字)、label(名字)、gpios(对应的 GPIO 管脚)、默认状态以及触发状 态,内容编辑完成之后保存退出即可。

六、编译petalinux工程

        现在我们就可以编译整个 Petalinux 工程了,在终端输入如下命令:‘ 

petalinux-build

        该命令将生成设备树 DTB 文件、fsbl 文件、U-Boot 文件,Linux 内核和根文件系统映 像。编译完成后,生成的映像将位于工程的 images 目录下。需要说明的是 fsbl、U-Boot 这 两个我们在工程中并没有配置,这是因为 Petalinux 会根据 hdf 文件和配置 petalinux 工程自动配置 fsbl 和 uboot,如无特需要求,不需要再手动配置。

七、制作BOOT.BIN启动文件

        Petalinux 提供了 petalinux-package 命令将 PetaLinux 项目打包为适合部署的格式,其 中“petalinux-package --boot”命令生成可引导映像,该映像可直接与 Zynq 系列设备(包 括 Zynq-7000 和 Zynq UltraScale + MPSoC)或基于 MicroBlaze 的 FPGA 设计一起使用。对 于 Zynq 系列设备,可引导格式为 BOOT.BIN,可以从 SD 卡引导。对于基于 MicroBlaze 的设 计,默认格式为 MCS PROM 文件,适用于通过 Vivado 或其他 PROM 编程器进行编程。

        ZYNQ 的启动文件 BOOT.BIN 一般包含 fsbl 文件、bitstream 文件和 uboot 文件。使用下 面命令可生成 BOOT.BIN 文件:

petalinux-package --boot --fsbl --fpga --u-boot --force

        选项“--fsbl”用于指定 fsbl 镜像文件所在位置,后面接文件对应的路径信息,如果不 指定文件位置,默认对应的是 images/linux/zynq_fsbl.elf;选项“--fpga”用于指定 bitstream 文件所在位置,后面接该文件对应的路径信息,默认对应的是 images/linux/system.bit;选项“--u-boot”用于指定 U-Boot 镜像所在位置,后面接该文 件所在路径信息,默认为 images/linux/u-boot.elf。这里笔者均没有指定对应的文件的路 径信息,那么 Petalinux 会自动使用默认文件。

七、制作SD卡启动文件

       如果使用 SD 卡引导 linux 系统启动,一般需要在 SD 卡上有 2 个分区。一个分区使用 FAT32 文件系统,用于放置启动镜像文件(如 BOOT.BIN,linux 镜像等),另一分区使用 EXT4 文件系统,用于存放根文件系统。

        这里就不介绍在Ubuntu下SD开的分区与格式化了。 

       

 

        将 petalinux 工程目录 image/linux 目录下的 BOOT.BIN 和 image.ub 文件拷 贝到名为 boot 的分区也即/dev/sdb1 分区中。 本实验只需要这两个文件即可,拷贝完成之后就可以卸载 SD 卡了。

八、开发板启动设置

        开发板需要设置为SD启动,查看对应的手册就行。开发板连接电脑。

九、打开串口上位机,进入 Linux 系统

        打开 MobaXterm 串口终端上位机软件或其它串口上位机、并连接开发板 USB 串口。串口 终端软件会打印出 Linux 启动信息,之后输入对应的密码就可以了。

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值