找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 63800|回复: 110

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

 火... [复制链接]
本帖最后由 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支持后编译的):改前:
改后:


反正我觉得是舒服多了,纯正的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,就像下面这样。



上面说的增加了10行即是文件中被选中的10行,是从703哪儿复制的,只是把703改为720而已,下面的也是一样的。

下面这个直接增加这一行就行了。


3.修改trunk/target/linux/ar71xx/generic/profiles/tp-link.mk

4.修改   trunk/target/linux/ar71xx/image/Makefile

5.修改   trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh



6.修改  trunk/target/linux/ar71xx/config-3.6

7.修改  trunk/tmp/.kconfig-ar71xx_nand

8.修改  trunk/tmp/.config-target.in

9.修改  trunk/tmp/.targetinfo

10.修改  trunk/tmp/info/.targetinfo-ar71xx

11.修改  trunk/tmp/.kconfig-ar71xx_generic

12.修改  trunk/tmp/.kconfig-ar71xx

13.修改  trunk/tools/firmware-utils/src/mktplinkfw.c


14.修改  trunk/target/linux/ar71xx/base-files/etc/diag.sh

15.修改  trunk/target/linux/ar71xx/base-files/etc/uci-defaults/network

16.修改  trunk/target/linux/ar71xx/base-files/lib/upgrade/platform.sh  


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



最后祝各位有心折腾的同学成功。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

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

评分

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

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
支持教程帖.但话说我当初用类似的方法编译了一个mr11u,结果刷进去直接变砖了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

顶楼主,造福720n众啊!!!!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
freefall12 发表于 2012-9-5 21:48
支持教程帖.但话说我当初用类似的方法编译了一个mr11u,结果刷进去直接变砖了

这个我可是亲自实验了的。
再说,如果一个想折腾OpenWrt的人都没有打算将路由折腾成砖,那就没必要搞OPenWrt了,直接用原厂不就好了吗。对吧。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

7440909 发表于 2012-9-5 22:20
这个我可是亲自实验了的。
再说,如果一个想折腾OpenWrt的人都没有打算将路由折腾成砖,那就没必要搞OPe ...

提交到官网吧,以后都不用改了。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
jlong0983 发表于 2012-9-5 23:00
提交到官网吧,以后都不用改了。

你帮忙提交吧,我不知道怎么提交
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
jlong0983 发表于 2012-9-5 23:00
提交到官网吧,以后都不用改了。

你帮忙提交吧,我不知道怎么提交
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

7440909 发表于 2012-9-5 23:10
你帮忙提交吧,我不知道怎么提交

我也不会,纯小白一个
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
那就自己改吧。我试试提交到官方吧。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

好牛的帖子,支持!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

还是让官方来吧,自己来 太艰难了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
kukusail 发表于 2012-9-5 23:30
还是让官方来吧,自己来 太艰难了

开始遇到那个patch: **** malformed patch at line xx的错误让我觉得确实挺难的,不过查资料最后不也解决了吗。
只知道等而不去动手是不行的。努力去改变才好。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

7440909 发表于 2012-9-5 23:50
开始遇到那个patch: **** malformed patch at line xx的错误让我觉得确实挺难的,不过查资料最后不也解决 ...

亲,你不上Q的。我这方面也是小白来的。不过按照你的方法大致上编译了一个固件而且还能用。只是想更深入探讨一下。资料太少了,新手入门不容易啊!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 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.
回复

使用道具 举报

本帖最后由 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.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 05:42

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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