首页 > 其他分享 >MT7621 openWrt插件操作GPIO(mmap)

MT7621 openWrt插件操作GPIO(mmap)

时间:2023-02-11 10:23:06浏览次数:75  
标签:插件 GPIO MT7621 mmap 代码 offset gpio

OpenWrt 应用中操作GPIO的方式多数都是:

  1. 修改设备树
  2. 通过shell脚本export出对应的GPIO
  3. 通过shell脚本或操作文件的方式控制GPIO/通过LEDE LED配置控制GPIO

不用这种方式的时候,通常按照Linux方式先写驱动,然后在应用/插件中调用驱动程序接口控制GPIO

以上方式的例程和资料网上很容易找,英文阅读没问题的话,直接看官方资料就可以轻松搞定;

最近项目需要在OpenWrt 插件中根据运行情况和指令直接操作GPIO,不想写驱动;参考了网上的资料,没折腾就成功了
这种方式的好处是不用改设备树和写驱动,减少了代码维护的复杂度;用写寄存器的方式控制GPIO,速度应该快点
坏处是对对寄存器不熟悉的新手不太友好

使用基本只需要根据芯片资料修改一下代码中的寄存器相关的宏定义和mmap函数中的offset地址即可;
如果是MTK相关的芯片,直接根据芯片资料修改mmap函数中的offset地址

原代码针对的是MT7628, GPIO BASE ADDRESS 为0x10000600,故offset设为0x10000000,
而MT7621的 GPIO BASE ADDRESS 为0x1E000600,故offset设为0x1e0000000


详细代码请自行查看参考代码

static int gpio_mmap(void)
{
    if ((gpio_mmap_fd = open(MMAP_PATH, O_RDWR)) < 0) {
        fprintf(stderr, "unable to open mmap file");
        return -1;
    }

    gpio_mmap_reg = (uint8_t*) mmap(NULL, 1024, PROT_READ | PROT_WRITE,
        MAP_FILE | MAP_SHARED, gpio_mmap_fd, 0x1e000000);
    if (gpio_mmap_reg == MAP_FAILED) {
        perror("foo");
        fprintf(stderr, "failed to mmap");
        gpio_mmap_reg = NULL;
        close(gpio_mmap_fd);
        return -1;
    }

    return 0;
}

参考代码:https://github.com/ForgotFun/mt76x8

标签:插件,GPIO,MT7621,mmap,代码,offset,gpio
From: https://www.cnblogs.com/hztd/p/17110956.html

相关文章

  • 淘宝客插件哪个好用(十大淘客软件排名)
    1.阿里指数阿里指数是Alibaba.com用户常用的数据分析工具。分析Alibaba.com的流行关键词,了解市场产品趋势是很实用的。这是一个了解市场趋势的数据分析平台。2.商店侦探......
  • Python爬虫-第五章-1-超级鹰插件实现自动填写识别码并登录12306网站
    功能:自动打开浏览器,定位到网站登录界面,输入账户密码,填写识别码并登录到网站内部#DemoDescribe:12306登录案例importtimefromselenium.webdriverimportChromefromsele......
  • pageOffice插件 springboot实现服务器上Word文档在线打开编辑保存
    pageOffice插件springboot实现服务器上Word文档在线打开编辑保存需求:在oa系统上,想实现在线,服务器上doc,docx文档,在web打开,编辑。编辑后,可以再同步保存到服务器端。开发......
  • 构建api gateway之 动态插件
    动态插件之前已经拆解细点逐个介绍了tcp、http代理相关核心点,现在介绍一个让apigateway变得很灵活的功能实现:动态插件。由于lua的动态语言特点,我们可以比较方便......
  • 《Terraform 101 从入门到实践》 第二章 Providers插件管理
    《Terraform101从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。不怕出身低,行行出状元。插......
  • 推荐一款功能强大的IDEA插件,效率提升 50 倍!
    前言我们在开发过程中会有很多小伙伴一起来做协作开发,但是会出现一个问题,就是每个人的注释习惯都不相同,那么,我们在后续了解程序的时候就很麻烦,Eolink提供的这个功能就非......
  • springboot开发日记(8)——插件
    1.lombok——简化JavaBean的开发普通的bean类需要写getter、setter、重写toString方法,较为麻烦。我们可以通过查找springboot的dependencies得知springboot的依赖里已经......
  • 推荐一个H5 PDF预览插件
    由于业务需要在H5预览PDF,本来使用的pdf.js,web端,微信端都用的好好的,但是到了钉钉打开就不行。最后经过一番探索,发现pdfh5这个插件很好用,虽然也是经过pdf.js封装的,但是各个......
  • Java利用ChromeDriver插件网页截图(Wondows版+Linux版)
    **chromedriver是谷歌浏览器驱动,用来模拟谷歌运行操作的一个工具,本文主要讲解Java后端利用此插件进行网页截图,并且适配Linux部署。**环境准备Wondows服务器或电脑本机......
  • JavaScript插件 图片裁剪photoClip
    阅读目录​​JavaScript插件图片裁剪photoClip​​​​1、截图​​​​2、代码​​​​后台接收并处理图片代码​​JavaScript插件图片裁剪photoClip页面裁剪图片得到bas......