OpenWrt移植簡介及平臺應用_第1頁
OpenWrt移植簡介及平臺應用_第2頁
OpenWrt移植簡介及平臺應用_第3頁
OpenWrt移植簡介及平臺應用_第4頁
OpenWrt移植簡介及平臺應用_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 openwrt移植簡介及平臺應用移植簡介及平臺應用 openwrt 簡介 openwrt 編譯環(huán)境搭建 openwrt 編譯及其常見問題 openwrt 固件升級 如何在openwrt環(huán)境下做開發(fā) 相關資源收集 openwrt 簡介 openwrt是一個高度模塊化、高度自動化的嵌入式linux 系統(tǒng),擁有強大的網(wǎng)絡組件,常常被用于工控設備、電話、 小型機器人、智能家居、路由器以及voip設備中。 openwrt支持各種處理器架構,無論是對arm,x86, powerpc或者mips都有很好的支持。 其多達3000多種軟 件包,囊括從工具鏈(toolchain),到內(nèi)核(linux kerne

2、l), 到軟件包(packages),再到根文件系統(tǒng)(rootfs)整個體系, 使得用戶只需簡單的一個make命令即可方便快速地定制 一個具有特定功能的嵌入式系統(tǒng)來制作固件。 其模塊化 設計也可以方便的移植各類功能到openwrt下,加快開發(fā) 速度。 openwrt 簡介 openwrt的特點 openwrt提供了一個完全可寫文件系統(tǒng)及 軟件包管理, 它通過簡單易用的方式,最大限度地降低了嵌入式linux開 發(fā)的門檻,并充分釋放并挖掘嵌入式設備的潛能,它允許 您使用軟件包的概念來定制嵌入式設備,這使得它能適用 于絕大多數(shù)應用。對于開發(fā)人員,openwrt提供簡單易用 的環(huán)境框架來構建應用程序。

3、對于用戶來說,這意味著完 全定制的自由,它通過您預想不到的方式讓你了解嵌入式 是什么。 開源和free openwrt項目是gpl許可下的完全自由和開 放源碼的項目。項目打算將源代碼永久存放于openwrt站 點,以便易于獲得源代碼。 輕松和自由的入門 為什么選擇openwrt 為什么使用openwrt? gnu為我們提供了很多免費的軟件,我們可以用一個很 低的價錢購買像wrt54g的硬件,做成一個小型的linux 系統(tǒng),現(xiàn)在openwrt已經(jīng)提供了近千個多個已編譯好的軟 件,而且數(shù)量還在不斷增加,而openwrtsdk更是簡化了 嵌入軟件開發(fā)的工序。 為什么學習openwrt? 你不需要對m

4、ips處理器有很深入的了解,也不用懂得如何 去設計一個arm或mips處理器專用的linux內(nèi)核,因為這些 在網(wǎng)上已有人為你做好,你只需懂得如何安裝和使用就行 了,不過你也可以去 找到相關的 資料。如果你對linux系統(tǒng)有一定的認識,并想學習或接觸 嵌入式linux的話,openwrt很適合你,你將學會一些無線路 由器的基本知識,以及一般嵌入式linux的開發(fā)過程. 為什么選擇openwrt 通過openwrt快速構建一個應用平臺,openwrt從 交叉編譯器,到linux內(nèi)核,再到文件系統(tǒng)甚至 bootloader都整合在了一起,形成了一個sd

5、k環(huán) 境。 隨著linux的成熟,大量不同的處理器內(nèi)核和 應用軟件相繼出現(xiàn),當你熟悉這些嵚入式linux的 基本開發(fā)流程后,你不再局限于mips處理器和無 線路由器,你可以嘗試在其它處理器,或者非無線路 由器的系統(tǒng)移植嵌入式linux, 定制合適自己的應 用軟件,并建立一個完整的嵌入式產(chǎn)品。 openwrt 編譯環(huán)境搭建 首 先, 要有支持編譯openwrt的操作系統(tǒng)。 實體機或者虛擬機(vmware 或者 qemu)里 的操作系統(tǒng)都行,這里推薦使用linux系統(tǒng)。 bsd和mac osx系統(tǒng)也可以編,但不推薦, 且未驗證是否可編譯成功。下文中我使用 的是ubuntu操作系統(tǒng),使用 apt-g

6、et 來管理 包。 openwrt 編譯環(huán)境搭建 第二步, 就是安裝所需要的各種軟件包, 包括編譯器,解壓工 具,特定的庫等. 這些工作可以簡單的通過鍵入以下命令 (通 常需要root 或者是 sudo 權限),以root權限安裝下列軟件包 (可能并不完整,會有提示,提示缺少即裝就可以了): 32位(x86)請執(zhí)行下列命令: # apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev 64位(x86_64)請執(zhí)

7、行下列命令(多裝了哪些庫或軟件包呢? 請您仔細看一看哦): # apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs lib32gcc1 libc6-dev-i386 openwrt 編譯環(huán)境搭建 參考 本列表中 所列的編譯環(huán)境所需要軟件 包或庫。 某些依賴的為庫或軟件包也許操作系統(tǒng)中 已經(jīng)安裝過,此時apt-get會作出提示(提 示您忽略或重新安裝的) openwrt 編譯環(huán)境搭建 最

