Petalinux设计流程
为何要用Petalinux
一般ARM linux开发板就有几十个内核驱动,人都看傻了;按键,蜂鸣器,LCD,HDMI,USB,网口,UART等,大公司有Team做分工管理,有时间和人力成本去做产品迭代升级;一般的中小公司讲究效率,一个产品的研发周期最多半年左右,否则市场就被别人快速吃掉;那就必须上OS;要讲究硬件扩展和性能提升,但又没成本做ASIC,那就上FPGA;但ZYNQ的PL+PS的SOC异构开发比较复杂,功底不深的开发人员只能选择Xilinx原厂Petalinux工具。Petalinux可以使ZYNQ的开发难度甚至可以低于一般Linux。
其实经过这么多年的发展,所有的硬件和外设,都约定俗成,有了现成的驱动框架和源码了,我们实际在工作中主要是解读,移植适配,调试解除bug这些工作,也不会让你从头写驱动代码;
能力合格的开发者,套路去构建自己的硬件BSP,然后写应用。
进一步,看懂内核,做修改,自己写Makefile之类的。
Petalinux套路
在这里我引用正点原子的设计流程概述(领航者 ZYNQ 之嵌入式开发指南):
Design Flow Step | Tool/Workflow |
---|---|
Hardware Platform Creation | Vivado |
Create PetaLinux Project | petalinux -create -t project |
Initialize PetaLinux Project | petalinux -config --get-hw-description |
Configure System-Level Options | petalinux -config |
Create User Components | petalinux -create -t COMPONENT |
Configure the Linux Kernel | petalinux -config -c kernel |
Configure the Root Filesystem | petalinux -config -c rootfs |
Build the System | petalinux -build |
Package for Deploying the System | petalinux -package |
Boot the System for Testing | petalinux -boot |
从上表可以看到,使用Vivado 搭建好硬件平台后,通过几个命令就完成了Linux系统的定制,及其方便。需要说明的是以上设计流程不是按部就班的每一步都执行一遍,可以根据使用场景有选择的执行。一般的设计流程如下:
- 通过 Vivado 创建硬件平台,得到 hdf 硬件描述文件;
- 运行 source <petalinux 安装路径>/settings.sh,设置 Petalinux 运行环境
- 通过 petalinux-create -t project 创建 petalinux 工程;
- 使用 petalinux-config --get-hw-description,将 hdf 文件导入到 petalinux 工程当中并配置 petalinux 工程;
- 使用 petalinux-config -c kernel 配置 Linux 内核;
- 使用 petalinux-config -c rootfs 配置 Linux 根文件系统;
- 配置设备树文件;
- 使用 petalinux-build 编译整个工程;
- 使用 petalinux-package --boot 制作 BOOT.BIN 启动文件;
- 制作 SD 启动卡,将 BOOT.BIN 和 image.ub 以及根文件系统部署到 SD 卡中;
- 将 SD 卡插入开发板,并将开发板启动模式设置为从 SD 卡启动;
- 开发板连接串口线并上电启动,串口上位机打印启动信息,登录进入 Linux 系统。