0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在PL设计中使用MPSoC EMIO GPIO

YCqV_FPGA_EETre 来源:赛灵思中文社区论坛 作者:付汉杰 2020-09-03 09:50 次阅读

MPSoC 为PL提供了96个GPIO,通过EMIO管脚链接到PL。

普通PL设计,一般只会用到几个GPIO管脚。可以使用Vivado IPI中的Slice IP, 从其中分出指定数量的管脚。

Slice配置界面

上图中,输入宽度是95,因为pl_reset占用率一个管脚。slice从输入中提取emio的[7:5]三位,作为输出。

Xilinx Linux 中缺省使能了GPIO驱动。对于MPSoC,检查目录/sys/class/gpio,可以看到设备gpiochip338。

# ls -l /sys/class/gpio total 0 export gpiochip306 -> ../../devices/platform/amba/ff020000.i2c/i2c-0/0-0021/gpio/gpiochip306 gpiochip322 ->../../devices/platform/amba/ff020000.i2c/i2c-0/0-0020/gpio/gpiochip322 gpiochip338 -> ../../devices/platform/amba/ff0a0000.gpio/gpio/gpiochip338 unexport # ls /sys/class/gpio/gpiochip338/ -l total 0 base device -> ../../../ff0a0000.gpio label ngpio power subsystem -> ../../../../../../class/gpio uevent

Linux GPIO Driver下的GPIO使用,可以参考Linux GPIO Driver;GPIO User Space App。

从上述文章可以看到,使用GPIO不简单。

为了简化使用GPIO,编写了以下脚本。使用下列脚本,一条命令就能设置一个GPIO的输出值。脚本接受两个输入参数。第一个参数表示GPIO编号,MIO GPIO从0开始,EMIO GPIO从78开始。第二个参数是输出值。如果输出值是1,可以省略第二个参数。

#/bin/bash function gpio_output_func() { #echo "No.1 parameter: $1" #echo "No.2 parameter: $2" # MPSoC GPIO number. gpio_num=$[338+$1] # MPSoC EMIO GPIO number. # gpio_num=$[338+78+$1] echo "Set GPIO number: $gpio_num to value: $2" if [ ! -f /sys/class/gpio/gpio$gpio_num/direction ]; then # Export a GPIO pin echo $gpio_num > /sys/class/gpio/export fi # Read the direction and value from the GPIO pin */ # ls -l /sys/class/gpio/gpio$gpio_num/ gpio_direction=`cat /sys/class/gpio/gpio$gpio_num/direction` gpio_value=`cat /sys/class/gpio/gpio$gpio_num/value` echo -e "GPIO number: $gpio_num previous direction: $gpio_direction, previous value: $gpio_value" # Set the direction to an output and write a value 1 to GPIO pin */ echo out > /sys/class/gpio/gpio$gpio_num/direction echo $2 > /sys/class/gpio/gpio$gpio_num/value gpio_direction=`cat /sys/class/gpio/gpio$gpio_num/direction` gpio_value=`cat /sys/class/gpio/gpio$gpio_num/value` echo -e "GPIO number: $gpio_num current direction: $gpio_direction, current value: $gpio_value" } # Check GPIO chip gpio_chip=`cat /sys/class/gpio/gpiochip338/label` gpio_base=`cat /sys/class/gpio/gpiochip338/base` gpio_number=`cat /sys/class/gpio/gpiochip338/ngpio` echo "MPSoC GPIO information: chip: $gpio_chip, base: $gpio_base, number: $gpio_number." # cat /sys/class/gpio/gpiochip338/label # cat /sys/class/gpio/gpiochip338/base # cat /sys/class/gpio/gpiochip338/ngpio # The above line indicates that gpio 0th pin starts from 338 and ends at 511 (GPIO has total 174 pins for ZynqMP) if [ "$2" = "" ]; then gpio_output_func $1 1 else gpio_output_func $1 $2 fi

执行记录

# ./gpio_single_output.sh 81 MPSoC GPIO information: chip: zynqmp_gpio, base: 338, number: 174. Set GPIO number: 419 to value: 1 GPIO number: 419 previous direction: out, previous value: 0 GPIO number: 419 current direction: out, current value: 1 # ./gpio_single_output.sh 81 0 MPSoC GPIO information: chip: zynqmp_gpio, base: 338, number: 174. Set GPIO number: 419 to value: 0 GPIO number: 419 previous direction: out, previous value: 1 GPIO number: 419 current direction: out, current value: 0

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 管脚
    +关注

    关注

    1

    文章

    222

    浏览量

    31596
  • MPSoC
    +关注

    关注

    0

    文章

    194

    浏览量

    24109
  • Vivado
    +关注

    关注

    18

    文章

    789

    浏览量

    65092

