在功耗敏感的系统里,我们通常会在系统空闲的时候将系统休眠,然后可以通过一些外设的输入来唤醒系统,比如 Uart、USB 和 GPIO。AMD VersalAdaptive SoC 系统的休眠唤醒指导页面和 MPSoC 系统在同一个 Wiki 网页。本文将通过 PMC_GPIO 作为例子来描述如何唤醒 Versal 系统。
Wiki 网页:
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842232/Zynq+UltraScale+MPSoC+Power+Management+-+Linux+Kernel
我们这里采用 VPK120 板卡作为平台,这个板卡上面没有通过 PMC MIO 连接 GPIO 器件,所以我们需要使用 PMC EMIO 来实现 GPIO。我们可以在 VPK120 Petalinux BSP 里的 AMD VivadoDesign Suite 工程基础上增加 PMC_GPIO_EMIO。
1. 首先打开 Vivado 工程进入 CIPS core 配置界面并使能 PMC_GPIO_EMIO,板卡上有两个 Button 器件连接到了两个 PL 管脚,所以位宽选择为 2。这两个 Button 在板卡上分为名为 SW4 和 SW5。

2. 这时 CIPS core 的界面上会多出 PMC_GPIO 端口,右键点击这个端口,菜单中选择 Make External Pins 可以把这个接口的两个 GPIO 信号连接到 PL 管脚,我们需要在 XDC 约束文件里增加这两个管脚的约束。

3. 最后完成 Implementation 并导出 XSA。附件里有预先做好的 Block design tcl 脚本、顶层 Wrapper 和约束文件。可以用它们直接创建 Vivado 工程。
4. 导出 XSA 后,可以用下面命令将 XSA 导入 VPK120 petalinux BSP 里的 Petalinux 工程。

5. 按照上面提到的 Wiki 页面里对 GPIO 的要求配置 Kernel,并在“project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi“里增加 gpio-keys节点。

6. 在 2023.2 版本里,ATF 和 PLM 需要两个 Patch 来支持 GPIO 唤醒。使用下面方法将两个 Patch 应用到 Petalinux 工程,最后执行 petalinux-build 命令。
将ATF patch "0001-fix-xilinx-map-PMC_GPIO-device-node-to-interrupt-for 1.patch"拷贝到“project-spec/meta-user/recipes-bsp/arm-trusted-firmware/files/”,如果没有这个路径就手动创建。
执行下面命令创建“arm-trusted-firmware_%.bbappend”文件。

将下面内容拷贝到“arm-trusted-firmware_%.bbappend”并保存。

执行下面命令。

参考 Wiki 页面,将 PLM patch 文件“0001-xilpm-versal-server-Add-entry-for-PMC_GPIO-in-Wakeup.patch” 应用到 Petalinux 工程。
7. 使用下面命令使系统休眠。使用下面命令使能 gpio 为 Wakeup source。

8. 使用下面命令使系统休眠。

9. 按动板卡上的 SW4 button,Linux 系统就会唤醒。
-
soc
+关注
关注
38文章
4516浏览量
227658 -
Linux
+关注
关注
88文章
11628浏览量
218012 -
GPIO
+关注
关注
16文章
1313浏览量
55733 -
Versal
+关注
关注
1文章
172浏览量
8385
原文标题:开发者分享|如何通过 PMC_GPIO 唤醒 AMD Versal™ Adaptive SoC Linux 系统
文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
AMD Vivado Design Suite 2025.2版本现已发布
AMD Versal自适应SoC内置自校准的工作原理
AMD Vivado IP integrator的基本功能特性
【NCS随笔】如何进入system_off深度睡眠模式以及配置GPIO中断唤醒
在AMD Versal自适应SoC上使用QEMU+协同仿真示例
基于AMD Versal器件实现PCIe5 DMA功能
AMD第二代Versal AI Edge和Versal Prime系列加速量产 为嵌入式系统实现单芯片智能
利用AMD VERSAL自适应SoC的设计基线策略
AMD Versal Adaptive SoC Clock Wizard AXI DRP示例
适用于Versal的AMD Vivado 加快FPGA开发完成Versal自适应SoC设计
第二代AMD Versal Premium系列SoC满足各种CXL应用需求
面向AI与机器学习应用的开发平台 AMD/Xilinx Versal™ AI Edge VEK280
AMD Versal自适应SoC器件Advanced Flow概览(下)
AMD Versal自适应SoC器件Advanced Flow概览(上)
AMD Versal自适应SoC DDRMC如何使用Micron仿真模型进行仿真

如何通过PMC_GPIO唤醒AMD Versal™ Adaptive SoC Linux系统
评论