openwrt配置编译流程

来源:互联网 发布:python 微信开发文档 编辑:程序博客网 时间:2024/05/16 01:37

引子,实验室做一个摄像头无线传输的项目,最后硬件确定为【Easylink M-mini AR9331开发板 】,搞硬件的哥们儿从淘宝上买了一块这样的开发板,我也查了一下板子的资料,主要信息如下,

型号: Elink M-mini
系统: 默认openwrt
CPU: AR9331 400MHZ MIPS 24k内核
RAM: 512Mbit(64MByte) DDR2 400MHZ
Flash: 32Mbit(4MByte)/64Mbit(8MByte 默认)/128Mbit(16MByte)可选
无线速度: 150Mbps
通用GPIO: 8个(不包括TX,RX)
SPI: 1个(复用)
I2S: 1个(复用)
JTAG: 1个(复用)
USB: Usb 2.0 master接口,支持usb hub扩展
调试: 串口调试接口(TTL)
供电: 3.3V供电电压。
功耗: 0.36W
有线网络: 1个100M网络接口
天线: ipx焊盘,可直接焊接天线或者IPX座。
产品尺寸: 21.8 * 36.2MM
固件: 完全兼容WR703 openwrt,复位开关/系统LED都与703兼容。

此款板子支持无线路由功能,所以对网络传输实现起来比较方便,带来的问题就是板子使用的是openwrt系统,上网查了一下,大概说就是这款系统是liunux为无线路由器量身定做的系统。跟多相关的简介百度,Google上有很多说明。

下载,编译image花了几天时间,其中也碰到了一下问题,现在就相关流程在这里总结一下。


编译环境:VMware虚拟机+Ubuntu14.04

  • 依赖库
sudo apt-get update //更新组件列表sudo apt-get install gccsudo apt-get install g++sudo apt-get install binutilssudo apt-get install patchsudo apt-get install bzip2sudo apt-get install flexsudo apt-get install bisonsudo apt-get install makesudo apt-get install autoconfsudo apt-get install gettextsudo apt-get install texinfosudo apt-get install unzipsudo apt-get install sharutilssudo apt-get install subversionsudo apt-get install libncurses5-devsudo apt-get install ncurses-termsudo apt-get install zlib1g-devsudo apt-get install git-coresudo apt-get install gawksudo apt-get install asciidocsudo apt-get install libz-dev
  • 下载opwenrt源码,可以用git下载最新的trunk版本。实验室买的板子为attitude_adjustment版本。大家可以根据自己的需要下载相应的版本。
//trunk 版本:git clone git://git.openwrt.org/openwrt.git//Barrier Breaker版本:git clone git://git.openwrt.org/14.07/openwrt.git//attitude_adjustment版本:svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment   //svn方式下载源码
  • 更新feeds
cd attitude_adjustment //进行相应的工程目录./scripts/feeds update –a   //更新feeds包,feeds包的理解下文会叙述./scripts/feeds install –a  //应用第三方源码patch –p0 < elink-aa.patch //此步是淘宝给的patchmake dirclean    //初始化编译环境

解释,
1. feeds可以理解成各个应用程序集中打包,用feeds更新一下,会更新所有的应用程序,在工程跟目录中有个feeds.conf.default文件,里面详细记述了feeds上网下载应用的地址,我用的版本里面我修改了以下语句

#src-svn xwrt http://x-wrt.googlecode.com/svn/trunk/package#src-svn luci http://svn.luci.subsignal.org/luci/branches/luci-0.11/contrib/packagesrc-git luci https://github.com/openwrt/luci.git;luci-0.11

第一个语句注释掉了,因为svn下载的地址是Google上托管的代码,国内目前不能访问Google,所以不注释掉下载会失败,看了一下名字叫xwrt,我猜测可能是openwrt显示图形界面的应用,我不使用openwrt的图形界面,所以注释掉无所谓。第二行是关于luci的应用,这个对我很重要,但是svn上下载也会失败,查了一下说是luci这个svn版本已经没有维护了,通过第三条的git可以正常的下载。luci我百度了一下说是一种脚本语言,我目前的感觉它更像一个网页东西,就是连接板子后在浏览器输入192.168.1.1后出现的画面。
2. 打了patch原因是此版本没有M-Mini配置,添加此版本的配置,openwrt自带配置不需要打patch。

  • 配置参数
make menuconfig

根据上面硬件的配置,
Target System 是芯片系列:Atheros AR7xxx/AR9xxx
Target Profile 是机型型号:ELINK M-mini
Kernel Modules配置:
Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
Luci配置如下:
LuCI—>Collections—– <*> luci
LuCI—>Applications —> <*>luci-app-qos
LuCI—>Themes —> <*>luci-theme-openwrt
LuCI—>Translations—- <*> luci-i18n-Chinese
LuCI—>Translations—- <*> luci-i18n-English
Network配置:
Network—>Routing and Redirection—- <*> ip
上面这些配置,板子已经可以正常启动,我做摄像头所以有在kernel中打开了UVC的编译选项。如果需要额外功能,添加到编译选择即可。

  • 修改代码

在这里我们做的移植中有些可以通过直接修改开发板中的配置文件来实现,而不需要重新编译固件,但是我们要的是一个编出来就是默认配置的固件,所以以下移植都将是在编译前实现的。
Wifi配置,Openwrt编译出来的固件,wifi默认是不开启的,需要做一些修改让其上电自动开启AP模式。修改xxxx/files/lib/wifi/mac80211.sh。
ssid就是对应option ssid,如果名称有空格需要把名称放到英文符号’’之内
option channel为默认信道,可将${channel}改为信道值
option disabled 为无线开关1为关闭0为开启
option mode 为无线模式默认ap
option encryption 为加密方式

  • 编译image
sudo make V=99

此时电脑需要联网,从网上自动下载代码,经过漫长的等待,编译完成后,会在bin/目录下产生相应的bin文件,我这里是openwrt-ar71xx-generic-M-mini-squashfs-factory.bin,将这个文件烧到板子上,打开电脑wifi会看到openwrt的热点,连接,在浏览器中输入192.168.1.1,输入默认密码admin就可以登录了,在里面修改密码和设置SSH,就可以用SSH登录开发板了。

注意:编译配额的时候可能有账户问题,如果使用的root用户,需要在命令后加 FORCE=1,最好使用非root账户,就可以直接操作了。

0 0
原创粉丝点击