OpenWrt固件编译刷机完全总结

简介:

OpenWrt固件编译刷机完全总结

一.SOM9331板子信息

 

用普通安卓手机USB线连接板子与电脑,通过secureCRT串口登录,设置如下:

 

二.登录openwrt系统

Uboot信息:

uboot> version

U-Boot 1.1.4  (Jan  3 2014)

*********************************************

*        U-Boot 1.1.4  (Jan  3 2014)        *

*********************************************

 

 (AR9331) U-Boot for SOM9331

 

DRAM:   64 MB DDR2 16-bit

FLASH:  Winbond W25Q64 (8 MB)

CLOCKS: 400/400/200/33 MHz (CPU/RAM/AHB/SPI)

 

LED on during eth initialization...

 

Hit any key to stop autobooting:  0 

 

Booting image at: 0x9F020000

 

   Image name:   OpenWrt r36088

   Image type:   MIPS Linux Kernel Image (lzma compressed)

   Data size:    957100 Bytes = 934.7 kB

   Load address: 0x80060000

   Entry point:  0x80060000

 

Uncompressing kernel image... OK!

Starting kernel...

回车后:

BusyBox v1.19.4 (2013-03-14 11:28:31 UTC) built-in shell (ash)

Enter 'help' for a list of built-in commands.

 

  _______                     ________        __

 |       |.-----.-----.-----.|  |  |  |.----.|  |_

 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|

 |_______||   __|_____|__|__||________||__|  |____|

          |__| W I R E L E S S   F R E E D O M

 -----------------------------------------------------

 ATTITUDE ADJUSTMENT (12.09, r36088)

 -----------------------------------------------------

  * 1/4 oz Vodka      Pour all ingredients into mixing

  * 1/4 oz Gin        tin with ice, strain into glass.

  * 1/4 oz Amaretto

  * 1/4 oz Triple sec

  * 1/4 oz Peach schnapps

  * 1/4 oz Sour mix

  * 1 splash Cranberry juice

 -----------------------------------------------------

root@OpenWrt:/# 

Linux内核版本信息:

root@OpenWrt:/# ls

bin      etc      mnt      proc     root     sys      usr      www

dev      lib      overlay  rom      sbin     tmp      var

root@OpenWrt:/etc# cat /proc/version 

Linux version 3.3.8 (blogic@Debian-60-squeeze-64-minimal) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Sat Mar 23 16:49:30 UTC 2013

三.openwrt固件编译准备工作

Virtual box虚拟机使用Ubuntu 10.04.4 LTS系统,并与windows共享文件夹,方便后期两个平台传输资源。

编译所需安装工具:

1安装SVN工具,下载Openwrt源码,因为源码是在不断更新的,SVN管理很方便
apt-get install subversion
2.安装git工具,如果你知道github的话……
apt-get install git-core
3.安装一下必要的依赖库

sudo apt-get install g++

sudo apt-get install libncurses5-dev

sudo apt-get install zlib1g-dev

sudo apt-get install bison

sudo apt-get install flex

sudo apt-get install unzip

sudo apt-get install autoconf

sudo apt-get install gawk

sudo apt-get install make

sudo apt-get install gettext

sudo apt-get install gcc

sudo apt-get install binutils

sudo apt-get install patch

sudo apt-get install bzip2

sudo apt-get install libz-dev

sudo apt-get install asciidoc

sudo apt-get install subversion

sudo apt-get install sphinxsearch

sudo apt-get install libtool

sudo apt-get install sphinx-common

以上在非root用户下下载时需要在前面加上sudo命令:


然后在当前目录下新建openwrt目录,下载的源码包就放在该目录下:

