zynq7000 linux axi-gpio驱动:重置axi-gpio驱动方法

2023-05-16

linux gpio 从内核空间导出到用户空间

        petalinux 在制作Linux 系统时,会自动的将gpio 从内核空间导出到用户空间,在用户空间下可以通过sysfs 方式控制gpio;用户空间位置在 /sys/class/gpio,在该文件夹下能看到gpiochipXX 代表gpiobase从那里开始。比如vivado 设计用的axi-gpio 地址时412000,经过空间导出到用户空间之后,gpiochipX 的属性就表示了axi-gpio属性,其中label 为物理地址,base 为基地址,且X=BASE,比如BASE = 1000, 则生成gpiochip1000,还有一个参数ngpio 表示生成了几个gpio口。

       即在vidado 做工程时体现的是物理地址,经过petalinux 制作linux 系统后,自动的将内核空间的gpio导出到用户空间/sys/class/gpio下,然后在xsdk 下写linux 的gpio 驱动时,用的是base,gpio数目不同,base是不同的,在sdk中写程序时注意先看一下gpiochip 从几开始,但是gpiochip 的label 对应的是内核空间的物理地址。由于gpio 最大1024,从0到1023,因此比如axi-gpio 有30个io口,则生成gpiochip994,从994到1023共30个io;如果axi-gpio为24个,则生成gpiochip1000,从1000到1023共24个gpio口;这一过程为petalinux 自动生成的过程,且在设备树文档里面也有体现。

 

注意事项:

调用gpio驱动相关函数偶尔失败的原因:
init这个函数在程序开始时执行一次即可,导出的gpio会存在与整个系统周期不要来回调用这个函数,每个pin只要初始化了,不管你的sdk程序执行到什么程度,抑或是sdk程序退出了,导出的那个pin依然存在,除非执行unexport或者重启linux
 

AXI-GPIO 重新配置方法

Step1:vivado里重新配置完axi-gpio后,再导出hdf,然后拷贝到petalinux工程里。

Step2:执行petalinux-config --get-hw-description -p .

Step3:执行petalinux-build

step4:检查 components/plnx_workspace/device-tree/device-tree/pl.dtsi的axi-gpio节点是否更新,主要是gpio数量跟实际配置是否对应。

      petalinux-build 之后生成新的设备树,查看gpio-width,已经自动改为<0x1e>,30gpio;然后经过生成新的boot.bin image.ub,复制到sd卡运行,用putty 查看linux 系统信息,运行以下命令:

cd /

cd sys/class/gpio

打印出来信息为 gpiochip0 gpiochip 994 994 + 30 =1024,从994 1023 30gpio。其中gpiochip0 mio emio的信息,可以通过cat查看其值。

Step5:将重新编译后的boot.bin和image.ub更新到板卡

Step6:启动系统后会看到gpio的base改变

将应用程序中用的offset 改为994,即base 改为994即可。

 

 

 


sysfs方式控制GPIO

其实linux下面有一个通用的GPIO操作接口,就是  “/sys/class/gpio” 方式。首先gpio 的驱动有没有被导出来,位置在 /sys/class/gpio

确认第一个GPIO控制器索引 (每个PIN脚一个控制器)
root@zc706-zynq7:/sys/class/gpio# ls
export gpiochip906 unexport

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zynq7000 linux axi-gpio驱动:重置axi-gpio驱动方法 的相关文章

