恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 51209|回复: 112

2013.4.28 【已完成】自己动手,为OpenWrt加入720N的支持

    [复制链接]
发表于 2012-9-5 21:42 | 显示全部楼层 |阅读模式
本帖最后由 7440909 于 2013-4-28 13:03 编辑

2013.4.28 有同学发现trunk版已经加入了720n v3的支https://www.right.com.cn/forum/thread-121261-1-1.html此帖只作参考
本帖字符超过限制,62楼有更新。
前言:由于720N和703N的硬件是一样的,同时在make menuconfig中也没有720N的选项,于是有前辈在703N的基础上进行改进,靠编译703的代码,然后改固件头的方式成功将OpenWrt搬到了720N上,比如这篇帖子:  https://www.right.com.cn/forum/thread-91571-1-1.html
可是遗憾的是每次编译完成都要用固件头修改工具改固件头,而且还必须切换到Windows下(至少我要到windows下改),麻烦。
当然现在也有办法,就是更改trunk/target/linux/ar71xx/image/Makefile和trunk/tools/firmware-utils/src/mktplinkfw.c的对固件斗的定义。
  但是,这样得到的东西好像有点名不正言不顺,我们就不能直接在menuconfig中加入720N的支持吗?查了很多资料后,加上一定的设想,终于得到了肯定的回答。在menconfig中出现了720N的选项,而且经过两三次的错误改正之后,终于编译出了真正的720N的OpenWrt固件,编译完成后不用改固件头,启动信息里面也完全现实的是720N。
来两张对比图先吧(前者是靠更改703.c的文件来编译的,后者这是为OpenWrt加入720N支持后编译的):改前:
log_former.PNG 改后:
log_now.PNG

反正我觉得是舒服多了,纯正的OpenWrt 720N v3啊。
如果有兴趣,那就看下面是怎么做的吧(Ubuntu12.04LTS ,AMD处理器):
使用grep可以找到trunk目录下文件中包含 703n 和703N的所有文件   
  1. grep 703n trunk/* -r -l
  2. grep 703N trunk/* -r -l
复制代码
我的思想是简单的替换,既然可以用703的代码编译,那么也可以增加代码提供720N的支持啊,只要代码和703N有关的以同样的形式出现不就行了吗?
运行上面的命令,我找到了16个与703有关的文件,于是着手增加720N的,第一次增加后编译失败,出现
patch: **** malformed patch at line xxx的问题,于是清空trunk文件夹从来,第二次还是失败。后来通过查资料,发现问题所在,参考这篇文章
http://hi.baidu.com/comcat/item/e7bc5e83fb45b5e8e596e080
到时候会详细解释。

增加工作正式开始(在这以前,请确保你已经可以独立编译出正常的基于703的固件,即你已经读了这两篇帖子:
1。https://www.right.com.cn/forum/thread-91571-1-1.html
2。https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=100292&page=1#pid587256
):
最好是纯净的代码,即刚刚svn刚完成./scripts/feeds install -a 还没进行过make 操作的。不然文件太多不好改,也改不全。
需要修改的16个文件路径如下,我提供的文件也包含这16个文件,已经该好且编译无错,下载后按说明文件做即可
  1. trunk/target/linux/ar71xx/generic/profiles/tp-link.mk
  2. trunk/target/linux/ar71xx/patches-3.6/610-MIPS-ath79-openwrt-machines.patch
  3. trunk/target/linux/ar71xx/image/Makefile
  4. trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh
  5. trunk/target/linux/ar71xx/config-3.6
  6. trunk/tmp/.kconfig-ar71xx_nand
  7. trunk/tmp/.config-target.in
  8. trunk/tmp/.targetinfo
  9. trunk/tmp/info/.targetinfo-ar71xx
  10. trunk/tmp/.kconfig-ar71xx_generic
  11. trunk/tmp/.kconfig-ar71xx
  12. trunk/tools/firmware-utils/src/mktplinkfw.c
  13. trunk/target/linux/ar71xx/base-files/etc/diag.sh
  14. trunk/target/linux/ar71xx/base-files/etc/uci-defaults/network
  15. trunk/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
  16. trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr720n.c
复制代码
文件下载地址http://dl.vmall.com/c03awvjktk
1.在trunk/target/linux/ar71xx/files/arch/mips/ath79/目录下新建  mach-tl-wr720n.c,内容如下
  1. /*
  2. * TP-LINK TL-WR720N board support
  3. *
  4. * Copyright (C) 2011 dongyuqi <729650915@qq.com>
  5. * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
  6. *
  7. * This program is free software; you can redistribute it and/or modify it
  8. * under the terms of the GNU General Public License version 2 as published
  9. * by the Free Software Foundation.
  10. */

  11. #include <linux/gpio.h>

  12. #include <asm/mach-ath79/ath79.h>

  13. #include "dev-eth.h"
  14. #include "dev-gpio-buttons.h"
  15. #include "dev-leds-gpio.h"
  16. #include "dev-m25p80.h"
  17. #include "dev-usb.h"
  18. #include "dev-wmac.h"
  19. #include "machtypes.h"

  20. #define TL_WR720N_GPIO_LED_SYSTEM        27
  21. #define TL_WR720N_GPIO_BTN_RESET        11

  22. #define TL_WR720N_GPIO_USB_POWER        8

  23. #define TL_WR720N_KEYS_POLL_INTERVAL        20        /* msecs */
  24. #define TL_WR720N_KEYS_DEBOUNCE_INTERVAL        (3 * TL_WR720N_KEYS_POLL_INTERVAL)

  25. static const char *tl_wr720n_part_probes[] = {
  26. "tp-link",
  27. NULL,
  28. };

  29. static struct flash_platform_data tl_wr720n_flash_data = {
  30. .part_probes        = tl_wr720n_part_probes,
  31. };

  32. static struct gpio_led tl_wr720n_leds_gpio[] __initdata = {
  33. {
  34. .name         = "tp-link:blue:system",
  35. .gpio         = TL_WR720N_GPIO_LED_SYSTEM,
  36. .active_low        = 1,
  37. },
  38. };

  39. static struct gpio_keys_button tl_wr720n_gpio_keys[] __initdata = {
  40. {
  41. .desc         = "reset",
  42. .type         = EV_KEY,
  43. .code         = KEY_RESTART,
  44. .debounce_interval = TL_WR720N_KEYS_DEBOUNCE_INTERVAL,
  45. .gpio         = TL_WR720N_GPIO_BTN_RESET,
  46. .active_low        = 0,
  47. }
  48. };

  49. static void __init tl_wr720n_setup(void)
  50. {
  51. u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
  52. u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);

  53. ath79_register_m25p80(&tl_wr720n_flash_data);
  54. ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr720n_leds_gpio),
  55. tl_wr720n_leds_gpio);
  56. ath79_register_gpio_keys_polled(-1, TL_WR720N_KEYS_POLL_INTERVAL,
  57. ARRAY_SIZE(tl_wr720n_gpio_keys),
  58. tl_wr720n_gpio_keys);

  59. ath79_set_usb_power_gpio(TL_WR720N_GPIO_USB_POWER, GPIOF_OUT_INIT_HIGH,
  60. "USB power");
  61. ath79_register_usb();

  62. ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
  63. ath79_init_mac(ath79_eth1_data.mac_addr, mac, 2);

  64. ath79_register_mdio(0, 0x0);
  65. ath79_register_eth(0);
  66. ath79_register_eth(1);

  67. ath79_register_wmac(ee, mac);
  68. }

  69. MIPS_MACHINE(ATH79_MACH_TL_WR720N, "TL-WR720N", "TP-LINK TL-WR720N v3",
  70. tl_wr720n_setup);
