找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 12857|回复: 7

openwrt AR9341 GPIO 以及LED修改

[复制链接]
发表于 2016-12-14 14:41 | 显示全部楼层 |阅读模式
本帖最后由 zeng362424 于 2016-12-14 14:43 编辑

       最近做了op固件,串口接烟雾报警器,CPU用的是AR9341,ap是从厂家购买的,只要一个网口,3个led,一个power灯,一个system灯,一个wifi灯。
固件一开始通过官方固件一个一个试的,最后试了wr841n-v8的固件,ap能运行,但是wifi灯不亮,就选用了这个固件。

        一、uboot升级
选择不死uboot,先把ttl线接上ap的串口线,在uboot界面下,设置好tftp 服务器ip,本地ip,uboot名称,运行 run lu 升级uboot,
升级完uboot以后,要在不死uboot下修改tplink的mac地址,要不然wifi无法启动.
        二、编译固件(源码选择15.05)
1、 首先根据路由器型号编译出在ap上能运行的841n-v8固件。
2、添加了luci等一些包以后,原来的4M不够了,需要修改841n-v8固件大小为8M
修改方法,
修改\chaos_calmer\target\linux\ar71xx\image 目录下的Makefile文件,
  1. define Device/tl-wr841n-v8
  2.     $(Device/tplink-8mlzma) ----------------------------这里原来是4mlzma
  3.     BOARDNAME := TL-WR841N-v8
  4.     DEVICE_PROFILE := TLWR841
  5.     TPLINK_HWID := 0x08410008
  6. endef
复制代码
3、屏蔽串口,系统起来以后串口禁止输入,输出修改inittab文件,去掉或者注释掉最下面一行
  1. ::sysinit:/etc/init.d/rcS S boot
  2. ::shutdown:/etc/init.d/rcS K shutdown
  3. #::askconsole:/bin/ash --login
复制代码
在system配置中添加
  1. option 'conloglevel' '1'  
  2.         option 'kconloglevel' '1'  
复制代码


