0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PL設(shè)計(jì)中MPSoC EMIO GPIO的應(yīng)用

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

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

普通PL設(shè)計(jì),一般只會用到幾個GPIO管腳??梢允褂肰ivado IPI中的Slice IP, 從其中分出指定數(shù)量的管腳。

Slice配置界面

上圖中,輸入寬度是95,因?yàn)閜l_reset占用率一個管腳。slice從輸入中提取emio的[7:5]三位,作為輸出。

Xilinx Linux 中缺省使能了GPIO驅(qū)動。對于MPSoC,檢查目錄/sys/class/gpio,可以看到設(shè)備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,編寫了以下腳本。使用下列腳本,一條命令就能設(shè)置一個GPIO的輸出值。腳本接受兩個輸入參數(shù)。第一個參數(shù)表示GPIO編號,MIO GPIO從0開始,EMIO GPIO從78開始。第二個參數(shù)是輸出值。如果輸出值是1,可以省略第二個參數(shù)。

#/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

執(zhí)行記錄

# ./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
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11207

    瀏覽量

    208716
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2155

    瀏覽量

    120850
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1188

    瀏覽量

    51832
  • MPSoC
    +關(guān)注

    關(guān)注

    0

    文章

    196

    瀏覽量

    24230
收藏 人收藏

    評論

    相關(guān)推薦

    MIO與EMIO的關(guān)系解析 GPIO、MIO、EMIO的區(qū)別

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

    Xilinx ZYNQ開發(fā)GPIO的三種方式:MIO、EMIO、AXI_GPIO

    前言: ZYNQ 7000有三種GPIO:MIO,EMIO,AXI_GPIO MIO是固定管腳的,屬于PS,使用時不消耗PL資源;EMIO
    的頭像 發(fā)表于 12-26 10:12 ?3811次閱讀
    Xilinx ZYNQ開發(fā)<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點(diǎn)亮PL的LED燈,該如何做呢?一是可以通過EMIO控制PL端LED燈,二是通過AXI GPIO的IP實(shí)現(xiàn)控制。本章介紹如何使用EMIO
    的頭像 發(fā)表于 01-30 10:05 ?7357次閱讀
    【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結(jié)合起來使用,在其他的SOC芯片中一般都會有GPIO,本實(shí)驗(yàn)使用一個AXI GPIO的IP核,讓PS端通過AXI總線控制PL端的LED燈,實(shí)驗(yàn)
    的頭像 發(fā)表于 02-01 10:06 ?6663次閱讀
    【ZYNQ Ultrascale+ <b class='flag-5'>MPSOC</b> FPGA教程】第二十九章<b class='flag-5'>PL</b>端AXI <b class='flag-5'>GPIO</b>的使用

    玩轉(zhuǎn)Zynq連載31——[ex53] 基于Zynq PS的EMIO控制

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

    【正點(diǎn)原子FPGA連載】第三章EMIO按鍵控制LED實(shí)驗(yàn)-領(lǐng)航者 ZYNQ 之嵌入式開發(fā)指南

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

    MIO/EMIO/AXI_GPIO接口詳解

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

    XILINX MPSOC系列FPGA視頻教程

    開發(fā)之Vitis工程創(chuàng)建流程04_MPSoC開發(fā)之固化程序05_利用批處理建立Vitis工程二、MPSoC外設(shè)基礎(chǔ)開發(fā)06_RTC及中斷控制器介紹07_RTC中斷實(shí)驗(yàn)程序分析08_MIO GPIO結(jié)構(gòu)
    發(fā)表于 07-21 10:34

    ZYNQ 的三種GPIO :MIO、EMIO、AXI

    GPIO的博客說的有一些不一樣呢。 我們先看有哪三種GPIO:MIO、EMIO、AXI_GPIO。其中MIO和EMIO是直接掛在PS上的
    發(fā)表于 02-08 10:23 ?3233次閱讀
    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_
    發(fā)表于 07-07 08:23 ?5164次閱讀

    XCZU3EG開發(fā)筆記之gpio_emio?

    雙擊zynq mpsoc核導(dǎo)入配置文件Presets-->Apply Configuration這里導(dǎo)入的是gpio_emio.tcl配置文件配置完成后,如下圖所示在gpio管腳上右擊選擇Make
    的頭像 發(fā)表于 09-03 23:12 ?4076次閱讀

    PL設(shè)計(jì)中使用MPSoC EMIO GPIO

    為了簡化使用GPIO,編寫了以下腳本。使用下列腳本,一條命令就能設(shè)置一個GPIO的輸出值。腳本接受兩個輸入?yún)?shù)。第一個參數(shù)表示GPIO編號,MIO GPIO從0開始,
    的頭像 發(fā)表于 09-03 09:50 ?2775次閱讀
    在<b class='flag-5'>PL</b>設(shè)計(jì)中使用<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接口
    發(fā)表于 07-25 17:41 ?2602次閱讀
    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接口
    發(fā)表于 01-31 06:50 ?12次下載
    ZYNQ-7000系列MIO/<b class='flag-5'>EMIO</b>/AXI_<b class='flag-5'>GPIO</b>接口

    強(qiáng)制開放MPSoC的PS-PL接口

    MPSoC含有PS、PL;在PS和PL之間有大量接口和信號線,比如AXI、時鐘、GPIO等。缺省情況下,PS和PL之間有接口和信號線被關(guān)閉。
    發(fā)表于 08-02 09:45 ?932次閱讀