色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于LinKsys WRT54GL路由器實現嵌入式Xinu部署過程分析

電子設計 ? 來源:單片機與嵌入式系統應用 ? 作者:張曉華;張玉華 ? 2020-03-06 08:01 ? 次閱讀

引言

近年來,隨著嵌入式系統的飛速發展和廣泛應用,裸機模式已無法適應日益復雜的系統開發,嵌入式操作系統已經成為開發中不可或缺的核心軟件,對其進行學習研究的需求也日益突出。

嵌入式操作系統的學習平臺雖然多種多樣,但選擇一個合適的平臺卻并不簡單。商業系統通常有著完善的支持,但復雜的架構、昂貴的價格和不公開的源代碼使得它們難以成為初學者學習的對象。主流的開源操作系統,雖然可以獲得源代碼實現,但龐大的代碼行,使得系統的機理被復雜的細節掩蓋,依然令人望而卻步。專門的教學操作系統,有針對地簡化了代碼實現,但又因為缺乏應用實例而缺乏公信力。

此外還存在硬件平臺成本過高造成的軟硬件脫節的問題,完全脫離硬件平臺的軟件學習使人難以全面掌握嵌入式系統?;谔摂M環境進行仿真雖然一定程度上解決了這個問題,但是缺少硬件平臺的實踐終究無法獲得較深的感性認識,極易忽視很多真實環境的注意事項。

針對這些問題,本文提出了一種基于路由器設計嵌入式操作系統學習平臺的思路,以LinKsys WRT54GL路由器作為硬件平臺,選擇開源OpenWrt作為主操作系統用于高級實踐開發的學習,嵌入式Xinu作為從操作系統用于基礎理論的學習。把兩個優秀的嵌入式操作系統集中到同一個硬件平臺,比較好地解決了當前嵌入式操作系統學習平臺存在的功能繁簡不當、軟硬件容易脫節的問題,同時大大降低了學習成本。

1 平臺的架構設計

1.1 硬件平臺選擇

現在,市面上常用的無線路由器大多采用的是ARM或MIPS的處理器,這些產品本身就是嵌入式系統的典型應用。更為重要的是有很多產品不僅有著強大的運算能力和豐富的板載資源,而且支持眾多第三方固件,可以通過升級固件豐富功能,擴展能力極佳,作為嵌入式操作系

統的硬件平臺非常合適。

LinKsys公司的WRT54GL是一個極易采購的經典無線路由器,它擁有200 MHz的處理器,板載4 MB Flash和16 MB Ram完全勝任嵌入式開發的學習、研究和開發。更為重要的是,在網絡上已有很多為它設計的開源項目,使得學習資源唾手可得。

1.2 軟件平臺架構

考慮到學習研究的需要,源代碼的公開與否是選擇軟件平臺的首要條件,因此確立了以開源操作系統為選擇目標。同時考慮到功能的平衡——既要能夠用于操作系統基本原理的學習,又要能夠完成進一步的高級功能學習,繁簡得當的雙操作系統的軟件架構就成為當然的選擇。這樣的架構使得既可以在學習初期利用代碼較為簡潔的從操作系統完成理論的學習和實踐,又可以在后期利用功能強大的主操作系統完成進階學習,兩者結合相得益彰,貫穿整個嵌入式操作系統的學習過程。

1.2.1 主操作系統

在選定了WRT54GL作為硬件平臺后,自然就需要為其選擇適當的開源路由操作系統。開源路由操作系統非常之多,常見的有Vyatta、Cle arOS、Endian、Untangle、RouterOS、HyperWRT、OpenWrt、DD—WRT等。其中OpenWrt和DD—WRT獲得了更為廣泛的支持,有著良好的社區資源,它們都可以被看作一個獨立的嵌入式設備的Linux發行版,而不僅僅是一個單一的、靜態的固件,支持的硬件相當豐富,WRT54GL也不例外。

DD—WRT功能強大而且簡單易用,它重點關注的是Web配置方式,這使得DD—WRT的Web功能比OpenWrt強大得多,因此DD—WRT的用戶群很龐大。

OpenWrt的優勢是用戶可以隨意地安裝軟件。OpenWrt的包管理提供了一個完全可寫的文件系統,并允許自定義設備和應用軟件包,具有完全定制的能力。

DD—WRT和OpenWrt各有優缺點??偟膩碚fDD—WRT傾向于關注使用者的感受,因此較為易用,OpenWrt傾向于關注開發者的使用,因此更為開放。