4、修改GPIO
GPIO14,GPIO15需要用来控制烟雾报警器,查看841n-v8源码发现,GPIO14以及GPIO15已经被led占用了,所以需要释放出来。
这里放上修改的patch文件,怎么打patch,在以前的帖子(openwrt 如何修改源码 给源码打patch )已说明

  1. --- a/arch/mips/ath79/mach-tl-wr841n-v8.c
  2. +++ b/arch/mips/ath79/mach-tl-wr841n-v8.c
  3. @@ -24,13 +24,7 @@
  4. #include "machtypes.h"

  5. #define TL_WR841NV8_GPIO_LED_WLAN        13
  6. -#define TL_WR841NV8_GPIO_LED_QSS        15
  7. -#define TL_WR841NV8_GPIO_LED_WAN        18
  8. -#define TL_WR841NV8_GPIO_LED_LAN1        19
  9. -#define TL_WR841NV8_GPIO_LED_LAN2        20
  10. -#define TL_WR841NV8_GPIO_LED_LAN3        21
  11. -#define TL_WR841NV8_GPIO_LED_LAN4        12
  12. -#define TL_WR841NV8_GPIO_LED_SYSTEM        14
  13. +

  14. #define TL_WR841NV8_GPIO_BTN_RESET        17
  15. #define TL_WR841NV8_GPIO_SW_RFKILL        16        /* WPS for MR3420 v2 */
  16. @@ -61,34 +55,6 @@

  17. static struct gpio_led tl_wr841n_v8_leds_gpio[] __initdata = {
  18.          {
  19. -                .name                = "tp-link:green:lan1",
  20. -                .gpio                = TL_WR841NV8_GPIO_LED_LAN1,
  21. -                .active_low        = 1,
  22. -        }, {
  23. -                .name                = "tp-link:green:lan2",
  24. -                .gpio                = TL_WR841NV8_GPIO_LED_LAN2,
  25. -                .active_low        = 1,
  26. -        }, {
  27. -                .name                = "tp-link:green:lan3",
  28. -                .gpio                = TL_WR841NV8_GPIO_LED_LAN3,
  29. -                .active_low        = 1,
  30. -        }, {
  31. -                .name                = "tp-link:green:lan4",
  32. -                .gpio                = TL_WR841NV8_GPIO_LED_LAN4,
  33. -                .active_low        = 1,
  34. -        }, {
  35. -                .name                = "tp-link:green:qss",
  36. -                .gpio                = TL_WR841NV8_GPIO_LED_QSS,
  37. -                .active_low        = 1,
  38. -        }, {
  39. -                .name                = "tp-link:green:system",
  40. -                .gpio                = TL_WR841NV8_GPIO_LED_SYSTEM,
  41. -                .active_low        = 1,
  42. -        }, {
  43. -                .name                = "tp-link:green:wan",
  44. -                .gpio                = TL_WR841NV8_GPIO_LED_WAN,
  45. -                .active_low        = 1,
  46. -        }, {
  47.                  .name                = "tp-link:green:wlan",
  48.                  .gpio                = TL_WR841NV8_GPIO_LED_WLAN,
  49.                  .active_low        = 1,
复制代码
5、使能wifi灯
需要修改system文件为,最下面为自定义的wifi灯
  1. config system
  2.         option hostname 'OpenWrt'
  3.         option timezone 'UTC'
  4.         option 'conloglevel' '1'  
  5.         option 'kconloglevel' '1'  

  6. config timeserver 'ntp'
  7.         list server '0.openwrt.pool.ntp.org'
  8.         list server '1.openwrt.pool.ntp.org'
  9.         list server '2.openwrt.pool.ntp.org'
  10.         list server '3.openwrt.pool.ntp.org'
  11.         option enabled '1'
  12.         option enable_server '0'

  13. config led 'wlan_led'
  14.         option name 'WLAN'
  15.         option sysfs 'tp-link:green:wlan'
  16.         option trigger 'netdev'
  17.         option dev 'wlan0'
  18.         option mode 'link tx rx'
  19.         option default '0'
复制代码

6、添加gpio14,以及gpio15
我这里使用的方法是通过开机脚本来实现
S100GPIO

  1. #!/bin/sh /etc/rc.common
  2. # Copyright (C) 2014 OpenWrt.org

  3. START=100

  4. USART_UPGRADE_GPIO=14
  5. USART_REBOOT_GPIO=15

  6. start()
  7. {
  8.         echo $USART_UPGRADE_GPIO > /sys/class/gpio/export
  9.         echo in > /sys/class/gpio/gpio14/direction

  10.         echo $USART_REBOOT_GPIO > /sys/class/gpio/export
  11.         echo in > /sys/class/gpio/gpio15/direction
  12. }

复制代码
三、最后说明一下怎么用自定义的配置文件替换原有的配置文件
在编译目录下面新建files,将自定义的配置文件放在里面,编译出的新固件就会有你自定义的配置
  1. /work/chaos_calmer$ tree files
  2. files
  3. └── etc
  4.     ├── config
  5.     │   ├── dhcp
  6.     │   ├── firewall
  7.     │   ├── http_url
  8.     │   ├── network
  9.     │   ├── sn_id.conf
  10.     │   ├── system
  11.     │   └── version
  12.     ├── init.d
  13.     │   ├── xx.bin
  14.     │   ├── xx
  15.     │   └── xx
  16.     ├── inittab
  17.     └── rc.d
  18.         ├── xx
  19.         └── xx

  20. 4 directories, 13 files
复制代码





评分

参与人数 2恩山币 +2 收起 理由
xiaoboy + 1 亲,你太牛逼了,走,我请你吃鳇鱼头去~~~
netsnake + 1 城会玩

查看全部评分

只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2016-12-14 16:18 | 显示全部楼层
谢谢分享
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-12-14 17:11 来自手机 | 显示全部楼层
感谢分享。。。。。。。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-12-14 17:33 | 显示全部楼层
谢谢分享,收藏了!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2016-12-14 18:16 | 显示全部楼层
很详细了,赞一个!不过没说烟雾报警的GPIO是怎么操作得,这两个GPIO当作i2c还是串口用了?烟雾传感器是什么类型的?

点评

烟雾传感器用的是STM32 ,使用USART协议。 操作GPIO,就跟添加GPIO一样的。 echo out > /sys/class/gpio/gpio14/direction echo 1 > /sys/class/gpio/gpio14/value 用c语言的system函数执行的。 串口跟烟雾  详情 回复 发表于 2016-12-15 09:45
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-15 09:45 | 显示全部楼层
eastwoodnet 发表于 2016-12-14 18:16
很详细了,赞一个!不过没说烟雾报警的GPIO是怎么操作得,这两个GPIO当作i2c还是串口用了?烟雾传感器是什 ...

烟雾传感器用的是STM32 ,使用USART协议。
操作GPIO,就跟添加GPIO一样的。
echo out > /sys/class/gpio/gpio14/direction
echo 1 > /sys/class/gpio/gpio14/value

用c语言的system函数执行的。

串口跟烟雾报警器通信,就正常的串口读写操作,按照usart协议来
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2017-4-5 10:38 | 显示全部楼层
# openwrt AR9341 GPIO 以及LED修改 {如何禁用内核 ttl 输出、如何打 patch}
思考了
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-12-23 21:25 | 显示全部楼层
mark下,参考
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-9-21 08:52

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表