一、Petalinux
Petalinux工具是Xilinx推出的嵌入式Linux开发套件,包括了u-boot、Linux Kernel、device-tree、rootfs等源码和库,以及Yocto recipes,可以很方便的生成、配置、编译及自定义Linux系统。
二、使用Petalinux定制Linux系统
1. 创建Vivado硬件平台
根据项目需求搭建Vivado硬件平台,导出.hdf文件。
这里直接使用正点原子搭建的Phosphor_7020硬件平台。
硬件平台架构如下:
2. 创建petalinux工程
创建一个Petalinux工程,工程模板为zynq平台模板,工程名为ALIENTEK-ZYNQ。
petalinux-create -t project --template zynq -n ALIENTEK-ZYNQ
3. 将hdf文件导入petalinux工程
cd ALIENTEK-ZYNQ //进入到petalinux工程目录下
petalinux-config --get-hw-description ../hdf/Phosphor_7020.sdk/ //导入hdf文件
4. petalinux工程参数配置
内核、跟文件系统直接使用Xilinx官方提供的,无需修改。
设备树需要根据开发板修改一下。
vi project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
/include/ "system-conf.dtsi"
#include <dt-bindings/gpio/gpio.h>
/ {
model = "Phosphor 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>;
};
5. 编译Petalinux工程
petalinux-build
6. 制作BOOT.bin启动文件
启动文件BOOT.BIN一般包含fsbl文件、bitstream文件和uboot文件。
petalinux-package --boot --fsbl --fpga --u-boot --force
7. 制作SD启动卡
将SD卡分为boot和rootfs两个分区。
将Petalinux工程ALIENTEK-ZYNQ/image/linux目录下的启动文件BOOT.BIN和内核镜像image.ub复制到boot分区。
8. 启动
串口终端