但是就學習研究而言,OpenWrt的擴展性要更勝一籌?,F在的DD—WRT雖然也可以自己裝軟件,但只能裝在jffs或mmc目錄中,除jffs、mmc、tmp目錄外其他的目錄是不可寫的,而OpenWrt則不存在這些限制。

此外,OpenWrt系統使用和Linux類似的庫文件,比如它所包含的uClibc的C庫使得開發人員通過簡單的補丁包即可輕松運行現有的Linux程序。而且程序通過TFTP和CFE上傳到路由器后,用戶還可以使用串行口進行通信和調試。因此我們選擇OpenWrt作為主操作系統,便于在掌握了操作系統基本理論之后,進行高階的學習研究。

1.2.2 從操作系統

Xinu操作系統20世紀80年代中期誕生于美國普渡大學,目標主要是用于操作系統教學。它是一種小巧、優雅的操作系統,支持動態創建進程、動態分配內存等操作系統的功能,有shell命令和I/O函數。同時支持TCP/IP協議,可以管理本地和遠程文件系統。

除了應用于教育領域以外,由于Xinu的體積很小,功能強大,所以也非常適用于嵌人式環境,現在已被移植到從8位、16位到32位嵌入式處理器平臺上,并有多個工業級的應用,有較好的應用價值。

美國馬奎特大學的嵌入式Xinu項目對其進行了相應的研究,并將其移植到嵌入式MIPS平臺。嵌入式Xinu是一個持續研究和實施的項目,當前版本支持Linksys公司的WRT54GL和WRT160NL的路由器,以及Qemu虛擬機。因此我們選擇嵌入式Xinu作為從操作系統進行基礎理論的學習。

2 平臺的實現

2.1 硬件改造

由于WRT54GL無線路由器沒有把串口外接出來,為了便于OpenWrt和Xinu的移植,并能通過控制臺對它們進行交互調試,需要對其進行簡單的硬件改造。

該路由器電路本身就有兩個UART接口,只是沒有從印刷電路板上用接插件引出來,因此將這兩個串口引出是平臺構建的第一個步驟。

首先,需要將印刷電路板和路由器的外殼分離,找到Linksys公司提供的串行接頭連接,它位于電路板的右下角,有10個針腳支持兩個串行接口(UART0和UART1),可以用10-pin接插件將這10個針腳引出。

其次,由于路由器和PC機串口的電平不同,所以還要進行相應的電平轉換,把路由器的3.3 V電平轉換為RS-232的串口電平。這就需要制作一個轉換電路,這里采用的串行接口電平轉換芯片ADM202,參考電路如圖1所示。

基于路由器的開源嵌入式操作系統學習平臺

然后把引出的串口固定在前面板上,復原外殼即可,這樣就得到有兩個外接串口的路由器。使用時把UART0通過串口線和PC機的串口相連,通過任意串口通信軟件就可以進行數據通信了。

2.2 OpenWrt的移植

由于WRT54GL路由器支持第三方固件,所以OpenWrt移植并不困難,加之OpenWrt支持軟件包的定制安裝,不需完全從零開始構建,所以可以直接利用現有比較穩定可靠的鏡像資源加以改造。當然,如果要構建相應的交叉開發環境,從頭做起的話,也可以參考相應文獻。由于步驟和Xinu類似,這里不作展開。

2.2.1 部署OpenWrt

首先在www.openwrt.org網站下載WRT54Gsquashfs.bin固件,然后通過路由器管理菜單更新固件,相關步驟如下:http://192. 168.1.1→Adminisllration→Firmware Upgrade。需要注意的是,需要給PC分配192.168.1.2和192.168.1.254之間的一個靜態IP地址,以便使PC和路由器在同一個網段。當路由器重新啟動后,telnet到其IP地址為192.168.1.1,并發出以下命令:

root@OpenWrt:/#nvram set boot_wait=on

root@OpenWrt:/#nvram set boot_time=10

root@OpenWrt:/#nvram commit&&reboot

如果覺得使用命令行配置路由器比較麻煩,還可以添加相應的Web GUI包,命令如下:

root@OpenWrt:/#opkg update

root@OpenWrt:/#opkg install luci-light

root@OpenWrt:/#opkg install luci

然后用瀏覽器打開http://192.1 68.1.1,就能夠更容易地配置路由器了。