8、后下載一份完整的 openwrt 源碼到編譯 環(huán)境中。關于openwrt的源代碼下載,途徑 有二,一是通過 svn ,一是通過 git,建議 使用 svn ,因為openwrt主要以 svn 來維 護openwrt系統(tǒng)的版本。另外,請注意 openwrt中不同的分支版本,一個是用得較 多的開發(fā)快照,俗稱 trunk,二是穩(wěn)定版, 俗稱 backfire。 openwrt 編譯環(huán)境搭建 安裝subversion 若你想通過svn下載源代碼,你需安裝 subversion。subversion,或稱svn, 是 openwrt的project中用來控制版本的系統(tǒng), 它非常類似的 cvs的界面和使用

9、條款。 執(zhí) 行下述命令即可安裝svn,很容易的: # apt-get install subversion openwrt 編譯 subversion 安裝完畢,通過svn命令可獲 取得到一份openwrt純凈源代碼。您還得 創(chuàng)建一個目錄以便存放獲取得到的openwrt 源代碼,要獲取源代碼你還得輸入 subversion命令來獲取 (svn里這種操作稱 之為check out) 。 openwrt 編譯 編譯流程編譯流程 編譯專屬于您的設備的特定openwrt固件以一下五個步驟: 通過subversion命令獲得源代碼; 更新(或安裝) package feeds 創(chuàng)建一個默認配置以檢查編譯

