<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM處理器的嵌入式WEB服務(wù)器設(shè)計

          基于ARM處理器的嵌入式WEB服務(wù)器設(shè)計

          作者: 時間:2010-09-15 來源:網(wǎng)絡(luò) 收藏

          2 軟件
          2.1 Linux系統(tǒng)移植
          采用Linux作為操作系統(tǒng),Linux系統(tǒng)具有開放源碼、軟件資源豐富、內(nèi)核功能強大、性能高效、穩(wěn)定、可支持多種硬件平臺等特點。除此之外,Linux還具有完善的網(wǎng)絡(luò)通信功能,可支持TCP/IP等多種協(xié)議,而且Linux系統(tǒng)內(nèi)核中已經(jīng)緊密地集成了網(wǎng)絡(luò)功能并有大量的網(wǎng)絡(luò)應(yīng)用程序,可為實現(xiàn)網(wǎng)絡(luò)通信提供有力的支持。Linux強大的網(wǎng)絡(luò)功能是選用其作為web軟件系統(tǒng)的一個重要原因。
          一個系統(tǒng)通??梢苑忠龑?dǎo)加載程序、內(nèi)核、文件系統(tǒng)為3個層次。因此,Linux的系統(tǒng)移植也包括3個部分:即引導(dǎo)程序(BootLoa-der)移植、內(nèi)核移植和文件系統(tǒng)制作。
          Bootloader (引導(dǎo)加載程序)是系統(tǒng)加電后運行的第一段代碼。它的運行時間非常短,但對于系統(tǒng)來說。這是一個非常重要的系統(tǒng)組成部分,主要負責硬件的初始化,設(shè)置Linux的啟動參數(shù),然后跳轉(zhuǎn)到Linux內(nèi)核啟動代碼的第一行語句引導(dǎo)Linux。本系統(tǒng)采用U-boot作為bootloader。U-Boot的全稱是Universal Boot Loader,是遵循GPL條款的開放源碼項目,它從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來。
          內(nèi)核是所有嵌入式Linux系統(tǒng)的核心軟件,內(nèi)核移植是一個比較復(fù)雜的任務(wù),也是嵌入式系統(tǒng)開發(fā)中非常重要的一個過程。內(nèi)核移植一般包括內(nèi)核配置、編譯和內(nèi)核下載三大部分。移植過程的關(guān)鍵步驟如下:
          (1)準備下載linux源碼
          選用的內(nèi)核版本是linux-26.22,然后通過解壓縮得到內(nèi)核源碼。同時在linux系統(tǒng)開發(fā)環(huán)境下安裝交叉編譯器arm-linux-gcc。
          (2)修改內(nèi)核代碼
          修改內(nèi)核代碼主要是選定Linux內(nèi)核對的支持和修改以及與外部設(shè)備相關(guān)的內(nèi)核代碼。首先在linux-2.6.22根目錄下修改Makefile文件,主要應(yīng)當修改下面兩行內(nèi)容:
          ARCH=arm;說明目標是體系結(jié)構(gòu);
          CROSS_COMPILE =/usr/local/arm/1.3.1/bin/aim-linux-gcc;設(shè)置為宿主機上交叉編譯工具鏈的絕對路徑。
          除此之外。還需要修改與AT91SAM9263相關(guān)的代碼,這些代碼集中在arch目錄中和include目錄下文件名以asm開頭的子目錄中。
          (3)配置和編譯內(nèi)核
          配置內(nèi)核選項是移植內(nèi)核過程中很重要的一步,主要是對內(nèi)核功能模塊進行選擇及參數(shù)設(shè)定。在內(nèi)核源代碼目錄下運行make menuconfig可對內(nèi)核進行配置,主要是載入AT91SAM9263參考開發(fā)板的默認配置,并在此基礎(chǔ)上進行相關(guān)的驅(qū)動選擇等。配置完成后,可保存退出配置菜單界面,然后在內(nèi)核源代碼目錄上輸入命令make,這樣。編譯完成后,就會生成uImage文件。
          本設(shè)計所采用的文件系統(tǒng)是直接從網(wǎng)絡(luò)上獲取一個已經(jīng)生成的文件系統(tǒng),并在此基礎(chǔ)上進行添加和修改,最后形成自己的文件系統(tǒng)。在開發(fā)過程中,可利用Linux系統(tǒng)所提供的NFS服務(wù),并通過網(wǎng)絡(luò)掛載文件系統(tǒng)進行系統(tǒng)調(diào)試。最后將Uboot映像文件、Linux內(nèi)核文件uImage、文件系統(tǒng)鏡像文件燒寫到NANDflash上相應(yīng)的分區(qū)。
          2.2 Web的移植
          Web服務(wù)器Boa是一個單任務(wù)的小型HTTP服務(wù)器,源代碼開放、性能優(yōu)秀,運行所需空間僅為140 KB左右。特別適合于在嵌入式系統(tǒng)中。本設(shè)計采用移植Boa的方法來實現(xiàn)嵌入式Web服務(wù)器部分,以滿足訪問網(wǎng)頁的要求,其主要移植過程如下:
          首先是下載Boa源代碼。Boa web服務(wù)器的源代碼可以從http:∥www.boa.org下載,本文中的下載文件為:boa-0.94.13.tar.gz.
          其次是安裝并編譯Boa源代碼,操作時可執(zhí)行以下命令:
          #cd/home/
          #tar zxvfboa.tar.gz
          #cd boa/src
          生成Makefile文件#./configure后,即可修改Makefile文件,找到CC=gcc,將其改成CC=armlinux-gcc;再找到CPP=gee-E,其將其改成CPP=arm-linux-gec-E,然后保存退出。
          運行make進行編譯后,即可在boa/src目錄下生成Boa文件,該文件即為Boa Web服務(wù)器執(zhí)行文件。
          勢頭應(yīng)當配置Boa Web服務(wù)器。Boa啟動時將加載一個配置文件boa.conf。用戶可以根據(jù)自己的需要對boa.conf進行修改,但必須保證其它的輔助文件和設(shè)置必須與boa.conf里的配置相符,否則,Boa就不能正常工作。Boa源碼boa-0.94.13目錄下已有一個示例文件boa. conf位于boa/example下面,可以根據(jù)需要在其基礎(chǔ)上進行修改。然后將修改好的配置文件Boa.conf存放于嵌入式系統(tǒng)根文件/etc/boa目錄下。
          最后就是測試Boa的運行。在re文件中執(zhí)行:#ifconfig eth0 192.168.0.1命令給嵌入式Web服務(wù)器配置IP。并通過IE瀏覽器連接到運行Boa的嵌入式系統(tǒng)http:∥192.168.0.1/,這樣,就可以訪問到之前放置的index頁面了。

          3 結(jié)束語
          本設(shè)計以AT9lSAM9263為核心,在此基礎(chǔ)上給出了一個web服務(wù)器。并在硬件方面設(shè)計了一個嵌入式系統(tǒng),該系統(tǒng)包括網(wǎng)絡(luò)接口、AD卡接
          口、USB接口等各種外設(shè)。文中還在網(wǎng)絡(luò)接口的基礎(chǔ)上,給出了將Linux移植到硬件平臺,并最終移植web服務(wù)器的實現(xiàn)方法。這種方法通過頁
          面訪問的測試,結(jié)果表明,本系統(tǒng)運行穩(wěn)定,且訪問速度正常。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();