日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/4/21 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【物联网】 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) 啟動后如下,測試


總結

以上是生活随笔為你收集整理的【物联网】 AR9344开发环境的搭建和编译固件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。