复制代码
2.修改trunk/target/linux/ar71xx/patches-3.6/610-MIPS-ath79-openwrt-machines.patch,这是最重要的一步,不然会出现上面提到的错误,再次参考这篇文章http://hi.baidu.com/comcat/item/e7bc5e83fb45b5e8e596e080,主要原因是由于patch文件的特殊格式,多次出错就是因为这儿。关于patch文件的详细介绍请看这儿http://it.kswchina.com/Linux/zh/640411.html,说实话我也不太理解,只知道像下面这样改就对了。
在有703N定义的地方将代码紧跟着复制一遍,改为720,就像下面这样。
path_attention_0.png
path_0.png
patch_attention_1.png
上面说的增加了10行即是文件中被选中的10行,是从703哪儿复制的,只是把703改为720而已,下面的也是一样的。
patch_1.png
下面这个直接增加这一行就行了。
patch_2.png

3.修改trunk/target/linux/ar71xx/generic/profiles/tp-link.mk
tplink.mk.png
4.修改   trunk/target/linux/ar71xx/image/Makefile
Makefile.png
5.修改   trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh
ar71xx.png
ar71xx_1.png
ar71xx_2.png
6.修改  trunk/target/linux/ar71xx/config-3.6
config3.3.png
7.修改  trunk/tmp/.kconfig-ar71xx_nand
kconfig-ar71xx_nand.png
8.修改  trunk/tmp/.config-target.in
config-target.in.png
9.修改  trunk/tmp/.targetinfo
targetinfo.png
10.修改  trunk/tmp/info/.targetinfo-ar71xx
targetinfo-ar71xx.png
11.修改  trunk/tmp/.kconfig-ar71xx_generic
kconfig-ar71xx_generic.png
12.修改  trunk/tmp/.kconfig-ar71xx
kconfig-ar71xx.png
13.修改  trunk/tools/firmware-utils/src/mktplinkfw.c
mktplinkfw_0.png
mktplinkfw_1.png
14.修改  trunk/target/linux/ar71xx/base-files/etc/diag.sh
diag sh.png
15.修改  trunk/target/linux/ar71xx/base-files/etc/uci-defaults/network
network.png
16.修改  trunk/target/linux/ar71xx/base-files/lib/upgrade/platform.sh  
platform.png

