Bootstrap

zedboard基于petalinux移植Linux系统及一些应用

前言

基于petalinux的Linux移植教程,用到的工具有vivado2019.1,安装了petalinux的Ubuntu系统(本人用的是虚拟机)

1.Linux移植

移植总览

移植Linux时,首先我们需要移植一个boot loader,用于启动Linux内核,boot loader有很多,常用的是U-Boot。Bootloader 是在操作系统运行之前执行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备(对于 ZYNQ 而言,在引导过程中,需要先运行 FSBL 来设置 PS,然后运行 U-Boot 用于加载 Linux 内核映像并引导 Linux)。之后移植Linux kernel,即Linux内核,最后移植一个根文件系统(rootfs),根文件系统内是一些常用的命令和文件。U-Boot、Linux kernel 和 rootfs 这三者一起构成了一个完整的 Linux 系统,一个可以正常使用、功能完善的 Linux 系统。此外还有设备树用于驱动按键、led等外设,不过设备树需要进行相关配置具有对应语法并需要Linux内核驱动。

具体操作

1.1 创建vivado并导出hardware

利用zedboard模板创建工程,然后建立block design添加zynq并选择zedboard的预设(本文以读者有zynq使用经验为前提跳过了一些步骤,详细步骤可在本人主页参照 zynq板zedboard+vitis设计 (一) hello world实验)

 依次进行generate output products、create HDL wrapper以及generate bitstream。最后导出hardware。此时,再工程文件内的.SDK目录下会生成一个hdf文件

 vivado部分操作结束

1.2 建立petaliunx工程并依次配置编译工程

在Linux内建立一个文件夹,然后将.SDK目录(即存放hdf文件的文件夹)导入

 再次新建一个文件夹用于存放petalinux生成的工程

 1)配置petalinux环境变量,注意每次使用之前一定要配置petalinux环境变量

source ~/application/petalinux/settings.sh

2)创建petalinux工程,存放工程的路径下会生成一个文件夹,之后工程生成的文件都存放在此文件夹内,最后一个参数name可以根据需求修改

petalinux-create --type project --template zynq --name zedboard

 

3)先进入新建的工程目录,然后进行工程配置,注意路径的描述要到hdf文件的上一层。然后会自动弹出配置窗口,该界面内只能通过小键盘上的上下左右按键进行选择,按下‘Y’键使能该选项,此时选项前就会出现‘*’,按下‘N’键取消选项,按下‘M’键使选项编译为模块。先通过上下键选择目录,然后通过左右键选择想要进行的操作,然后按回车进行操作。本次实验不需要进行任何配置,全部选择默认即可。双击ESC键退出配置界面。退出之后可以通过petalinux-config命令再次进入配置界面。

cd zedboard
petalinux-config --get-hw-description ~/application/petalinux/hdf/linux.sdk

 这里需要注意的是,在image packaging configuration选项内可以进行根文件系统类型的配置,默认为INITRAMFS,但是INITRAMFS类型每次掉电之后就会失去之前的修改内容,我们可以选择SD card将根文件系统放在SD卡的ext4区

 4)配置Linux kernel,同样会自动弹出配置界面,保持默认,双击ESC键直接退出即可

petalinux-config -c kernel

 5)配置根文件系统,这里可以在petalinux rootfs settings内设置root密码,默认为root,保持默认即可,双击ESC退出

petalinux-config -c rootfs

 6)编译工程

petalinux-build

7)制作BOOT.BIN启动文件,BOOT.BIN是zynq设备的引导格式, 一般包含 fsbl 文件、bitstream 文件和 uboot 文件 

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

 这里有两个warning,主要是我们没有创建tftpboot目录,在第三步对工程进行配置时,有“Copy final images to tftpboot”选项,当在 Ubuntu 的根文件下创建一个名为 tftpboot 的文件夹时,工程生成镜像后会自动将相关文件复制到 /tftpboot 目录中

8)制作SD启动卡,如果在第三步进行配置时,我们选择了SD卡模式,则需要在SD卡内新建一个EXT4分区,本次实验我们选择了默认的模式,因此不需要新建分区,直接将工程路径images/linux文件夹内的BOOT.IN和image.ub两个文件存入SD卡内即可

 

 1.3启动开发板并通过串口连接电脑

将SD卡插入卡发版,跳线选择SD卡启动模式,连接好串口后上电启动

通过串口工具我们可以看见上电启动的一些信息

 启动完成后我们可以输入用户名和密码进行登录,默认用户名和密码都是root

 至此,移植工作结束

;