【物联网】 AR9344开发环境的搭建和编译固件

一. 选择Openwrt平台的理由

传统的路由器固件是由官方提供的。这些固件是不开源的,而且这些路由器的功能也比较单一,很难满足日益变化的智能家居需求。因此,在构建物联网核心时,需要考虑第三方固件平台。

Openwrt、DD-Wrt以及Tomato是三个最为著名的第三方路由器固件平台。当然还有其他一些更加小众的版本,和很多从这三大固件衍生出来的修改版固件,在此我就不赘述了。

选择Openwrt而不选择DD-Wrt或者Tomato的理由如下:

1. DD-WRT:是三个固件平台中第三方软件支持最为丰富一个平台。

对于新的路由器的支持也是非常迅速的。然而,正是由于各种丰富的软件或工具的加入,导致DD-WRT的系统不稳定,经常会出现Bug,使得用户体验不友好。往往在一个版本中修改过的Bug,在下一次版本check的时候,又会出现,对于开发者来说比较头疼。

此外,DD-WRT对于无线信号处理方面能力较弱,Qos功能更是被许多玩家吐槽。(由于智能家居需要多设备同时接入,并且不同设备之间会存在流量的冲突,因此Qos显得比较重要,基于该原因)

2. Tomato:官方的Tomato固件是三个平台中最为稳定的。

Tomato较为封闭,对于新的路由器支持力度不够,特别是对于Atheros主控支持力度很小。于是, 我果断放弃了Tomato。

3. Openwrt:三大固件中扩展性最好的。

对于版本的控制较为严谨,通常以往出现的bug在新的版本中极少出现,在稳定性上较之DD-WRT有了很大的提升。

Openwrt对于Qos的功能做了优化,其性能可以媲美Tomato。

Openwrt是基于Linux的,适合开发者进行二次开发。(此外,Openwrt的固件有许多功能是远超过路由器本身的功能的,例如samba局域网文件共享,transmission脱机下载,ushare,uPnP等),这正是我想要的!!

当然,Openwrt本身的web,luci界面是比较丑的,系统设置也没有DD-WRT方便,易用性不是很好。(这个问题嘛,可以通过第三方软件进行改进,对于我来说就不是问题了)

 

二、Openwrt平台搭建

1. 在平台搭建之前,有几点需要说明一下的:

所谓的平台搭建,不仅包括固件的烧写,还包括开发,编译和调试的环境搭建。

Openwrt平台是基于Linux的,其支持虚拟机安装,对于手边没有设备的亲们,可以通过安装虚拟机感受一下(推荐用最新的稳定的ubuntu)。

2. Openwrt开发环境搭建流程(以Atheros 9344为例):

(1)操作系统: Ubuntu12.04  Server。(公司服务器)。

(2)在Ubuntu下搭建Openwrt开发环境:

安装依赖库:

apt-get install g++
apt-get install libncurses5-dev
apt-get install zlib1g-dev
apt-get install bison
apt-get install flex
apt-get install unzip
apt-get install autoconf
apt-get install gawk
apt-get install make
apt-get install gettext
apt-get install gcc
apt-get install binutils
apt-get install patch
apt-get install bzip2
apt-get install libz-dev
apt-get install asciidoc
apt-get install subversion

下载官方源码(以Atheros9344为例):

cd /home/XXX# XXX: user name
mkdir attitude_adjustment
svn co svn://svn.openwrt.org/openwrt/tags/attitude_adjustment_12.09

上述命令,会将svn上的源码check到本地attitude_adjustment目录下.

我使用的是attitude_adjustment版本,这个版本较为稳定,且

进行源码版本更新:  update all feeds, re-create index files, install symlinks

cd attitude_adjustment/
svn up
./scripts/feeds update -a
./scripts/feeds install -a

到目前为止,Openwrt的开发环境已经搭好了.

(3)Openwrt系统的首次编译(p.s. 在编译过程中,程序会自动通过feed机制,在网上下载相应的依赖文件,这要求编译者所在网络环境良好!):

进行环境检查,查看编译所需依赖库是否都安装:

make defconfig