随机推荐

  • 解决open-vm-tools无法复制粘贴文件问题

    在使用vmware kali linux时一直忍受着一个情况 xff1a open vm tools Error when getting information for file 34 tmp VMwareDnD 3jTONh xxx N
  • mipmap 和 drawable 的区别

    Android 在 API level 17 加入了 mipmap 技术 xff0c 对 bitmap 图片的渲染支持 mipmap 技术 xff0c 来提高渲染的速度和质量 mipmap 是一种很早就有的技术了 xff0c 翻译过来就是纹
  • LSTM与GRU

    LSTM 与 GRU 一 综述 LSTM 与 GRU是RNN的变种 xff0c 由于RNN存在梯度消失或梯度爆炸的问题 xff0c 所以RNN很难将信息从较早的时间步传送到后面的时间步 LSTM和GRU引入门 xff08 gate xff0
  • Pytorch 实战RNN

    一 简单实例 span class token comment coding utf8 span span class token keyword import span torch span class token keyword as
  • Pytorch : Dataset和DataLoader

    一 综述 Dataset 对数据进行抽象 xff0c 将数据包装为Dataset类 DataLoader 在 Dataset之上对数据进行进一步处理 xff0c 包括进行乱序处理 xff0c 获取一个batch size的数据等 二 Dat
  • 特征工程

    一 数据读取 1 1 读取CSV文件 1 1 1 原文件内容 1 1 2 读取csv span class token keyword import span csv csv file span class token operator 6
  • 代码命名规范

    代码命名规范 现在是2016年12月30日中午12点35分 xff0c 这是我第一次写博客 xff0c 用的是markdown编辑器 xff0c 还不太会用 今天就先简单的写一下 xff0c 看看写出来的效果是什么样的 xff01 xff0
  • Ubuntu18.04 离线安装nginx

    由于服务器位于内网环境且无法访问互联网 xff0c 需要离线安装nginx xff0c ubuntu18 04离线安装软件也并不复杂 xff0c 只是需要较大的耐心去搜集所需的包 xff0c 不过大家不用担心 xff0c 我已经为大家准备好
  • easyui combobox动态绑定数据

    1 jsp上的写法 lt input span class hljs keyword class span 61 span class hljs string 34 easyui combobox 34 span id 61 span cl
  • Echarts(二、柱状图(各参数详细描述))

    1 jsp页面 span class hljs tag lt span class hljs title body span gt span span class hljs tag lt span class hljs title div
  • js中级脚本算法

    1区间求值算法挑战 span class hljs function span class hljs keyword function span span class hljs title sumAll span span class hl
  • 常用easyUI -icon 图标

    1 样式 代码 xff1a lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt title gt Ea
  • vue与后台交互数据(vue-resource)

    需要引入库 xff1a vue resource lt script src 61 34 https cdn jsdelivr net vue resource 1 0 3 vue resource min js 34 gt lt scri
  • Tensorflow——jupyter notebook调用某个库时,出现找不到这个库情况的解决方案

    1 激活tensorflow环境 终端下输入 xff1a source activate tensorflow 2 进入jupyter notebook 出现如下问题 xff1a 没有找到matplotlib库 3 解决方法 在tensor
  • 组合排序题目汇总(排列组合、卡特兰数和递归思想)

    组合排序题目汇总 排列组合矩阵走法A必须在B左边站队互不相邻站队分糖果球放入桶吃糖 卡特兰数括号匹配进出栈顺序 售票顺序二叉树不同的结构数高矮排列 递归思想信封装信 排列组合 矩阵走法 在6 9的方格中 xff0c 以左上角为起点 xff0
  • java.lang.IllegalStateException 错误原因及解决方法小记

    java lang IllegalStateException Cannot perform this operation because the connection pool has been closed at android dat
  • 架构设计三原则

    1 简单原则 xff1b 分析完业务场景的结构复杂性和逻辑复杂性后 xff0c 从业务场景和解决问题的角度出发 xff0c 选择和设计能够满足需求的方案 在简单架构和复杂架构都能满足要求的时候 xff0c 优先选择简单架构 xff0c 因为
  • mybatis的resultMap property爆红

    span class token tag span class token tag span class token punctuation lt span resultMap span span class token attr name
  • Ubuntu20.04 rc-local 配置开机自启动脚本

    1 rc local服务简介 Linux中的rc local服务是一个开机自动启动的 xff0c 调用开发人员或系统管理员编写的可执行脚本或命令的 xff0c 它的启动顺序是在系统所有服务加载完成之后执行 ubuntu20 04系统已经默认
  • zynq7000 linux axi-gpio驱动:重置axi-gpio驱动方法

    linux gpio 从内核空间导出到用户空间 petalinux 在制作 Linux 系统时 xff0c 会自动的将 gpio 从内核空间导出到用户空间 xff0c 在用户空间下可以通过 sysfs 方式控制 gpio xff1b 用户空