FMQL在linux下GPIO的映射关系与使用

这篇具有很好参考价值的文章主要介绍了FMQL在linux下GPIO的映射关系与使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        最近几年国产化芯片的使用如火如荼,部分国产手册说明杂且描述不清,尤其是一些映射关系使用文字描述非常不直观。博主在使用GPIO功能输出的时候反复看了几遍再去尝试控制耗费了不少时间。现结合相关文档总结GPIO映射表格,方便读者使用。

1、 GPIO引脚确定方法

GPIO 引脚编号 = 控制器对应的基值 + 控制引脚偏移值FMQL在linux下GPIO的映射关系与使用

 对于 FMQL 来说, PS 的 4 个 GPIO 控制器对应信息如下
GPIO A 控制 MIO 引脚[31:0],对应基地址 0xE0003000
GPIO B 控制 MIO 引脚[53:32] ,对应基地址 0xE0003100
GPIO C 控制 EMIO 引脚信号[31:0] ,对应基地址 0xE0003200
GPIO D 控制 EMIO 引脚信号[63:32] ,对应基地址 0xE0003400

从上图可以直观看出基址对应的号。

基址 对应管脚号 GPIO组
0xE0003000 480 GPIO A
0xE0003100 458 GPIO B
0xE0003200 426 GPIO C
0xE0003400 394 GPIO D

根据算法可直接列出MIO和EMIO映射关系。

MIO 对应管脚号 GPIO组
0~31 480+(0-31) GPIO A
32-53 458+(0-21) GPIO B
EMIO 对应管脚号 GPIO组
0~31 426+(0-31) GPIO C
32-63 394+(0-31) GPIO D

2、 GPIO 的使用方法
从上面知道了 linux 内核 gpio 编号后,就可以把对应 gpio 接口导出到 linux 用户空间,然后
在 linux 的用户空间使用命令或者在应用程序中使用文件操作的方式操作 gpio 了。
ls -l /sys/class/gpio/, 可以发现其中包含有两个文件 export、 unexport 和若干
gpiochipN 类型文件夹。
FMQL在linux下GPIO的映射关系与使用

export :用于将指定编号的引脚导出,作为 GPIO 使用
unexport :用于将导出的 GPIO 删除掉
gpiochipN :当前芯片中包含的 GPIO 控制器

举例说明:
1、添加设备接口 gpio500(使用MIO20,得出对应管脚编号为480+20=500)
输入如下命令, 可以发现,目录下出现了 gpio500。
echo 500 > /sys/class/gpio/export
direction: 设置输出还是输入模式
设置为输入: echo “in” > direction
设置为输出: echo “out” > direction
value : 输出时,控制高低电平;输入时,获取高低电平
高电平: echo 1 > value
低电平: echo 0 > value
edge : 控制中断触发模式,引脚被配置为中断后可以使用 poll() 函数监听引脚
非中断引脚: echo “none” > edge
上升沿触发: echo “rising” > edge
下降沿触发: echo “falling” > edge
边沿触发: echo “both” > edge
2、 删除 gpio500, 输入如下命令:
echo 500 > /sys/class/gpio/unexport
3、 用户态使用文件操作的方式操作 gpio
例如: 监控 gpio500 的电平变化步骤如下
(1)、 shell 中输入如下命令
echo “in” > /sys/class/gpio/gpio500/direction
echo “both” > /sys/class/gpio/gpio500/ edge
(2)、在应用程序中对”/sys/class/gpio/gpio500/value”执行 select/poll 操作,代码如下:

#include <stdio.h>
#include <fcntl.h>
#include <poll.h>
#include <unistd.h>
int main()
{
struct pollfd fds[1];
char buffer[16];
int len;
int fd=open("/sys/class/gpio/gpio500/value",O_RDONLY);
if(fd<0)
{
perror("open '/sys/class/gpio/gpio500/value' failed!\n");
return -1;
}
fds[0].fd=fd;
fds[0].events=POLLPRI;
while(1)
{
if(poll(fds,1,0)==-1)
{
perror("poll failed!\n");
return -1;
}
if(fds[0].revents&POLLPRI)
{
if(lseek(fd,0,SEEK_SET)==-1)
{
perror("lseek failed!\n");
return -1;
}
if((len=read(fd,buffer,sizeof(buffer)))==-1)
{
perror("read failed!\n");
return -1;
}
buffer[len]=0;
printf("%s",buffer);
}
}
return 0;
}