2.2.2 更新現有OpenWrt

OpenWrt的軟件包定制安裝和標準Linux沒什么區別,這里只介紹如何更新已經運行了OpenWrt操作系統的路由器固件的方法。

步驟和部署OpenWrt極為相似,所不同的是不需要運行NVRAM命令,另外固件文件名不同。第一次部署路由器固件時,需要用.bin文件,更新升級已有固件時則需要用.trx文件。原因是,.bin是將路由器的相關配置信息和.trx封裝在一起而生成的鏡像,在第一次部署固件鏡

像文件時,需要提供這樣的信息,而在后續升級時則不再需要,用.trx文件即可,命令如下:

root@OpenWrt:/#cd/tmp

root@OpenWrt:/tmp#mtd-r write openwrt-XXX.trx linux

重啟后路由器就重新引導到新版本的固件。

2.3 嵌入式Xinu的編譯與移植

Xinu的移植和完整的OpenWrt移植一樣,涉及從交叉編譯工具環境構成到鏡像生成及部署的一系列工作,下面作簡要介紹。

2.3.1 構建MIPS交叉編譯環境

移植Linux需要專門的交叉編譯環境,選擇Linux環境構建基于MIPS架構平臺的交叉編譯工具鏈,如果采用Windows的環境也可基于Cygwin來構建類似的交叉編譯工具鏈,下面的操作需要擁有ROOT權限。

首先下載binutils,現在可以得到的較新版本是2.2.2,命令如下:

./configure -prefix=/usr/local/project/mipsel-dev-target=mipsel

make

make install

由于這里采用的Linux開發環境是ubuntul2.04操作系統,它的安全管理會把警告也強制轉化為錯誤處理,這就可能造成編譯錯誤。因此,還需要為configure添加“-disable-werror”選項,或者待配置完后修改Makfile中的對應選項。

第二步是為include目錄建立鏈接。

Xinu有自己的小型庫用于編譯,并不需要完整的UNIX交叉編譯器環境,但是因為GCC在編譯時需要關聯相應的頭文件,所以這里還需要建立一個鏈接,將目標平臺相關的include和宿主PC機的include目錄鏈接起來。

mkdir-P/usr/local/project/mipsel-dev/mipsel/usr

In-S/usr/include/usr/local/project/mipsel-dev/mipsel/usr/in-clude

第三步是安裝GNU C Compiler編譯器,設計中采用的GCC是最新版本的4.7.2,下載解壓后進行編譯安裝。由于ubuntul2.04的環境,安裝4.6版本以上的GCC需要GMP、MPFR、MPC這三個庫,所以還需要從網上下載三個庫的壓縮包。需要注意的是,由于MPFR依賴GMP,而MPC依賴GMP和MPFR,所以要先安裝GMP,其次MPFR,最后才是MPC。這里三個庫在本設計實際使用的版本分別是gmp5.0.1、mpfr2.4.2和mpc 0.8.1。限于篇幅僅對安裝gcc-4.7.2作簡要敘述。

基于路由器的開源嵌入式操作系統學習平臺

當以上步驟都完成,就在宿主機上構建了基于littleendian的MIPS架構的gcc cross—compiler。可以看到/usr/local/project/ mipsel —dev/bin/mipsel—gcc,表明安裝成功。

2.3.2 構建Xinu鏡像

下載并解壓相應的壓縮包,可以看到類似這樣的目錄結構:device、lib、loader、system、compile、include、mailbox、shell、test。

和交叉編譯相關的主要是compile下的相關文件,由于采用的嵌入式Xinu是最新版本的xinu_mips-2.01,它支持三種不同平臺wrt54gl、wrt160nl和虛擬器版本的mipsel—qemu。因此根據我們的硬件平臺,進入xinu mips2.01/compile/platforms/wrt54gl目錄,對其中的文件platformVars作對應修改,去除CFLAGS的-Werror選項,目的依然是防止把警告當成錯誤。另外最重要的一個設置是MIPS_ROOT變量,它指出了交叉編譯工具所在的目錄,如MIPS_ROOT=/usr/local/project/mipsel-dev/bin,這需要根據前面的交叉編譯工具的路徑相應調整。然后在compile/目錄下運行make clean和make這兩個命令,就可以獲得相應的鏡像文件xinu.boot。

2.3.3 部署Xinu鏡像

