【物联网】 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

image

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

image

image

image

 

最后保存设置:

image

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

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

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

image

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

image

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) 启动后如下,测试


相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
监控 网络协议 物联网
erlang物联网开源项目emqtt下载,源码编译,调试工具和图形化监控相关(一)
erlang物联网开源项目emqtt下载,源码编译,调试工具和图形化监控相关(一)
498 12
|
消息中间件 域名解析 监控
erlang物联网开源项目emqtt下载,源码编译,调试工具和图形化监控相关(二)
erlang物联网开源项目emqtt下载,源码编译,调试工具和图形化监控相关(二)
267 0
|
物联网 数据安全/隐私保护 容器
恰恰云 物联网集成开发环境快速入门
CAT▪IOT-IDE 是北京恰恰云科技有限公司开发的一套物联网集成开发环境,用来帮助用户快速开发出物联网项目应用。 CAT▪IOT-IDE 的核心目标是提供快速开发物联网的工具,借助图形化、数据流模式,将应用界面、设备接入、数据处理环节集成整合在一起,用户不需要复杂的配置和专业的知识,即可涉足物联网应用的开发搭建。
2523 0
|
IDE 物联网 开发工具
【物联网(IoT)开发】Arduino IDE(集成开发环境)下载及安装
Arduino主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你在计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
1787 0

热门文章

最新文章

相关产品

  • 物联网平台
  • 下一篇
    DDNS