若提示有某个依赖库没有安装,请按照提示按照对应的依赖库. 直到上述检查无返回。

进行编译配置:

make menuconfig

对目标固件进行配置. 由于首次编译时间会较长,因此我创建一个无外加软件的固件:(下面三幅图,分别对应于Target System,Subtarget和Target Profile)

 

最后保存设置:

之后就是漫长的编译的时间了:

make #默认安装,无提示 make V=99 #显示编译日志,并打印在shell中
 make -j8 V=s 用8个线程编译,并且显示编译过程

等待漫长的时间之后,如果成功,可在编译目录下 bin/

可以看到多个.bin文件,这些.bin文件中

openwrt-ar71xx-generic-db120-kernel.bin:对应于只烧写内核固件

openwrt-ar71xx-generic-db120-rootfs-squashfs.bin:对应于文件系统固件

openwrt-ar71xx-generic-db120-squashfs-sysupgrade.bin:对应于完整的固件

至此,一个可以烧写的固件就编译好了。当然,可以看出这个系统只能将路由器启动,能够正常加电运转,但是其没有任何功能。(在后面,我们需要对其添加各种软件支持,甚至是通过编译内核的方式添加软件应用)

(4)  固件烧写

对于固件烧写呢,有多种方式,我仅将我所使用过的方式列出来:

++Web在线固件升级,这个一般适用于原厂固件升级,或者Openwrt镜像烧写。此方法难度低,如果固件没有问题并且少些过程中没有断电的话,都能成功烧写。

++tftp方式升级,本人使用的Atheros9344路由,机身自带有console口,可以通过网线直连的方式,直接通过PC进行烧写。

      此过程难度较高,需要有一定的开发基础。

此外,还有好多方法,在网上都能找到,由于暂时不需要,我就不一一列出了。

本人用tftp烧写固件的:

方法如下:

$ tftp 0x80060000 openwrt-ar71xx-generic-ap135-kernel.bin
$ erase 0x9fe80000 +$filesize
$ cp.b $fileaddr 0x9fe80000 0x160000
$ tftp 0x80060000 openwrt-ar71xx-generic-ap135-rootfs-squashfs.bin
$ erase 0x9f050000 +$filesize
$ cp.b $fileaddr 0x9f050000 $filesize
$ setenv bootcmd 'bootm 0x9fe80000'
$ saveenv

(5) 路由重启,测试

(6) 启动后如下,测试

时间: 2024-12-06 00:48:09

【物联网】 AR9344开发环境的搭建和编译固件的相关文章

《Android 应用案例开发大全(第3版)》——第1.3节Android开发环境的搭建

1.3 Android开发环境的搭建 本节主要讲解基于Eclipse的Android开发环境的搭建(包括SDK的下载和SDK的配置).模拟器的创建和运行,以及Android开发环境搭建好之后,对其开发环境进行测试并创建第一个Android应用程序Hello Android等相关知识. 1.3.1 Android SDK的下载 前面已经对Android平台进行了简单的介绍,从本小节开始,将带领读者逐步搭建自己的开发环境.Android SDK是开发Android应用程序的基础开发环境,其本身是免费

敏捷开发的JAVA开发环境如何搭建才最好?

问题描述 敏捷开发的JAVA开发环境如何搭建才最好? 请问,如果我有一个团队需要完成一个比较有规模的JAVA网站开发项目,如何搭建AGILE原则的开发环境比较好呢?请说地详细一点.谢谢! 解决方案 开发环境和敏捷不敏捷关系不大.不过如果能用github搞一个私有库,做做持续集成,应该会有些帮助.起码在形式上. 解决方案二: 后台开发怎么搭建环境?用eclipse在本地环境搭建开发环境,通过tomcat插件或者jetty启动调试class.jsp.之前看过很多公司都通过打成war包发布到集成环境再

《stm32嵌入式系统开发实战指南》一3.1 开发环境及搭建