部署并運行編譯好的Xinu鏡像的第一步是在PC機上運行TFTP服務器,它可以將鏡像文件通過網絡連接傳輸到路由器上。Linux上安裝TFTP服務器相當簡單,只要下載tftp—server軟件包后安裝即可,這里不再詳述。

安裝完TFTP服務后,還需簡單的設置以使服務運行起來,xinetd是一個服務器守護程序,可以運行許多不同類型的服務器上。當tftp服務正常運行,且xinu.boot文件也正確復制后,就可以進行最后的引導工作了。由于路由器默認的IP地址是192.168.1.1,所以還需要把PC機的IP也設在相同的網段,如192.168.1.2。

這時已經在物理上通過串口將作為后端的路由器和作為宿主機的PC機連接起來了,通過相應的串口通信程序就可實現兩者的數據交互。如果一切正常,將可以看到路由器的命令提示符CFE》。

命令格式為boot—elf[host ip]:xinu.boot,其中[hostip]就是鏈接了作為后端的路由器的PC機,如CFE》boot—elf 192.168. 1.2:xi nu.boot。

這樣就可以在路由器上將Xinu引導起來,順利的話將看到xsh$提示符。Xinu提供了一些最基本的命令,可以用help來查看。

至此已經完成了基本的嵌入式Xinu部署的整個流程,進一步的工作就是修改Xinu的源代碼,重新生成鏡像文件,用boot—elf[host ip]:xinu.boot命令重新引導運行新的系統。

結語

本文詳細闡述了將WRT54GL路由器改造為適合于學習開源OpenWrt與Xinu操作系統的平臺的過程。整個改造過程簡單、易行,可以貫穿整個嵌入式操作系統的學習過程。

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5091

    文章

    19176

    瀏覽量

    307254
  • 操作系統
    +關注

    關注

    37

    文章

    6889

    瀏覽量

    123662
  • 路由器
    +關注

    關注

    22

    文章

    3744

    瀏覽量

    114360
