<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PL設計中MPSoC EMIO GPIO的應用

454398 ? 來源:賽靈思中文社區 ? 作者:賽靈思中文社區 ? 2020-11-04 14:57 ? 次閱讀

MPSoC 為PL提供了96個GPIO,通過EMIO管腳鏈接到PL。

普通PL設計,一般只會用到幾個GPIO管腳??梢允褂肰ivado 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/b"
      
    #  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/b"

}

# 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
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11006

    瀏覽量

    206885
  • Xilinx
    +關注

    關注

    70

    文章

    2127

    瀏覽量

    119530
  • GPIO
    +關注

    關注

    16

    文章

    1145

    瀏覽量

    50680
  • MPSoC
    +關注

    關注

    0

    文章

    194

    瀏覽量

    24136
收藏 人收藏

    評論

    相關推薦

    MIO與EMIO的關系解析 GPIO、MIO、EMIO的區別

    通過AXI點亮PL端LED。 1. MIO與EMIO 首先來理清楚MIO與EMIO的關系。MIO是PS的I/O引腳,一共有54個,分為Bank0與Bank1,可以接許多外設比如UART、SPI或
    的頭像 發表于 11-24 14:32 ?2.1w次閱讀
    MIO與<b class='flag-5'>EMIO</b>的關系解析 <b class='flag-5'>GPIO</b>、MIO、<b class='flag-5'>EMIO</b>的區別

    Xilinx ZYNQ開發GPIO的三種方式:MIO、EMIO、AXI_GPIO

    前言: ZYNQ 7000有三種GPIO:MIO,EMIO,AXI_GPIO MIO是固定管腳的,屬于PS,使用時不消耗PL資源;EMIO
    的頭像 發表于 12-26 10:12 ?3441次閱讀
    Xilinx ZYNQ開發<b class='flag-5'>GPIO</b>的三種方式:MIO、<b class='flag-5'>EMIO</b>、AXI_<b class='flag-5'>GPIO</b>

    【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十八章PS端EMIO的使用

    如果想用PS點亮PL的LED燈,該如何做呢?一是可以通過EMIO控制PL端LED燈,二是通過AXI GPIO的IP實現控制。本章介紹如何使用EMIO
    的頭像 發表于 01-30 10:05 ?6899次閱讀
    【ZYNQ Ultrascale+ <b class='flag-5'>MPSOC</b> FPGA教程】第二十八章PS端<b class='flag-5'>EMIO</b>的使用

    【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十九章PL端AXI GPIO的使用

    使用zynq最大的疑問就是如何把PS和PL結合起來使用,在其他的SOC芯片中一般都會有GPIO,本實驗使用一個AXI GPIO的IP核,讓PS端通過AXI總線控制PL端的LED燈,實驗
    的頭像 發表于 02-01 10:06 ?6299次閱讀
    【ZYNQ Ultrascale+ <b class='flag-5'>MPSOC</b> FPGA教程】第二十九章<b class='flag-5'>PL</b>端AXI <b class='flag-5'>GPIO</b>的使用

    玩轉Zynq連載31——[ex53] 基于Zynq PS的EMIO控制

    zstar.bit文件和GPIO_EMIO_project.elf文件燒錄到Zynq運行起來。程序運行起來后,我們就可以看到Zstar板上PL側的3個LED指示燈D3、D2和D1逐個閃爍起來。 騰訊微云鏈接
    發表于 10-12 17:35

    【正點原子FPGA連載】第三章EMIO按鍵控制LED實驗-領航者 ZYNQ 之嵌入式開發指南

    和柱狀圖兩種方式顯示當前PL資源的使用情況。在我們本次實驗,只消耗了PL端1個LUT和一個IO資源,這個IO就是PS通過EMIO擴展GPIO
    發表于 08-29 16:20

    MIO/EMIO/AXI_GPIO接口詳解

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口
    發表于 02-02 07:30

    XILINX MPSOC系列FPGA視頻教程

    開發之Vitis工程創建流程04_MPSoC開發之固化程序05_利用批處理建立Vitis工程二、MPSoC外設基礎開發06_RTC及中斷控制器介紹07_RTC中斷實驗程序分析08_MIO GPIO結構
    發表于 07-21 10:34

    ZYNQ 的三種GPIO :MIO、EMIO、AXI

    GPIO的博客說的有一些不一樣呢。 我們先看有哪三種GPIO:MIO、EMIO、AXI_GPIO。其中MIO和EMIO是直接掛在PS上的
    發表于 02-08 10:23 ?2835次閱讀
    ZYNQ 的三種<b class='flag-5'>GPIO</b> :MIO、<b class='flag-5'>EMIO</b>、AXI

    被zynq的GPIO唬住,告訴你zynq的3種GPIO

    我們先看有哪三種GPIO:MIO、EMIO、AXI_GPIO。其中MIO和EMIO是直接掛在PS上的GPIO。而AXI_
    發表于 07-07 08:23 ?4989次閱讀

    PL設計中使用MPSoC EMIO GPIO

    為了簡化使用GPIO,編寫了以下腳本。使用下列腳本,一條命令就能設置一個GPIO的輸出值。腳本接受兩個輸入參數。第一個參數表示GPIO編號,MIO GPIO從0開始,
    的頭像 發表于 09-03 09:50 ?2618次閱讀
    在<b class='flag-5'>PL</b>設計中使用<b class='flag-5'>MPSoC</b> <b class='flag-5'>EMIO</b> <b class='flag-5'>GPIO</b>

    ZYNQ-7000系列MIO、EMIO、AXI_GPIO接口

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口
    發表于 07-25 17:41 ?2189次閱讀
    ZYNQ-7000系列MIO、<b class='flag-5'>EMIO</b>、AXI_<b class='flag-5'>GPIO</b>接口

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口
    發表于 01-31 06:50 ?12次下載
    ZYNQ-7000系列MIO/<b class='flag-5'>EMIO</b>/AXI_<b class='flag-5'>GPIO</b>接口

    ZYNQ學習筆記_GPIO之輸入輸出

    通過MIO(Multiuse I/O)模塊對器件的引腳做觀測(input)和控制(output)。ZYNQ的PS端上的GPIO也可以通過EMIO(Extra MIO)模塊對PL端的IP以及引腳實現上述操作。
    發表于 12-04 19:36 ?10次下載
    ZYNQ學習筆記_<b class='flag-5'>GPIO</b>之輸入輸出

    強制開放MPSoC的PS-PL接口

    MPSoC含有PS、PL;在PS和PL之間有大量接口和信號線,比如AXI、時鐘、GPIO等。缺省情況下,PS和PL之間有接口和信號線被關閉。
    發表于 08-02 09:45 ?735次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>