欢迎大家指正!若描述有误,请私信或留言告知!
 文章来源地址https://www.toymoban.com/news/detail-492885.html

到了这里,关于FMQL在linux下GPIO的映射关系与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis中的关系映射

    目录 前言 1.一对一的映射关系 1.1 创建模型类和Vo类  1.2 配置当前模型类的mapper.xml 1.3 开始测试 2.一对多的映射关系 2.1 创建模型类和Vo类 2.2 配置当前模型类的mapper.xml 2.3 开始测试 3.多对多的映射关系 总结  注意点:  一对一映射(One-to-One Mapping) : 一对一关系指的是两个

    2024年02月09日
    浏览(39)
  • MyBatis关联关系映射详解

    目录 前言 一、 什么是关联关系映射? 二、MyBatis的关系映射方式 1.基于XML配置的关系映射 2.基于注解的关系映射 三、如何使用MyBatis进行关系映射? 四、关于关系映射的一些建议 五、关联关系映射 1.一对一关联关系映射 嵌套查询 嵌套结果映射 2.一对多关联关系映射 嵌套查

    2024年02月09日
    浏览(64)
  • Elasticsearch(2)——映射关系

    1 什么是映射 映射(mapping)就像数据库中的 Schema ,描述了文档可能具有的字段或属性、每个字段的 数据类型,比如 Text,Keyword,Integer 或 Date ,以及 Lucene 是如何索引和存储这些字 段的。 Elasticsearch 支持如下简单字段类型: (1) 字符串: text,keyword (2)整数:byte,sho

    2024年02月12日
    浏览(36)
  • ES(3)映射关系

    创建 mapping 映射类似于我们创建表结构,规定字段什么类型,多长等基本信息。 先创建 索引 PUT http://127.0.0.1:9200/user 然后创建映射关系 PUT http://127.0.0.1:9200/user/_mapping POST http://127.0.0.1:9200/user/_doc/1001 GET http://127.0.0.1:9200/user/_search 会发现没有查到数据,为什么没有分词呢?因为

    2024年02月15日
    浏览(35)
  • 什么是ORM(对象关系映射)?

    ORM(对象关系映射)是一种编程技术,用于在关系型数据库和面向对象编程语言之间建立映射关系。它的目标是通过自动化和简化数据访问层的开发,将数据库表和记录映射到面向对象编程语言中的对象和类。 ORM提供了一种将数据库中的数据转换为编程语言中的对象的机制,

    2024年02月12日
    浏览(50)
  • 认识Mybatis的关联关系映射,灵活关联表对象之间的关系

    目录      一、概述 ( 1 )  介绍 ( 2 )  关联关系映射 ( 3 ) 关联讲述 二、一对一关联映射 2.1 数据库创建 2.2 配置文件  2.3 代码生成 2.4 编写测试 三、一对多关联映射 四 、多对多关联映射 给我们带来的收获 关联关系映射是指在数据库中,通过定义 表之间的关联关系 ,将多

    2024年02月11日
    浏览(47)
  • Mybatis中表关系查询结果集映射

    resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。Re

    2024年02月16日
    浏览(67)
  • 配置主机名与ip的映射关系

    本次进行简单的小实验   通过在windows上配置主机名与IP地址的映射关系,达到我们在xshell或其他远程连接设备上,不用IP地址登陆,只需要用主机名就能实现登陆的效果  可以看到,我这台是192.168.197.129,下面我们进行配置 在windows下,使用管理员身份打开记事本,一定要用

    2024年02月08日
    浏览(47)
  • MyBatis 的关联关系配置 一对多,一对一,多对多 关系的映射处理

    目录 一.关联关系配置的好处  二. 导入数据库表:  三.    一对多关系:--    一个订单对应多个订单项        四.一对一关系:---一个订单项对应一个订单 五.多对多关系(两个一对多)          MyBatis是一个Java持久化框架,可以 通过XML或注解的方式 将对象与数据库

    2024年02月11日
    浏览(64)
  • redis键值对映射关系存储-Dict

    Redis是一个键值型(Key-Value Pair)的数据库,可以根据键实现快速的增删改查。而 键与值的映射关系正是通过Dict来实现的 。 Dict由三部分组成,分别是: 哈希表(DictHashTable) 、 哈希节点(DictEntry) 、 字典(Dict) 哈希表: 哈希节点: size大小只能是 2^n sizemark一定要是 2^

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包