收藏 人收藏

    評論

    相關推薦

    嵌入式Linux的SOHO路由器電路設計

    針對目前SOHO 路由器設計方案難以滿足高速接入網用戶要求和存在系統穩定性方面的不足,以嵌入式Linux 操作系統為基礎,提出一種新的SOHO路由器設計方案,有效地提高了系統的穩定性和安全性。
    發表于 12-16 17:32 ?1495次閱讀
    <b class='flag-5'>嵌入式</b>Linux的SOHO<b class='flag-5'>路由器</b>電路設計

    教你把廢棄的U盤用作強大路由器

    的功能更加強大?! D-WRT算是一個Linux操作系統,但實質上就是一個第三方的路由器固件。它的路由和網絡管理功能非常的強大,被廣泛的應用于Linksys
    發表于 02-02 16:02

    思科Linksys WRT610N v2/E3000 無線雙頻路由器千兆/USB脫機下載

    `思科Linksys WRT610N v2/E3000 無線雙頻路由器千兆/USB脫機下載原裝機型原裝思科E3000 千兆雙頻無線路由器, 完美支持DD-
    發表于 07-19 11:37

    怎么實現基于嵌入式Linux平臺的多協議路由器的設計?

    本文介紹在分級Ad Hoc網絡中多協議路由器的地位及功能,在此基礎上提出一種多協議路由器設計方案。結合設計方案,介紹實現方案中所采用的Motorola公司的ColdFire嵌入式處理
    發表于 06-07 06:12

    主流路由器固件有哪幾個

    路由器和交換機是搞網絡的最熟悉不過的。路由器和交換機的操作系統是什么那?大多是一些嵌入式Linux發行版。我們一般稱之為固件。主流路由器固件有 dd-
    發表于 12-22 08:24

    基于嵌入式Linux平臺的多協議路由器的設計

    介紹在分級Ad Hoc網絡中多協議路由器的地位及功能,在此基礎上提出一種多協議路由器設計方案。結合設計方案,介紹實現方案中所采用的Motorola公司的ColdFire嵌入式處理
    發表于 05-16 14:42 ?42次下載

    基于嵌入式Linux的SOHO路由器設計

    針對目前SOHO 路由器設計方案難以滿足高速接入網用戶要求和存在系統穩定性方面的不足,以嵌入式Linux 操作系統為基礎,提出一種新的 SOHO(Small Office and Home Office)路由器設計方案,
    發表于 06-19 09:23 ?24次下載

    基于嵌入式Linux的SOHO路由器設計

    針對目前SOHO 路由器設計方案難以滿足高速接入網用戶要求和存在系統穩定性方面的不足,以嵌入式Linux 操作系統為基礎,提出一種新的 SOHO(Small Office and Home Office)路由器設計方案,
    發表于 12-23 16:56 ?34次下載

    基于S3C4510B的嵌入式路由器的研究

    提出一種基于ARM 微處理S3C4510B 和uClinux 操作系統的嵌入式路由器的設計方案。首先簡單介紹了Netlink 套接字,然后分析嵌入
    發表于 01-13 15:47 ?39次下載

    Linksys無線路由器設置

    近來很多朋友經常問一些關于Linksys無線路由器設置的問題,現總結自己經驗和在網上收集整理如下。 Linksys路由常見有這些:Linksys
    發表于 02-21 18:28 ?225次下載
    <b class='flag-5'>Linksys</b>無線<b class='flag-5'>路由器</b>設置

    基于嵌入式Linux的SOHO路由器設計與實現

    關鍵詞:linux , SOHO , 路由器 , 嵌入式 針對目前SOHO路由器設計方案難以滿足高速接入網用戶要求和存在系統穩定性方面的不足,以嵌入式Linux操作系統為基礎,提出一種
    發表于 03-16 00:46 ?621次閱讀
    基于<b class='flag-5'>嵌入式</b>Linux的SOHO<b class='flag-5'>路由器</b>設計與<b class='flag-5'>實現</b>

    如何使用OpenWRT路由器實現網絡存儲系統的設計

    傳統無線路由器除了基礎功能外還提供了豐富的擴展功能。Open WRT系統無線路由器相較于傳統路由器的一個最大不同是它有一個獨立完善的操作系統,同時這也是
    發表于 12-04 16:57 ?29次下載
    如何使用OpenWRT<b class='flag-5'>路由器</b><b class='flag-5'>實現</b>網絡存儲系統的設計

    Linksys的默認密碼_linksys無線路由器怎么設置密碼

    Linksys路由器有一個內置的控??制面板,允許您更改配置設置,設置路由器與其他設備的工作,并成立了網絡的安全性。
    發表于 03-12 09:42 ?8878次閱讀

    linksys路由器密碼忘記了怎么辦_linksys路由器密碼重置

    絕大多數Linksys品牌的路由器都沒有開關機按鈕,一般來說,將路由器接通電源插座時會自動啟動路由器。
    發表于 03-12 09:51 ?2w次閱讀

    linksys無線路由器設置方法

    整理一下linksys無線路由器設置的方法,避免設置發生錯誤引起網絡連接失敗。
    發表于 05-12 10:22 ?5642次閱讀
    主站蜘蛛池模板: 欧美2019高清hd巨大 | 精品高潮呻吟99AV无码 | 一个人免费完整在线观看影院 | 99久久精品久久久 | 日韩av片无码一区二区不卡电影 | 国产精品人妻无码久久久2022 | 空姐被黑人 苏晓曼 | 午夜免费啪视频观看视频 | 性吧 校园春色 | 亚婷婷洲AV久久蜜臀无码 | 亚洲午夜久久久久中文字幕 | 啊…嗯啊好深男男高h文总受 | 亚洲精品国产高清不卡在线 | 蜜芽资源高清在线观看 | 跳蛋按摩棒玉势PLAY高H | 欧美重口绿帽video | 美女被爆羞羞天美传媒 | 久爱在线中文在观看 | 六六影院午夜伦理 | 9国产露脸精品国产麻豆 | 亚洲天堂久久久 | 无限资源在线完整高清观看1 | yy4408午夜场理论片 | 99精品国产免费观看视频 | 国产高清在线露脸一区 | 白白操在线视频 | 欧美乱码卡一卡二卡四卡免费 | 又爽又黄又粗又大免费视频 | 国产亚洲精品久久精品69 | 国产一区二区不卡老阿姨 | AV国产乱码一区二区三视频 | 羽月希被黑人吃奶dasd585 | 国产精品一区二区制服丝袜 | 超碰97超碰在线视频哦 | 2019精品国产品在线不卡 | 免费又黄又硬又爽大片 | 偷尝禁果H1V1幸运的山熊 | 大胸美女被吊起来解开胸罩 | 熟妇无码乱子成人精品 | 再插深点嗯好大好爽 | 国产精品一区二区欧美视频 |