要特别特别注意patch文件的修改部分,成败都在这儿,其它增加都横简单。按上面的步骤(当然你也可以打乱顺序)完成增加后,再继续执行make defconfig和make  menuconfig 就行了,最后再附上我的make menuconfig后的截图
Final_720n.png
menuconfig.png

最后祝各位有心折腾的同学成功。
BUG.png
Soloved.png

点评

建议直接提交到openwrt的trunk里  发表于 2012-9-22 21:13

评分

参与人数 5恩山币 +7 收起 理由
siasjack + 1 土豪,我们做朋友吧!
laoyangjp + 3 辛苦,学习一下
a291899192 + 1 泥马,真给力,我要顶!
interdev + 1 真给力,我要顶!
hqz1979 + 1 LZ这个给力,发帖辛苦了!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2012-9-5 21:48 | 显示全部楼层
支持教程帖.但话说我当初用类似的方法编译了一个mr11u,结果刷进去直接变砖了
我的恩山、我的无线 The best wifi forum is right here.
发表于 2012-9-5 22:12 | 显示全部楼层
顶楼主,造福720n众啊!!!!!
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2012-9-5 22:20 | 显示全部楼层
freefall12 发表于 2012-9-5 21:48
支持教程帖.但话说我当初用类似的方法编译了一个mr11u,结果刷进去直接变砖了

这个我可是亲自实验了的。
再说,如果一个想折腾OpenWrt的人都没有打算将路由折腾成砖,那就没必要搞OPenWrt了,直接用原厂不就好了吗。对吧。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2012-9-5 23:00 | 显示全部楼层
7440909 发表于 2012-9-5 22:20
这个我可是亲自实验了的。
再说,如果一个想折腾OpenWrt的人都没有打算将路由折腾成砖,那就没必要搞OPe ...

提交到官网吧,以后都不用改了。
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2012-9-5 23:08 | 显示全部楼层
jlong0983 发表于 2012-9-5 23:00
提交到官网吧,以后都不用改了。

你帮忙提交吧,我不知道怎么提交
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2012-9-5 23:10 | 显示全部楼层
jlong0983 发表于 2012-9-5 23:00
提交到官网吧,以后都不用改了。

你帮忙提交吧,我不知道怎么提交
我的恩山、我的无线 The best wifi forum is right here.
发表于 2012-9-5 23:15 | 显示全部楼层
7440909 发表于 2012-9-5 23:10
你帮忙提交吧,我不知道怎么提交

我也不会,纯小白一个
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2012-9-5 23:19 | 显示全部楼层
那就自己改吧。我试试提交到官方吧。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2012-9-5 23:29 | 显示全部楼层
好牛的帖子,支持!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2012-9-5 23:30 | 显示全部楼层
还是让官方来吧,自己来 太艰难了
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2012-9-5 23:50 | 显示全部楼层
kukusail 发表于 2012-9-5 23:30
还是让官方来吧,自己来 太艰难了

开始遇到那个patch: **** malformed patch at line xx的错误让我觉得确实挺难的,不过查资料最后不也解决了吗。
只知道等而不去动手是不行的。努力去改变才好。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2012-9-5 23:57 | 显示全部楼层
7440909 发表于 2012-9-5 23:50
开始遇到那个patch: **** malformed patch at line xx的错误让我觉得确实挺难的,不过查资料最后不也解决 ...

亲,你不上Q的。我这方面也是小白来的。不过按照你的方法大致上编译了一个固件而且还能用。只是想更深入探讨一下。资料太少了,新手入门不容易啊!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2012-9-6 00:44 | 显示全部楼层
本帖最后由 lakeshore 于 2012-9-6 00:45 编辑
7440909 发表于 2012-9-5 23:50
开始遇到那个patch: **** malformed patch at line xx的错误让我觉得确实挺难的,不过查资料最后不也解决 ...

已经有同学在8-30提交了支持WR720N的patch

http://patchwork.openwrt.org/patch/2609/
不过,"TL-WR720N have AP, 3G and Router hardware switcher(like TL-WR3020?), but I don't know what gpio number for that....."

点评

厉害  发表于 2012-9-7 16:00
我的恩山、我的无线 The best wifi forum is right here.
发表于 2012-9-6 02:10 | 显示全部楼层
本帖最后由 antclan 于 2012-9-6 02:51 编辑

不错,很详细
另外模式切换开关的定义更新了 https://www.right.com.cn/forum/thread-91571-1-1.html

点评

谢谢,继续做细致  发表于 2012-9-7 16:01
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2019-8-18 17:02

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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