<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 拿起手術(shù)刀 深入剖解路由器的“心臟”技術(shù)

拿起手術(shù)刀 深入剖解路由器的“心臟”技術(shù)

作者: 時(shí)間:2018-09-06 來(lái)源:網(wǎng)絡(luò ) 收藏

其中zImage已經(jīng)包含了文件系統映象文件,通常直接燒寫(xiě)到Flash文件上即可執行了。當然在這之前要進(jìn)行BootLoader的燒錄, BootLoader其實(shí)就是一個(gè)引導程序,主要作用就是初始化系統,進(jìn)而來(lái)引導操作系統。在嵌入式系統中,處理器上電后首先執行的一段代碼就是BootLoader,BootLoader與硬件密切相關(guān),其代碼主要用C和匯編語(yǔ)言寫(xiě)成,不同的系統中,BootLoader的功能有所不同,但主要作用還是差不多的,主要有下面幾點(diǎn):

本文引用地址:http://dyxdggzs.com/article/201809/388544.htm

初始化微控制器MCU運行的時(shí)鐘頻率;

初始化Flash和內存的數據寬度,讀/寫(xiě)訪(fǎng)問(wèn)周期和刷新周期;

初始化中斷系統;

初始化系統中各種片內、片外設備和I/O端口設備;

初始化系統各種運行模式下的寄存器和堆棧;

加載和引導操作系統;

BLOb是BootLoaderObject的縮寫(xiě),它是一個(gè)功能強大、源代碼公開(kāi)的自由軟件,它已經(jīng)實(shí)現了對多種處理器芯片的Linux 引導支持。對ARM7等核心的BootLoader支持版本可以到專(zhuān)業(yè)網(wǎng)站上進(jìn)行下載,并稍微做適當修改來(lái)滿(mǎn)足開(kāi)發(fā)應用中的硬件環(huán)境要求即可,在此我們不做過(guò)多講述。

上面所講述的內核編譯過(guò)程只是比較寬泛的、籠統的操作過(guò)程,也就是說(shuō)只是基本的操作過(guò)程,而在真正的路由功能實(shí)現過(guò)程中,還要對內核進(jìn)行多種設置編譯,比如說(shuō)對硬件系統中設計到的部件進(jìn)行驅動(dòng)配置安裝等,當然,這些并不是特別難的操作技術(shù),再比如我們下面就要講到的內容,這可就是很有挑戰性的核心技術(shù)了,這些都是針對內核進(jìn)行技術(shù)性操作來(lái)實(shí)現特定的網(wǎng)絡(luò )功能。

內核編譯核心部分

1、文件系統分析

文件系統是uClinux操作系統的重要組成部分,uClinux文件系統是操作運行的基礎。許多嵌入式系統在不存在磁盤(pán)的情況下也可以運行。文件系統可以隨同內核一起被打包并在啟動(dòng)時(shí)作為一個(gè)文件系統的映像被加載。對一個(gè)簡(jiǎn)單的應用系統來(lái)說(shuō),這己足夠了。文件系統可以存放在一個(gè)傳統磁盤(pán)中,但也可以存放在非易失性的存儲介質(zhì)— 閃存中。閃存有一個(gè)引導塊,它存放了CPU上電后運行的第一個(gè)軟件,這個(gè)軟件可以是uclinux的引導程序,也可以是自己編的bootloader。uClinux的內核可以被引導程序從閃存中拷貝到RAM中全速運行。閃存也可以作為文件的存儲介質(zhì),必要時(shí)寫(xiě)入一些需要保存的數據。

uClinux支持NFS(Network File System),它允許通過(guò)網(wǎng)絡(luò )加載各種應用程序。由于用在每一個(gè)嵌入式系統上的軟件可以從一個(gè)公用的服務(wù)器上加載,這在控制軟件的修訂或升級中是很重要的.在系統運行的過(guò)程中,導入和導出數據、配置、狀態(tài)信息的備份也很重要。對用戶(hù)監控而言,這是一個(gè)非常強大的功能。例如,一個(gè)嵌入式系統可能裝配了一個(gè)RAM DISK,它包含著(zhù)與系統當前狀態(tài)的更新維持一致的(狀態(tài))文件。那么別的嵌入式系統僅需通過(guò)網(wǎng)絡(luò )把這個(gè)RAM DISK作為遠程磁盤(pán)mount過(guò)來(lái)便可以訪(fǎng)問(wèn)那些位于遠端RAM DISK中的狀態(tài)文件。這也允許在另一臺機器上的WEB服務(wù)器借助簡(jiǎn)單的CGI腳本來(lái)訪(fǎng)問(wèn)那些狀態(tài)信息。運行在其他機器上的應用程序包能夠很容易地訪(fǎng)問(wèn)這些數據。uClinux操作系統根據不同的安裝選擇可以生成不同的文件系統。系統中提供了十分豐富的文件系統以供不同需要的用戶(hù)選擇。每種類(lèi)型的文件系統的基本塊大小、優(yōu)化分配策略、一次傳送的數據長(cháng)度等等都是相互匹配的,使得本類(lèi)文件系統均有相應的最佳性能。