3.1 开发环境及搭建 3.1.1 常见开发环境 1.ADS1.2 ADS是ARM公司的集成开发环境软件,拥有非常强大的功能.ADS的前身是SDT,SDT是ARM公司几年前的开发环境软件,目前SDT早已经不再升级.ADS包括四个模块,分别是:SIMULATOR.C编译器.实时调试器和应用函数库. ADS的编译器与调试器较SDT都有了非常大的改观,ADS1.2提供完整的Windows界面开发环境.ADS1.2的C编译器效率极高,支持C以及C++,使工程师可以很方便地使用C语言进行开发.ADS1.2

Android源码下载及开发环境的搭建

1.前言         前一博文给自己列了一下Android的学习计划,是时候一个个的完成了.如计划列的,我要写的第一篇是<Android源码 的下载及开发环境的搭建>,致于如何去下载源码,其实网上已经一大堆的帖子了,一搜就有.但在这里,我想说,一个源码的下载,不是简单的把源码下载下来之 样就OK了,就可以开始你的源码学习之旅.要想更好的学习源码和进行开发,一个适合自己的开发环境还是必不可少的,这里我会列出来我给自己准备的开发环境 的做法,不能说明是最优的,但至少我感觉对我来说还是挺方便的.

《python 与数据挖掘 》一1.3 Python开发环境的搭建

本节书摘来自华章出版社<python 与数据挖掘 >一书中的第1章,第1.3节,作者张良均 杨海宏 何子健 杨 征,更多章节内容可以访问"华章计算机"公众号查看. 1.3 Python开发环境的搭建 所谓编程语言,意指"与计算机交流时使用的语言".它是一种被标准化的交流技 巧,用于连接程序员的思维和计算机的操作.学习编程语言的第一关,就是安装和环境配置.我们必须与计算机约定如何理解代码.指令和语法,才能够顺利地与计算机交流,赋予它复杂的功能.Python

图解Eclipse j2ee开发环境的搭建过程_java

Eclipse是一个开源的功能强大的ide开发环境,再加上他的扩展插件功能,使得他被广泛使用. J2ee有几种开发环境,eclipse+lomboz或者eclipse+myeclipse. Myeclipse是一个商用产品,较lomboz功能更加强,特别是在struts这样的mvc开发中. 为了能够测试,需要安装一个web server,我用的是tomcat   下面分别介绍安装和配置(win32平台).  1.jdk的安装,注意环境变量的设置,JAVA_HOME,CLASSPATH,PATH

《Android 应用案例开发大全(第3版)》——第1章,第1.3节Android开发环境的搭建

1.3 Android开发环境的搭建本节主要讲解基于Eclipse的Android开发环境的搭建(包括SDK的下载和SDK的配置).模拟器的创建和运行,以及Android开发环境搭建好之后,对其开发环境进行测试并创建第一个Android应用程序Hello Android等相关知识. 1.3.1 Android SDK的下载前面已经对Android平台进行了简单的介绍,从本小节开始,将带领读者逐步搭建自己的开发环境.Android SDK是开发Android应用程序的基础开发环境,其本身是免费的,

Ruby on Rails开发环境的搭建

本文将着重介绍如何在不同的操作系统下搭建RoR开发环境,同时,在最后会详细介绍如何在Windows操作系统下安装并配置MySQL数据库. Windows系统下开发环境的搭建 本文中将介绍如何在Windows操作系统下搭建RoR开发环境. 1.远程安装 a.步骤1:下载并安装Ruby一键安装包 下载最新的Ruby 1.8.4-16一键安装包,其下载地址为http://rubyforge.org/ projects/rubyinstaller/. 下载后运行该安装文件,显示界面如图2-1所示. 图1

百度地图最新版本的开发环境如何搭建?

问题描述 百度地图最新版本的开发环境如何搭建? 网上大多都是2.0版本的环境搭建,百度地图SDK更新,最新版本环境搭建一直搞不定!jar包so文件都不一样! 就是对着官网的来做的!http://lbc.baidu.com/static/cms/images/android_dev1.png百度地图的版本11.7号刚刚更新! 我下载的是最新的SDK跟官网上开发指南里面介绍要导入的jar包都不一样!找不到那些导包.是不是更新版本后开发指南等没更新!还是我什么地方没注意到 解决方案 參考Hello B