一、选择LED、button驱动

LED驱动:

LED modules    --->   <*> kmod-leds-gpio <*> kmod-ledtrig-usbdev

Button 驱动:

Other modules  --->   <*> kmod-gpio-button-hotplug.

二、修改设备树:

目录:/openwr/target/linux/ramips/dts 找到对应的设备树文件,增加对led、keys的注册。

gpio-keys-polled {compatible = "gpio-keys-polled";#address-cells = <1>;#size-cells = <0>;poll-interval = <20>;wps {label = "reset";gpios = <&gpio1 6 1>;//GPIO#38linux,code = <0x198>;};
};gpio-leds {compatible = "gpio-leds";indicator {label = "blue:indicator";gpios = <&gpio0 5 1>;//GPIO#37};
};
  • “label”表示 LED 名称。
  • “gpios”表示该 LED 用到的 GPIO。
  • “&gpio0”表示处于 gpio 组 0,MT7628有 3 组 gpio 分别是 gpio0、gpio1、gpio2。
  • “5”代表是当前组中的第 5 个 gpio,gpio1 的基础号是 32,所以gpio 实际号是 32+5=37。(GPIO#37)
  • “1”代表高电平有效。
  • 详细GPIO关系参考:MT7628/MT7688开发板引脚分布即GPIO介绍
  • linux,code = <0x198>;对应的是reset的按键。相关的宏定义在 input-event-codes.h 文件,配合使用的相关按键匹配表在 button-hotplug.c 或者 gpio-button-hotplug.c 文件。
  • 定义如下:
static struct bh_map button_map[] = {BH_MAP(BTN_0,      "BTN_0"),BH_MAP(BTN_1,        "BTN_1"),BH_MAP(BTN_2,        "BTN_2"),BH_MAP(BTN_3,        "BTN_3"),BH_MAP(BTN_4,        "BTN_4"),BH_MAP(BTN_5,        "BTN_5"),BH_MAP(BTN_6,        "BTN_6"),BH_MAP(BTN_7,        "BTN_7"),BH_MAP(BTN_8,        "BTN_8"),BH_MAP(BTN_9,        "BTN_9"),BH_MAP(KEY_RESTART,  "reset"),BH_MAP(KEY_POWER,    "power"),BH_MAP(KEY_RFKILL,   "rfkill"),BH_MAP(KEY_WPS_BUTTON,  "wps"),BH_MAP(KEY_WIMAX,  "wwan"),
};
#define BTN_0            0x100
#define BTN_1           0x101
#define BTN_2           0x102
#define BTN_3           0x103
#define BTN_4           0x104
#define BTN_5           0x105
#define BTN_6           0x106
#define BTN_7           0x107
#define BTN_8           0x108
#define BTN_9           0x109
#define KEY_RESTART     0x198
#define KEY_POWER       116 /* SC System Power Down */
#define KEY_RFKILL      247 /* Key that controls all radios */
#define KEY_WPS_BUTTON      0x211   /* WiFi Protected Setup key */
#define KEY_WWAN        246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */
#define KEY_WIMAX       KEY_WWAN

三、重新编译

make V=99

最终编译出来的固件存放在 openwrt-hiwooya/bin/ramips 目录,固件名为 *-squashfs-sysupgrade.bin 。

四、web方式烧录固件

1、查询获取到的IP地址:

ifconfig

apcli0 是无线网卡的。eth0 或者 eth0.2 是有线网卡的地址。

2、输入IP地址进入web界面。(root 12345678)

3、点击 System - Backup/Flash Firmware 进入升级界面

4、选择之前编译出来的固件,点击升级,等待升级成功。

五、测试

控制亮灭:(可以测量电平或者接个LED测试)

echo 1 > /sys/class/leds/blue\:indicator/brightness
echo 0 > /sys/class/leds/blue\:indicator/brightness 

MT7628学习笔记(12)——GPIO操作,注册LED驱动相关推荐

  1. 正点原子stm32F407学习笔记2——GPIO操作跑马灯实验

    一.库函数版本 1.硬件原理图 2.软件设计 打开上一节新建的库函数版本工程模板,直接点击工程下面的 USER 目录下面的 Template.uvproj. 跑马灯实验我们主要用到的固件库文件是: s ...

  2. Spring Boot基础学习笔记12:组件注册整合Servlet三大组件

    文章目录 零.学习目标 一.整合Servlet三大组件概述 (一)组件注册整合Servlet三大组件 (二)路径扫描整合Servlet三大组件 二.创建Spring Boot项目 - Integrat ...

  3. Python入门学习笔记——12.文件操作

    ##################################################### # 1.文件写入 # 写入操作 ''' 1.打开文件 open()参数1:文件路径路径 ur ...

  4. 嵌入式开发学习笔记9-做一个好玩的LED闪烁

    嵌入式开发学习笔记9-做一个好玩的LED闪烁 前言 实际操作 程序功能 实现思路 程序源码 实现效果展示 前言 LED小灯闪烁实质是控制单片机上的I/O口,通过向I/O口循环输入高低电平,从而控制LE ...

  5. Kotlin学习笔记12——数据类和密封类

    Kotlin学习笔记12--数据类和密封类 前言 数据类 在类体中声明的属性 复制 componentN 解构声明 密封类 尾巴 前言 上一篇,我们学习了Kotlin中的拓展,今天继续来学习Kotli ...

  6. R语言小白学习笔记12—概率分布

    R语言小白学习笔记12-概率分布 笔记链接 学习笔记12-概率分布 12.1 正态分布 12.2 二项分布 12.3 泊松分布 12.4 其他分布 笔记链接 学习笔记1-R语言基础. 学习笔记2-高级 ...

  7. 【STM32F407学习笔记】GPIO(一)

    [STM32F407学习笔记]GPIO(一) 1. GPIO基础知识 1.1 GPIO工作方式 1.2 GPIO相关配置寄存器 1.2.1 端口模式寄存器:GPIOx_MODER 1.2.2 输出类型 ...

  8. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  9. jQuery学习笔记之DOM操作、事件绑定(2)

    jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https ...

  10. Linux学习笔记12——配置ftp、squid、Tomcat、Samba、MySQL主从

    Linux学习笔记12 Linux学习笔记12 配置FTP服务 配置pure-ftpd 开机启动 上传下载文件 配置vsftpd CentOS 70安装配置Vsftp服务器 搭好vsftp之后出现55 ...

最新文章

  1. Google Test(GTest)使用方法和源码解析——自动调度机制分析
  2. 分布式消息队列 — RabbitMQ(1)
  3. git commit 提交的时候报错husky > pre-commit hook failed 或者‘lint-staged‘ 不是内部或外部命令,也不是可运行的程序(解决办法)
  4. php 弹窗代码大全,PHP_asp.net弹出窗口代码大全,//关闭,父窗口弹出对话框,子窗 - phpStudy...
  5. :host :host-context ::ng-deep详解
  6. C/C++中如何使用typedef给函数指针取别名使其更具可读性
  7. phpcms导航高亮:“首页” 高亮显示(含代码、截图、案例)
  8. android编程任务进度条,Android应用开发之AsyncTask 处理耗时操作和显示进度条
  9. 我的第一个python web开发框架(15)——公司介绍编辑功能
  10. Flutter学习 — 从新页面返回数据给上一个页面
  11. 在IDEA中进行开发时,Maven的插件或依赖显示红线的问题
  12. MySQL安装之后如何启动
  13. Spring实现Controller中方法参数校验
  14. ldDWR出现“例外被抛出且未被接住 解决方法
  15. STC官网首页资源整理
  16. Hive-之即席查询引擎选型考量
  17. 【开发心得】微信网页应用授权登录
  18. java web课程设计之图书管理系统
  19. 综合实验:LVS+LAMP+NFS+MySQL读写分离
  20. CodeReview中常见缩写

热门文章

  1. apollo学习之---planning理论到实践(5-3)---路径边界计算
  2. 外资企业如何又好又快上多语言OA系统
  3. C++书籍推荐之入门进阶封神C++书籍大全!
  4. 个别手机在微信内无法长按识别二维码
  5. 6、分析Linux内核创建一个新进程的过程
  6. 【行业专题报告】光伏-专题资料-专题资料
  7. EX-B150M-V3 触发不显
  8. python人工智能招聘-SiKi学院Python人工智能讲师招聘
  9. 简易扫雷的C语言实现
  10. Luce_ne_Sco_ring_评分机制