mkdir openwrt
cd openwrt/
svn co svn://svn.openwrt.org/openwrt/trunk  这里我们下载的是trunk版本,也可以下载DREAMBOX或者backfire版本的
因为要连接国外的服务器下载源码,所以一般会很慢,建议可以下载DREAMBOX的,国内维护的,可能会快一点吧
svn co svn://svn.openwrt.org.cn/dreambox/backfire openwrt-dreambox
cd openwrt-dreambox
./scripts/feeds update -a 
./scripts/feeds install -a
下载结束后,会出现svn版本号表示下载成功了
下载完openwrt的源码后,为了使openwrt支持更多的软件,需要更新和安装其他源上面的软件:
cd ./trunk
./scripts/feeds update -a
./scripts/feeds install -a
PS:关于SVN
如果不是刚下载的源码,为保持代码为最新状态,可以运行svn update命令更新源码。
svn up或者 svn update
SVN更新的时候:
U:表示从服务器收到文件更新了
G:表示本地文件以及服务器文件都已更新,而且成功的合并了
A:表示有文件或者目录添加到工作目录
R:表示文件或者目录被替换了.
C:表示文件的本地修改和服务器修改发生冲突

SVN 查看历史信息 通过svn命令可以根据时间或修订号去除过去的版本,或者某一版本所做的具体的修改。以下四个命令可以用来查看svn 的历史:
svn log 用来展示svn 的版本作者、日期、路径等等
svn diff 用来显示特定修改的行级详细信息
svn cat 取得在特定版本的某文件显示在当前屏幕
svn list 显示一个目录或某一版本存在的文件

四.配置openwrt编译源码

测试编译环境:(先生成一个默认配置文件)

make defconfig

到这里就可以开始编译自己的固件了。进入定制界面:(如果需要前面加上sudo命令)

make menuconfig

稍后自动进入一个图形化配置界面,根据实际芯片进行配置

(我们用到的是AtherosAR9331),因此配置如下:

 

 

选择好芯片和模型配置好后,还要配置Luci(openwrt路由的web登录设置页面),将luci选项打上*,注意不是M(M只是将其当作模块来编译,而*可以将其编译进内核)

 

 

最后保存为配置文件SOM9331.config

 

执行make V=99开始编译工作,make V=99  (注意V为大写,而且编译过程中为避免权限问题,最好前面加上sudo),这里有人喜欢在make后加上”-j”选项参数,意思是让cpu全速编译,但这里不推荐,容易出现不可预料的错误或者卡顿。

五、编译过程中可能出现的问题及解决方法

既然编译了难免会出现一些错误而无法进行下去,这里总结几个自己遇到的问题及解决方法:

1.*** error: 'OpenWrtunknown' is too long, max firware version length is 13

[edimax_fw_header] *** error: 'OpenWrtunknown' is too long, max firware version length is 13

dd: failed to open'build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/f9k1115v2-rootfs': No such file or directory

dd: failed to open 'build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/f9k1115v2-uImage': No such file or directory

解决方法:一开始我是用sudo建立了那两个路径,结果还是有错,google了一下找到了方法:

 

即将trunk/scripts/getver.sh脚本第33行替换成那条语句,重新编译就OK了。

2.还有个是链接上了无法下载,需要手动下载到指定目录下,但是重新make时候编译器又将手动下载的文件remov了,这是到后来才发现的,于是果断编译开始后再将下载好的文件放到指定目录下就好了,编译通过!

3.Openwrt源码一般不支持root用户进行编译,所以一般每条命令都要利用sudo前缀,修改一下文件可以使得利用root编译。如果你是root用户名需要在配置上面做点修改。需要修改include/prereq-build.mk,把第十六行的注释掉。对于Ubuntu系统,貌似并不需要修改。

4.网友提到在执行make defconfig时,出现 checking libssl’… failed,,然后安装缺少的这个组件libssl-dev,请执行sudo apt-get install libssl-dev

请大家在操作过程中关注每一个遇到的错误,他都可能是编译成功的绊脚石~~~

5.对于连接国外源码服务器下载速度太慢的问题,可以换成国内的服务器进行下载

svn://svn.openwrt.org.cn/openwrt/branches/backfire

svn://svn.openwrt.org.cn/openwrt/trunk

svn://svn.openwrt.org.cn/dreambox/backfire openwrt-dreambox

六.烧写openwrt系统固件到SOM9331开发板

最后编译好了,cd到/openwrt/trunk/bin/ar71xx目录下,会有很多编译好的bin文件,

 

