zynq PS端跑Linux响应中断
这篇文章主要是讲述如何在Zynq的PS上跑Linux启动IRQ,环境为vivado2019.1,petalinux2019.1 ubuntu20.04,本人初学者,欢迎批评指正
1. Vivado硬件设计
确保自定义IP的中断信号通过 IRQ_F2P
连接到PS端。在开始Petalinux配置之前,请确保您的IP已经正确设置为向PS发送中断信号,所有的时钟、AXI和复位连接都已正确配置。
- 在Vivado中,选择 File > Export > Export Hardware。
- 勾选 Include Bitstream(如果设计已完成并生成了比特流文件)。
- 将硬件描述文件(HDF或XSA文件)保存到一个已知目录,我们将在Petalinux配置中使用该文件。
2. 设置Petalinux工程
2.1 创建Petalinux工程
-
打开中断,加载Petalinux环境:
source /opt/petalinux/2019.1/settings.sh
-
创建一个新的Petalinux工程,适用于Zynq平台:
petalinux-create --type project --template zynq --name irq_prj
-
进入到项目目录:
cd irq_prj
2.2 配置Petalinux工程
-
配置 Petalinux 工程的硬件信息 :
petalinux-config --get-hw-description ../top_hw_platform_0/
-
一个配置菜单将会打开,选取自己需要的配置
-
配置内核:
petalinux-config -c kernel
-
在内核配置中,导航到:
- Device Drivers > IRQ chip support > 确保 Xilinx Interrupt Controller(IP core) (Xilinx 已启用。
- 完成后退出并保存。
-
设备树配置:
-
在
device-tree
目录中查找其他设备树文件,如system-top.dts
或zynq-7000.dtsi
,查找中断节点grep -i "interrupt-controller" device-tree/*.dtsi
得到节点名为intc
-
修改
system-user.dtsi
文件#include "system-conf.dtsi"/ {my_ip: my_ip@43C00000 {compatible = "vendor,my_ip";reg = <0x43C00000 0x10000>;interrupts = <0 61 4>;interrupt-parent = <&intc>; // 使用 intc 作为中断控制器引用status = "okay";}; };
-
-
配置根文件系统:
petalinux-config -c rootfs
-
编译
petalinux-build