
此教程为入门教程只讲解如何编译 U-Boot,不讲解代码修改及排错等。
此教程适用于 AR 及 QCA 系列的 ar71xx 平台。
若有疑问,或看不懂,请直接回帖,以便楼主修改教程。。
准备工作:
Linux 系统:
32 位 / 64 位均可。楼主使用的是 Ubuntu 12.10 amd64。
64 位环境下需要安装 32 位库。如 Ubuntu 下是运行 sudo apt-get install libc6:i386 libgcc1:i38 libstdc++5:i386 libstdc++6:i386。
基础编译环境:
一般来说每个发行版的 Linux 系统都有包管理器。
例如在 Ubuntu 的 Shell 里运行 sudo apt-get install build-essential 就可安装好编译环境。
其他的系统请自行百度。
基本的 Linux Shell 基础:
这个只能自己想办法解决了。
入门级:
入门级使用现成的工具链和编译脚本,使用最少的命令完成代码编译。
使用 TL-MR3420 v1 的代码进行讲解。
1. 下载源代码
打开 http://www.tp-link.com/en/support/gpl/,在左侧选择 3G/4G Routers,然后在列表中选择 TL-MR3420 V1 的代码进行下载。
2. 解压代码
这个就随便了,一般解压在主目录。
将下载的 mr3420_3220v1.tar.gz 移动到主目录。
注意:这里压缩包扩展名有误,实际上是 bzip2 压缩的。
打开终端,此时终端应该默认在主目录下,若不在主目录下,就运行 cd ~ 命令进入主目录。
运行命令 tar -jxvf mr3420_3220v1.tar.gz 以解压代码。
3. 编译代码
运行命令 cd mr3420_3220v1/build 进入代码编译目录。
运行命令 make BOARD_TYPE=ap99 fs_prep 以创建编译过程所需的目录。
运行命令 make BOARD_TYPE=ap99 uboot 以开始编译 U-Boot。
4. 刷机测试
如果没有意外,那么编译结束后的输出应该是这样的:
生成的 u-boot.bin 位于 mr3420_3220v1/images/ap99/ 目录下。
此文件未被填充到 128K,需要手动填充。
填充后的文件就可以进行刷机测试了。
此文件是未压缩版,因此本身体积很大。此代码也不能生成压缩版的 U-Boot。
5. 说明
操作说明请参阅代码根目录下的 readme.txt。
入门级的操作就这么简单。
进阶级:
进阶级依然使用 TL-MR3420 v1 的代码。
进阶级将分离 U-Boot 代码及现成的工具链,搭建基本的交叉编译环境。
1. 分离 U-Boot 代码
U-Boot 代码位于 mr3420_3220v1/ap99/boot/u-boot 。
将整个 u-boot 目录复制到一个地方,如用户主目录。
此 u-boot 目录里的代码就是全部所需的代码了。之后的所有操作都在这里面完成。
2. 复制工具链
此工具链即为编译器,但是是针对 mips 架构的交叉编译器。
工具链位于 mr3420_3220v1/build/gcc-3.4.4-2.16.1/build_mips。
将整个 build_mips 复制到一个地方,如主目录。
3. 搭建编译环境
现在,mr3420_3220v1 目录已经没有用,可以删掉,因为所有需要的文件都已复制出来了。
设置环境变量以让 Shell 能够访问到工具链。运行命令 export PATH=$PATH:~/build_mips/bin 即可。
此设置只在当前的 Shell 里有效。关于如何设置永久的环境变量,请自行百度。
4. 清理代码
此操作用于清理上次编译产生的临时文件及配置文件,为下次配置及编译做准备。
进入 u-boot 目录:运行命令 cd ~/u-boot 。
运行命令 make distclean 以执行完全清理。
5. 编译代码
这里是一个完整的编译步骤。
a. 指定开发板类型
此操作表示我们要编译哪个开发板。AR7241 的开发板(这里其实叫参考板,reference board)名称为 ap99,因此运行 make ap99_config 以进行配置。
所有的开发板定义都写在 Makefile 里。其中以 ***_config: 开头的行,*** 就是开发板名称。
AR 及 QCA 系列的参考板名称会在最后列出。
有些开发板还有额外的参数可以定义,这里暂不讲解。
b. 编译
运行命令 make CROSS_COMPILE=mips-linux- 进行编译。
CROSS_COMPILE=mips-linux- 指定了交叉编译器的文件名前缀为 mips-linux-。例如,要使用工具链中的 gcc 程序,那么就运行 mips-linux-gcc。这个可以看一下 build_mips/bin 目录下的文件名。
由于之前运行了 export PATH=$PATH:~/build_mips/bin 命令,所以 Shell 能够直接找到相关程序的位置。否则,CROSS_COMPILE= 需要指定为 ~/build_mips/bin/mips-linux-。
c. 测试
编译成功后,u-boot 目录下会生成 u-boot.bin,这就是未填充到 128K 的文件。
6. 常用编译命令。
make ***_config 配置生成为指定的开发板(*** 为开发板名称)。
make CROSS_COMPILE=*** 编译代码,并指定交叉编译器文件名前缀为 ***。
make clean 清理上次编译生成的临时文件。此命令不会删除开发板配置,下次编译可以直接运行 make 命令。
make distclean 清理编译生成的临时文件及开发板配置。运行此命令后,需要再次指定开发板后才能进行编译。
其它说明:
这里使用的 MR3420 v1 代码不能生成压缩代码。其他的,如 AR9331 AR934x 等代码需要在编译时加入 COMPRESSED_UBOOT=1 来进行编译,如 make CROSS_COMPILE=mips-linux- COMPRESSED_UBOOT=1 。
编译 AR934x QCA95xx 的代码需要指定使用的以太网交换机 PHY 类型,即在编译时加入 ETH_CONFIG=_s27 或 ETH_CONFIG=_s17 。其中 _s27 为内置百兆 PHY,_s17 为外部千兆 PHY。
具体路由型号的 GPL 代码里都有说明文件,可以根据说明文件来进行编译,并了解参考板名称。
常见参考板名称:
AR7240 - ap91
AR7241 - ap99
AR9331 - ap121
AR9341 - ap123
AR9342 - mi124
AR9344 - db12x
QCA953x - ap143
QCA9558 - ap135
其它的请在 https://wikidevi.com/wiki/Atheros 及 https://wikidevi.com/wiki/Qualcomm_Atheros 上进行查找。


相关文章- 玩转 openwrt 2
- OpenWrt for Mini6410/Tiny6410 with GTK,QT,OpenCV
- Linux下突破校园天翼宽带客户端限制(已移植OpenWRT)
- 20161104 更新稳定1505CC的后续折腾固件 带s和谐社会s s和谐社会sR等等
- ipset for dnsmasq
- gcc 从5.3升级到6.1之后 openwrt pkg-config glib编译报错修复办法
- openwrt 15.05 CC (非trunk 而是15.05 现在官方应该只到rc3 ) ar71xx 部分固件
- 404页面劫持和应用推广,小米路由器开发版自寻死路
- OpenWrt 15.05 CC"正式版" ramips 固件发布
- 20170607 LEDE for MT7628/88/20/21 专版
本文地址:https://blog.sxx1314.com/openwrt/105.html
版权声明:若无注明,本文皆为“unix 软硬件 技术宅 ”原创,转载请保留文章出处。百度已收录