但适合SOM9331开发板的是openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

(注意:openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin原厂固件,不带Luci界面,wifi默认不打开,openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin基于openwrt的升级,可以通过make menuconfig设置带Luci界面,当然也可以登录系统设置打开wifi)

这里采用tftp传输方式烧写固件,需要准备好网线连接电脑网孔和SOM9331开发板的WAN网口(本固件靠近USBJ1WAN口,另两个J2J3LAN)

 

另外软件方面需要tftpd32来传输,结合SecureCRT串口显示openwrt系统uboot菜单命令来烧写:

1、先把本机的IP地址设置为192.168.1.2,只要设置的IP地址和SOM9331开发板的IP在一个段域内即可。

 

2、给开发板供电,打开SecureCRT软件,按下开发板上的复位按钮,根据提示在电脑上按下空格键,进入Uboot界面,设置当前环境变量(即设置服务器IP和开发板本地客户端IP)

setenv serverip 192.168.1.2

setenv ipaddr 192.168.1.1(若与自己路由器ip冲突可以另外设置)

 

3、打开tftpd32.exe软件,设置下烧写的bin文件所在目录,以及当前服务器IP地址(PC的本地IP)

 

4、回到uboot界面,开始输入tftp命令传输bin文件到给定地址:

tftp 0x80000000 openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

 

5、擦出原有的Flash区域:erase 0x9f020000 +0x7c0000,然后将刚烧写到内存的bin文件再写到刚才擦除的区域:cp.b 0x80000000 0x9f020000 0x7c0000

 

然后输入reset或者按下复位键重启,或者输入bootm 0x9f020000重启:

 

此时刷openwrt固件成功!

七、开启wifiLuci界面

命令行查看网络,输入ifconfig

 

发现没有wlan0,因为默认wifi没打开,需要手动设置,打开无线开关(配置wireless文件)键入 vi /etc/config/wireless 回车 光标移动到 option disabled 1 这一行,在这一行前面加上#注释掉,保存设置并退出,键入 /etc/init.d/network restart 回车 重启网络,这时电脑即可搜到“OpenWrt”热点并连接上,后续配置可在网页上(192.168.1.1)进行。

 

浏览器输入192.168.1.1后出现登录界面需要设置密码:

 

进入SecureCRT设置passwd:

 

输入设置好的密码即可成功登录!

 








      本文转自灬落魄灬  51CTO博客,原文链接:http://blog.51cto.com/smoke520/1830772,如需转载请自行联系原作者
相关文章
|
6月前
|
Java Linux iOS开发
(4)将固件加载到没有ArduPilot固件的主板上
(4)将固件加载到没有ArduPilot固件的主板上
49 2
|
6月前
|
小程序 Linux
嵌入式Linux系统-升级包中的脚本
嵌入式Linux系统-升级包中的脚本
47 1
|
6月前
|
Linux 编译器 Windows
【Linux】新唐NUC977系统编译及烧写流程
【Linux】新唐NUC977系统编译及烧写流程
|
6月前
|
开发工具 git
openwrt编译
openwrt编译
135 1
|
Linux 芯片 Windows
嵌入式Linux系列第3篇:uboot编译下载
嵌入式Linux系列第3篇:uboot编译下载
|
存储 缓存 安全
基于IAP和Keil MDK的远程升级设计
基于IAP和Keil MDK的远程升级设计
168 0
|
Java Linux 芯片
(4)(4.4) 将固件加载到没有ArduPilot固件的主板上
(4)(4.4) 将固件加载到没有ArduPilot固件的主板上
305 0
|
机器人 Linux C语言
openwrt开发使用-选择芯片编译烧录
openwrt开发使用-选择芯片编译烧录
566 1
openwrt开发使用-选择芯片编译烧录
|
存储 IDE Linux
【详解】嵌入式开发中固件的烧录方式
版本:v1.2   Crifan Li 摘要 本文主要介绍了嵌入式开发过程中,将固件从PC端下载到开发板中的各种方式,主要包括NFS挂载,Nand Flash和Nor Flash,USB,RS232,网卡NIC等方式。
1874 0