原文标题:【分享】在PL设计中使用MPSoC EMIO GPIO,并使用脚本设置MPSoC EMIO GPIO

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    armbian、 hdmi、 zynq、 mpsoc、 rk3399的一一解释

    armbian、 hdmi、 zynq、 mpsoc、 rk3399
    的头像 发表于 10-13 18:11 1036次阅读

    gpio子系统API详解

    gpio 子系统 API gpio 子系统中操作一个 GPIO 需要如下几步: 1、of_find_compatible_node2、of_get_named_gpio3、
    的头像 发表于 09-27 17:17 470次阅读
    <b class='flag-5'>gpio</b>子系统API详解

    Zynq UltraScale+ MPSoC中的隔离方法

    电子发烧友网站提供《Zynq UltraScale+ MPSoC中的隔离方法.pdf》资料免费下载
    发表于 09-13 17:11 1次下载
    Zynq UltraScale+ <b class='flag-5'>MPSoC</b>中的隔离方法

    Zynq UltraScale+ MPSoC的隔离设计示例

    电子发烧友网站提供《Zynq UltraScale+ MPSoC的隔离设计示例.pdf》资料免费下载
    发表于 09-13 11:28 2次下载
    Zynq UltraScale+ <b class='flag-5'>MPSoC</b>的隔离设计示例

    Zynq UltraScale+MPSoC嵌入式设计教程

    电子发烧友网站提供《Zynq UltraScale+MPSoC嵌入式设计教程.pdf》资料免费下载
    发表于 09-13 09:14 4次下载
    Zynq UltraScale+<b class='flag-5'>MPSoC</b>嵌入式设计教程

    Linux下如何通过UIO监控PL给到PS的中断

    xilinx mpsoc 平台中,PS 和 PL 进行交互时,PS 需要获取 PL 发出的中断信号。从 mpsoc 技术参考手册 ug1085 TRM 中可知,
    发表于 08-24 16:06 659次阅读
    Linux下如何通过UIO监控<b class='flag-5'>PL</b>给到PS的中断

    如何在RTX中使用ADC、 GPIO和USB鼠标

    应用: 本代码 RTX 中使用 ADC、 GPIO 和 USB 鼠标 。 BSP 版本: NUC230-240系列BSP CMSIS V3.01.001 硬件:努埃杜-EVB-NUC240
    发表于 08-22 07:45

    PrimeCell彩色LCD控制器(PL111)循环型号9.1.0版用户指南

    本章介绍周期模型组件的功能,以及如何在SoC Designer中使用它。 它包含以下几个部分: ·PL111循环模型功能·可用的组件ESL端口·设置组件参数·调试功能·可用的配置数据
    发表于 08-16 06:39

    PrimeCell通用输入/输出(PL061)循环模型9.1.0版用户指南

    PrimeCell GPIO是符合AMBA标准的片上系统外设。 GPIO是AMBA从模块,与APB相连。 该周期模型支持用于数据传输的接收和发送方向事务端口。 本节提供周期模型与硬件的功能比较的摘要
    发表于 08-12 07:15

    ARM PrimeCell GPIO/ DOP(PL060)技术参考手册

    本文件是ARM PrimeCell GPIO/ DOP(PL060)技术参考手册。本文件是为可能或可能不具备ARM产品经验的有经验的硬件工程师编写的。本文件的编排方式如下:第一章导言 阅读本章介绍
    发表于 08-02 15:50

    ARM PrimeCell通用输入/输出(PL061)技术参考手册

    本文件是ARM PrimeCell GPIO(PL061)的技术参考手册。本文件是为硬件和软件工程师芯片上实施系统设计的硬件和软件工程师编写的。它提供信息,使设计师能够尽快将外围设计师纳入目标系统
    发表于 08-02 06:49

    AMD-Xilinx MPSoC的Watchdog在Linux中使用的简明教程

    AMD-Xilinx MPSoC的器件里,提供了内置的Watchdog
    的头像 发表于 07-07 14:15 609次阅读

    看门狗在Zynq MPSoC上的使用技巧

    在Zynq MPSoC的器件里,PS (Processing System )集成了三个看门狗,分别是CSU SWDT,LPD SWDT和FPD SWDT。
    的头像 发表于 06-30 09:47 922次阅读
    看门狗在Zynq <b class='flag-5'>MPSoC</b>上的使用技巧

    ZYNQ(FPGA)与DSP之间GPIO通信实现

    例程位置ZYNQ例程保存在资料盘中的Demo\\ZYNQ\\PL\\FPGA_DSP_GPIO文件夹下。DSP例程保存在资料盘中的Demo\\DSP\\XQ_GPIO_FPGA文件夹下。1.1.2
    发表于 06-16 16:02

    Applilet EZ PL バージェンアップ差分情报

    Applilet EZ PL バージェンアップ差分情报
    发表于 04-27 19:15 0次下载
    Applilet EZ <b class='flag-5'>PL</b> バージェンアップ差分情报