|
本帖最后由 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的所有文件 - grep 703n trunk/* -r -l
- 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个文件,已经该好且编译无错,下载后按说明文件做即可- trunk/target/linux/ar71xx/generic/profiles/tp-link.mk
- trunk/target/linux/ar71xx/patches-3.6/610-MIPS-ath79-openwrt-machines.patch
- trunk/target/linux/ar71xx/image/Makefile
- trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh
- trunk/target/linux/ar71xx/config-3.6
- trunk/tmp/.kconfig-ar71xx_nand
- trunk/tmp/.config-target.in
- trunk/tmp/.targetinfo
- trunk/tmp/info/.targetinfo-ar71xx
- trunk/tmp/.kconfig-ar71xx_generic
- trunk/tmp/.kconfig-ar71xx
- trunk/tools/firmware-utils/src/mktplinkfw.c
- trunk/target/linux/ar71xx/base-files/etc/diag.sh
- trunk/target/linux/ar71xx/base-files/etc/uci-defaults/network
- trunk/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
- 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,内容如下- /*
- * TP-LINK TL-WR720N board support
- *
- * Copyright (C) 2011 dongyuqi <729650915@qq.com>
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published
- * by the Free Software Foundation.
- */
- #include <linux/gpio.h>
- #include <asm/mach-ath79/ath79.h>
- #include "dev-eth.h"
- #include "dev-gpio-buttons.h"
- #include "dev-leds-gpio.h"
- #include "dev-m25p80.h"
- #include "dev-usb.h"
- #include "dev-wmac.h"
- #include "machtypes.h"
- #define TL_WR720N_GPIO_LED_SYSTEM 27
- #define TL_WR720N_GPIO_BTN_RESET 11
- #define TL_WR720N_GPIO_USB_POWER 8
- #define TL_WR720N_KEYS_POLL_INTERVAL 20 /* msecs */
- #define TL_WR720N_KEYS_DEBOUNCE_INTERVAL (3 * TL_WR720N_KEYS_POLL_INTERVAL)
- static const char *tl_wr720n_part_probes[] = {
- "tp-link",
- NULL,
- };
- static struct flash_platform_data tl_wr720n_flash_data = {
- .part_probes = tl_wr720n_part_probes,
- };
- static struct gpio_led tl_wr720n_leds_gpio[] __initdata = {
- {
- .name = "tp-link:blue:system",
- .gpio = TL_WR720N_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
- };
- static struct gpio_keys_button tl_wr720n_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = TL_WR720N_KEYS_DEBOUNCE_INTERVAL,
- .gpio = TL_WR720N_GPIO_BTN_RESET,
- .active_low = 0,
- }
- };
- static void __init tl_wr720n_setup(void)
- {
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
- ath79_register_m25p80(&tl_wr720n_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr720n_leds_gpio),
- tl_wr720n_leds_gpio);
- ath79_register_gpio_keys_polled(-1, TL_WR720N_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(tl_wr720n_gpio_keys),
- tl_wr720n_gpio_keys);
- ath79_set_usb_power_gpio(TL_WR720N_GPIO_USB_POWER, GPIOF_OUT_INIT_HIGH,
- "USB power");
- ath79_register_usb();
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 2);
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
- ath79_register_eth(1);
- ath79_register_wmac(ee, mac);
- }
- MIPS_MACHINE(ATH79_MACH_TL_WR720N, "TL-WR720N", "TP-LINK TL-WR720N v3",
- 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后的截图
最后祝各位有心折腾的同学成功。
请不要胡乱输入以及粘贴、复制等方式灌水
请尊重作者、并共同维护网站的正常阅读,否则账户将会被限制发帖、回帖,并且积分可能会被清零,站内短信以及阅读权限等都会受到影响,谢谢。
具体限制方式:https://www.right.com.cn/forum/thread-8307840-1-1.html
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|