2、嵌入式Web服務(wù)器

對uClinux操作系統下嵌入式Web技術(shù)的實(shí)現主要用于用戶(hù)可以通過(guò)網(wǎng)

頁(yè)方式來(lái)管理路由器。

⑴uClinux下Web Server的實(shí)現

uClinux下,主要有三個(gè)WebServer:htpd,thttpd和Boa。Httpd是最簡(jiǎn)單的一個(gè)Web Server,它的功能最弱,不支持認證,不支持CGI。Thttpd和Boa都支持認證、CGI等,功能都比較全。為了實(shí)現動(dòng)態(tài)Web技術(shù),這里我們選擇實(shí)現一個(gè)支持CGI的、非常適合于嵌入式系統的Boa Web Server。Boa是一個(gè)單任務(wù)的http服務(wù)器,源代碼開(kāi)放、性能高。目前,uClinux的代碼中已經(jīng)包含boa的源代碼,在uClinux下實(shí)現Boa,需要對Boa做一些配置和修改。這主要通過(guò)對boa.conf和mime.types文件進(jìn)行修改來(lái)實(shí)現,需要改動(dòng)的配置有以下幾項:

①建目錄

由于uClinux默認的根文件系統romfs是只讀的,不能用mkdir等命令來(lái)新建目錄,故應在編譯內核前先建好要用到的目錄,這通過(guò)修改

/uclinux-samsung/vendors/Samsung/4510b/makefile文件來(lái)實(shí)現。在ROWFS_DIRS=bin dev etc home lib mnt proc usr var的后邊增加home/webhome/web/cgi-bin,這樣修改后編譯內核,編譯好的根文件系統romfs中就包含這些目錄了。

②指定Web 服務(wù)器的根目錄路徑(SERVER ROOT)

進(jìn)入 /uclinux-samsung/user/boa/src/目錄,通過(guò)修改define.h文件中#define ERVER ROOT /home”語(yǔ)句來(lái)指定SERVER ROOT。另外,還可以通過(guò)命令行來(lái)指定,例如:boa-c/home/。而且命令行指定的SERVER ROOT可以覆蓋define.h文件所指定的。

③修改boa.conf文件

在. /uclinux-samsung/user/boa/src/boa.conf里修改:

*將 user obody和Group ogroup改為User0 和Group0 ;

*將 DocumentRoot/var/www改為DocumentRoot/home/web,這樣web服務(wù)器的文檔根目錄為/home/web;

*將 MimeTypes/eWmime.types改為MimeTypes/home/web/mime.types;

定義默認首頁(yè)和CGI程序所在目錄,即

DirectoyIndex index.html

ScriptAlias/cgi-bin//home/web/cgi-bin/

這樣指定后,.index.htm為遠程瀏覽客戶(hù)訪(fǎng)問(wèn)WebServer所看到的首頁(yè)默認值,用C編寫(xiě)的CGI程序編譯成二進(jìn)制文件,放到/cgi-bin/目錄下,CGI程序能被正確地執行。

Boa.conf文件和mime.types文件必須放到Web服務(wù)器根目錄下,所以把修改后的bao.conf和mime.types拷貝到“./uclinux-samsung/romfs/home/”目錄下。然后在/uclinux- samsung/Vendors/Samsung/4510b/initab里修改,在:inet:unknown:/bin/inetd后加入: boa:unknown:/bin/boac/homeo

配置過(guò)程后,重新編譯內核,編譯時(shí)選中Boa選項。把編譯好的內核下載到硬件板,啟動(dòng)uclinux,完成IP配置,啟動(dòng)Boa Web Server,然后就可以通過(guò)lE訪(fǎng)問(wèn)你的網(wǎng)頁(yè)了。如果想啟動(dòng)uclinux時(shí)自動(dòng)啟動(dòng)Boa Web Server,可以修改re文件,進(jìn)入uclinux-samsung/vendors/Samsung/4510B目錄,在運行腳本rc中增加兩行:



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>