10、環(huán)境是否搭建好了 (假 如需要的話); 用menuconfig來配置即將編譯生成的固件映像文件 的配置項; 最后開始編譯固件; openwrt 編譯 下載源代碼 最后,下載一份完整的openwrt源代碼。你可選擇: 下載穩(wěn)定發(fā)行版,或 下載開發(fā)版 (俗稱“trunk”版)。 使用發(fā)行版的源碼 openwrt公開發(fā)行的穩(wěn)定版為 openwrt 10.03 backfire。 此版本是最穩(wěn)定的,但也許不包括最新更新的補丁或最新 編寫的出的新功能。 下述代碼即舉例說明了通過svn從brandkfire獲得backfire源 代碼(此版本意思是從trunk分支的補丁也在backfire版本中 了,即包

11、含修復補?。?openwrt 編譯 # mkdir openwrt/ # cd openwrt/ # svn co svn://openwrt/branches/backfire 您也可以通過下述命令,下載不含修復補丁的 backfire的原版源碼: # svn co svn://openwrt/tags/backfire_10. 03 注解: 上述svn命令將在當前目錄創(chuàng)建一個 openwrt/backfire/ 子目錄,此目錄包含此命令獲 取到的源代碼。 openwrt 編譯 使用開發(fā)版源代碼 當前的開發(fā)版本分支(trunk)已

12、包含最新的實驗補丁。此分 支或許還突破了openwrt原來所不支持的硬件設備的限制 哦,驚喜的同時也有風險存在。mkdir openwrt/ cd openwrt/ svn co svn://openwrt/trunk/(回車后等 待下載) svn 回滾 或 svn 指定版本 需要的版本是 28007,操作: svn co svn://openwrt/trunk -r 28007 回滾或到指定版本:svn up -r 28007 指定luci版本 cd trunk/feeds/luci svn up -r r7612 openwrt

13、編譯 關于關于openwrt dreambox openwrt中文網(wǎng) 創(chuàng)建于2010年2月14日 建立了技術論壇、開發(fā)站點、下載中心。 主要是為openwrt的中文化,以及固件的易用性。 獲取dreambox trunk開發(fā)版svn代碼庫 # svn co svn:/ openwrt-pandorabox openwrt 編譯 開始準備編譯 首先跟進并更新源代碼 因openwrt的源代碼隨時都會變動,故此命令將 確保您所獲取得到的源碼的最新性。 如果你用的是backfire版本的源碼: cd openwrt/backfire/ 如果你用的是trunk版本的源碼: cd openwrt/trun

14、k/ svn up ./scripts/feeds update -a ./scripts/feeds install -a openwrt 編譯 下一步是檢查編譯環(huán)境,若可進行編譯則 生成默認配置: make defconfig 若defconfig回顯提示缺少軟件包或編譯庫 等依賴,則按提示安裝所缺軟件包或庫等 即可,不難的,細心點就行。 進入編譯組件包菜單 make menuconfig openwrt 編譯 make menuconfig會有一個編譯管理器,在里面可以選擇 型號、op功能組件,需要用到方向鍵、回車鍵、空格鍵。 方向鍵是移動光標,回車鍵是確認,空格鍵是選擇(在選 項框按下

15、空格鍵,*號是編譯進固件,m是編譯但是不編譯 進固件)。 1.選擇cpu型號 target systematheros ar71xx/ar7240/ar913x/ar934x 2.選擇路由型號 target profile-tp-link tl-wr703 3.添加luci lucicollections luci openwrt 編譯 4.添加luci的中文語言包 lucitranslations- luci-i18n-chinese 5.添加ddns luciapplications luci-app-ddns. 6.添加usb掛載 base system block-mount 7.添加

16、硬盤格式支持 kernel modules filesystems kmod-fs-ext4 8.添加utf8編碼 kernel modules native language support kmod-nls-utf8 9.添加usb擴展支持 kernel modules usb support kmod-usb-storage-extras. 110.添加自動掛載工具 utilities filesystem badblocks openwrt 編譯 開始編譯make v=99,最后會得到一個4m的帶中文 luci的tl-wr703n固件。 網(wǎng)上固件下載網(wǎng)址: http:/download

17、/ 在編譯的時候需要比較長的時間,因為要下載很多 軟件包,假如編譯下載不成功,可以退出,自己去 下載后放入dl的文件夾下,再繼續(xù)編譯。 如果出現(xiàn)編譯錯誤,請再次檢查開始編譯前那些依 賴程序裝好了沒有 ,如果還有錯誤請看后面的編譯出 現(xiàn)的常見問題。 openwrt 編譯 若編譯成功,會出現(xiàn)如下圖所示: openwrt 編譯 編譯成功后,在/openwrt/trunk/bin/ar71xx 目錄下可見如下2個固件, openwrt-ar71xx-generic-tl-wr703n-v1- squashfs-factory.bin 出廠帶配置的固件 openwrt-ar71

18、xx-generic-tl-wr703n-v1- squashfs-sysupgrade.bin 在原來的openwrt基礎上更新的固件 openwrt 編譯 內(nèi)核配置 make kernel_menuconfig命令是進去配 kernel 這和普通的linux kernel的 make menuconfig沒有什么區(qū)別 ,在 machine selection加一個選擇board,選 tl-wr703n supprot。其他需要什么就配 置什么,與linux內(nèi)核一樣。配置完后重新 編譯。 openwrt 編譯 修改默認ssid,添加wifi配置 修改mac80211.sh文件,位于packa

19、ge/mac80211/files/lib/wifi option disabled 1改成0,默認開啟wifi。 option disabled 0下添加 option htmode ht40+ option channel 1 option country cn option txpower 17 option ssid openwrt-wr703 option htmode ht40+ 使用40mhz頻寬,但只支持1-7信道。ht40-,支持5- 13信道。ht20 支持1-13信道,20mhz頻寬 option channel 1使用信道1,1-13之間。若有限定頻寬,信道參考如上。

20、option country cn 設定wifi標準為中國 option txpower 17 發(fā)射功率為17dbm,大約50mw。按實際板子的功率來設 置。 openwrt 編譯 修改root密碼 由于openwrt默認是沒有密碼的,所以ssh沒法連接, 只能連接telnet,我們只要做到讓openwrt開啟時 就配置好密碼就可以了! 修改shadow文件,位于package/base-files/files/etc 如需要密碼為root: root:$1$ioswlaew$jwht3bwuhtq7vklywxwpv 0:15811:0:99999:7: 將密碼修改成root。 編譯的常見問

21、題 一、普遍問題 a.在menuconfig中找不到所需的組件,用腳 本./scripts/feeds 安裝對應的package,嫌麻煩直接-a, 就是時間長點。 b.編譯完成后bin目錄下找不到生成的固件,恭喜你,你犯 了跟我一樣2b的錯誤,你選擇的組件過大,導致所需的固 件大小操作targets源代碼中的限制,解決方法,如果確定 你的flash比較大,修改源代碼,各個路由器不同網(wǎng)上找, 否則減少組件,只選擇最基本的組件。 c.編譯錯誤,查看錯誤信息。make的時候加參數(shù)v=99, 為便于查找錯誤可以重導向一下2 return 0; 如何在openwrt環(huán)境下做開發(fā) 編寫makefile文件

22、 # build helloworld executable when user executes make helloworld: helloworld.o $(cc) $(ldflags) helloworld.o -o helloworld helloworld.o: helloworld.c $(cc) $(cflags) -c helloworld.c # remove object files and executable when user executes make clean clean: rm *.o helloworld 在這兩個文件的目錄下,執(zhí)行make 應該可以生成h

23、elloworld的可執(zhí)行 文件。執(zhí)行helloworld后,能夠打印出“hell! o world, why wont my code compile?”。 這一步,主要保證我們的源程序是可以正常編譯的。 下面我們將其移植到openwrt上。 如何在openwrt環(huán)境下做開發(fā) 將openwrt-sdk-ar71xx-for-linux-i686-gcc-4.3.3+cs_uclibc-.tar.bz2解壓 tar xvf openwrt-sdk-ar71xx-for-linux-i686-gcc-4.3+cs_uclibc-.3.tar.bz2 (3)進入sdk cd openwrt-sdk-ar71xx-for-linux-i686-gcc-4.3.3+cs_uclibc- 可以看到里面的目錄結構跟我們之前source的目錄結構基本相同,所需要編譯的軟件包, 需要放置在packag

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論