【正文】
引 言 嵌入式系統(tǒng)課程設(shè)計(jì)是本專業(yè)在學(xué)習(xí)完 C 語(yǔ)言、 LINUX 操作系統(tǒng)、嵌入式系統(tǒng)原理與接口設(shè)計(jì)、嵌入式操作系統(tǒng)原理之后的專業(yè)課程設(shè)計(jì),屬于專業(yè)課內(nèi)容。Boa Server。 關(guān)鍵詞: ARM 嵌入式系統(tǒng);嵌入式 web 監(jiān)控; boa 服務(wù)器; CGI 編程; Linux 操作系統(tǒng) 關(guān)鍵詞: 自動(dòng)化 、 奏樂器 、 VHDL、 數(shù)字電路 2 Abstract: According to the analysis of the researches about the status of the mbeddedserver of the rise a design of a embedded inter control system basedon the Web service which integrates the web server,embedded technology and thefunctions on the embedded experiment system has the function of browsing the web pages, monitoring theembedded Board and so this embedded WEB server,the users can watchthe embedded system conveniently according the HTTP the sametime the users can also monitor the system have a lot of longtageslike a low request of the hardware,limited time of response and a stable see that this kind of system used in the application of intelligent familyelectronics,embedded ing and so on would have a good development. Keywords: ARM Embedded System。該系統(tǒng)對(duì)硬件要求極低、響應(yīng)速度快、 安全性好、可擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),具有較高的實(shí)際應(yīng)用價(jià)值。該系統(tǒng)具有瀏覽交互式網(wǎng)頁(yè),對(duì)嵌入式平臺(tái)進(jìn)行監(jiān)視和控制等功能。 1 基于 web 的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng) 學(xué)生: 劉 仁 指導(dǎo)老師: 蔡 碩 摘要: 隨 針對(duì)當(dāng)前國(guó)內(nèi)國(guó)外嵌入式服務(wù)器技術(shù)研究和發(fā)展 情 況的分析,本報(bào)告提出了將 WEB 服務(wù)器、嵌入式系統(tǒng)以及當(dāng)前的一些嵌入式實(shí)驗(yàn)板板載功能進(jìn)行融合的設(shè)計(jì)思想。設(shè)計(jì)了結(jié)合 WEB 服務(wù)器技術(shù)的嵌入式監(jiān)控系統(tǒng)。通過本套嵌入式WEB 服務(wù)器系統(tǒng),用戶可以通過 HTTP 協(xié)議方便的訪問相應(yīng)的嵌入式平臺(tái)進(jìn)行有效監(jiān)視的同時(shí)還可以進(jìn)行實(shí)時(shí)的有效控制。該系統(tǒng)在智能家居、嵌入式組網(wǎng)等方面的應(yīng)用將有較廣闊的發(fā)展前途。Embedded Web Server System。CGI Programing。通過課程設(shè)計(jì)建立嵌入式系統(tǒng)主體環(huán)節(jié),嵌入式系統(tǒng)的最小結(jié)構(gòu)和系統(tǒng)應(yīng)用設(shè)計(jì)基本技能,培養(yǎng)分析和解決一些簡(jiǎn)單的實(shí)際問題的能力,為今后畢業(yè)設(shè)計(jì)奠定基礎(chǔ)。 用戶使用 Web 瀏覽 器 , 通過以太網(wǎng)遠(yuǎn)程訪問內(nèi)置 Web 服務(wù)器的監(jiān)控?cái)z像機(jī) , 不但可以實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)的遠(yuǎn)程視頻監(jiān)控 , 而且可以向監(jiān)控現(xiàn)場(chǎng)發(fā)送指令。本課題就是基于該項(xiàng)技術(shù),最終編程實(shí)現(xiàn)通過網(wǎng)絡(luò)控制下位機(jī)嵌入式控制器的電機(jī)啟動(dòng)和停止。基于 WEB 的遠(yuǎn)程監(jiān)控的實(shí)現(xiàn), CGI 的編寫和使用,將理論聯(lián)系到實(shí)踐中去,提高我們的動(dòng)腦和動(dòng)手的能力。 本課題的研究目的是用 BOA 服務(wù)器、 CGI、 IE 瀏覽器設(shè)計(jì)一個(gè)通過 IE 瀏覽器監(jiān)控電機(jī)的系統(tǒng),能夠通過兩個(gè)簡(jiǎn)單的按鍵對(duì)電機(jī)進(jìn)行啟動(dòng)和停止的控 4 制,并能夠在 IE 瀏覽器上看到電機(jī)的當(dāng)前狀態(tài)。 本設(shè) 計(jì)任務(wù)和主要內(nèi)容 1.基本要求 本課題主要設(shè)計(jì)和研究基于 WEB的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng),要求在保證可靠運(yùn)行的前提下,電路設(shè)計(jì)盡量簡(jiǎn)潔緊湊,以減小成本、提高系統(tǒng)的效率和安全性。 5 2 總體方案設(shè)計(jì) 整體方案設(shè)計(jì) 系統(tǒng)總體設(shè)計(jì)是基于嵌入式系統(tǒng)和 WEB 服務(wù)器結(jié)合的思想開發(fā)的,其網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖 所示 圖 系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D 針對(duì)本次課程設(shè)計(jì)提出的系統(tǒng)設(shè)計(jì)如圖 所示 圖 系統(tǒng)方案框圖 6 硬件系統(tǒng)設(shè)計(jì) 核心處理器的選擇 核心處理芯片需要完成處理和支持整個(gè)系統(tǒng)的功能需求,通過運(yùn)行 BOA 服務(wù)器要實(shí)施的接收來自各個(gè)客戶端的請(qǐng)求和信息,并根據(jù)獲得的請(qǐng)求和信息進(jìn)行相應(yīng)的后臺(tái)處理以及信息的反饋。 S3C2410X 微處理器是一款由 Samsung 公司為手持設(shè)備設(shè)計(jì)的低功耗、高集成度的基于 ARM920T 核的微處理器,為了降低系統(tǒng)總成本和減少外圍器件,這款芯片還集成了以下部件: 16KB 指令 Cache、 16KB 數(shù)據(jù) Cache、 MMU、外部存儲(chǔ)器控制器、 LCD 控制器、 NAND FLASH 控制器、 4 個(gè) DMA 通道、 3 個(gè) UART 通道、 1 個(gè) IIC 總線控制器、1 個(gè) IIS總線控 制器、 4 個(gè) PWM 定時(shí)器、 1 個(gè)內(nèi)部定時(shí)器、通用 IO 口、實(shí)時(shí)時(shí)鐘、 8 通道 10 位 ADC 和觸摸屏接口、 USB 主、 USB 從、 SD/MMC 卡接口等。 (1) 價(jià)格比較: Linux 是完全免費(fèi)的操作系統(tǒng),只需遵循 GPL 聲明,不需支付任何費(fèi)用; WinCE 是微軟的商用嵌入式操作系統(tǒng),使用它需要支付 WinCE 及其開發(fā)環(huán)境的費(fèi)用,開發(fā)出來的每套產(chǎn)品也 需交納一定費(fèi)用。 (2) 開放性比較: Linux 是源代碼完全開放的操作系統(tǒng),可以自由下載,并且 7 在遵循 GPL 聲明的前提下可以自由地修改、移植,為系統(tǒng)的開發(fā)和調(diào)試帶來極大的便利; winCE是部分源碼開放的商用操作系統(tǒng),如果要修改其中的代碼,需獲得微軟公司的授權(quán); uc/os—II 也是開放的實(shí)時(shí)操作系統(tǒng)。 Linux 與 ARM 處理器從以上可以看出, Linux 系統(tǒng)在諸多方面都存在優(yōu)勢(shì),而且本身的 ARM 處理器與 Linux 也有著緊密的聯(lián)系。 服務(wù)器的選擇 典型的嵌入式 Web 服務(wù)器有 Boa 和 td 兩種,它們和 Apache 等高性能的 Web 服務(wù)器主要的區(qū)別在于它們一般是單進(jìn)程服務(wù)器,只有在完成一個(gè)用戶請(qǐng)求后才能響應(yīng)另一個(gè)用戶的請(qǐng)求,而無(wú)法并發(fā)響應(yīng),但這 在嵌入式設(shè)備的應(yīng)用場(chǎng)合里已經(jīng)足夠了。它是一個(gè)單任務(wù) Web服務(wù)器,只能依次完成用戶的請(qǐng)求,而不會(huì) fork 出新的進(jìn)程來處理并發(fā)連接請(qǐng)求。 Boa 的設(shè)計(jì)目標(biāo)是速度和安全,在其站點(diǎn)公布的性能測(cè)驗(yàn)中,Boa 的性能要好于 Apache 服務(wù)器。 綜合以上的討論以及選擇,根據(jù)系統(tǒng)的實(shí)際需求,最終確定了采用 S3C2410X 為核心處理器, Linux 為嵌入式操作系統(tǒng), boa 為服務(wù)器以及相應(yīng)的 瀏覽器的系統(tǒng)設(shè)計(jì)方案。 UPNetARM2410S 的 CPU 為 ARM920T 內(nèi)核的三星 S3c2410 芯片,由于有 MMU(內(nèi)存管理單元)可以運(yùn)行標(biāo)準(zhǔn)的 ARMLINUX 內(nèi)核。 s3c2410 芯片介紹 圖 芯片結(jié)構(gòu)圖 9 ARM 處理器的外圍設(shè)備 電源電路 設(shè)備提供 12v 的電源,經(jīng) 和 分別得到 和 的工作電壓。 5V 電壓供給 LCD、電機(jī)、總線等電路使用。2410S主板復(fù)位電路設(shè)置專用邏輯: IMP811T 的復(fù)位電平可以使 CPU JTAG( nTRST和板級(jí)系統(tǒng)( nRESET)全部復(fù)位;來自仿真器的 ICE_nSRST 信號(hào)只能使板級(jí)復(fù)位;來自仿真器的 ICE_nTRST 可以使 JTAG( nTRST)復(fù)位,通過跳線選擇是否使板級(jí) nRESET復(fù)位。硬件復(fù)位電路如圖 10 圖 硬件復(fù)位 11 4 軟件設(shè)計(jì) 設(shè)計(jì)思想 基于 web 的嵌入式監(jiān)控系統(tǒng)設(shè)計(jì)主要的功能有簡(jiǎn)單 的網(wǎng)頁(yè)瀏覽,實(shí)現(xiàn)簡(jiǎn)單應(yīng)用功能(客戶端與服務(wù)器的交互)以及服務(wù)器端的控制功能。 BOA 服務(wù)器的簡(jiǎn)介與搭建 嵌入式 Web 服務(wù)器 Boa 的特點(diǎn) Boa 是一款單任務(wù)的 HTTP 服務(wù)器 , 與其他傳統(tǒng)的 Web 服務(wù)器不同的是當(dāng)有連接請(qǐng)求到來時(shí) , 它并不為每個(gè)連接單獨(dú)創(chuàng)建進(jìn)程 , 也不通過復(fù)制自身進(jìn)程來處理多鏈接 , 而是通過建立 HTTP 請(qǐng)求列表來處理多路 HTTP 連接請(qǐng)求 , 同時(shí)它只為 CGI 程序創(chuàng)建新 的進(jìn)程 ,這樣就在最大程度上節(jié)省了系統(tǒng)資源 , 這對(duì)嵌入式系統(tǒng)來說至關(guān)重要。 Boa 的功能實(shí)現(xiàn) 嵌入式 Web 服務(wù)器 Boa 和普通 Web 服務(wù)器一樣 , 能夠完成接收客戶端請(qǐng)求、分析請(qǐng)求、響應(yīng)請(qǐng)求、向客 戶端返回請(qǐng)求結(jié)果等任務(wù)。嵌入式 Web 服務(wù)器 Boa 根據(jù)請(qǐng)求方法的不同,做出不同的響應(yīng)。 Boa 的功能實(shí)現(xiàn)也是通過建立連接、綁定端口、進(jìn)行偵聽、請(qǐng)求處理等來實(shí)現(xiàn)的。 $ tar xzvf ( 2)進(jìn)入 src 目錄,編譯源代碼。將 Makefile 的 31~32 行內(nèi)容: CC = gcc CPP = gcc –E 應(yīng)用(在交叉編譯時(shí)使用): 然后輸入 make 命令進(jìn)行編譯,在 src 目錄下就會(huì)生成 boa 文件。如果不幸出現(xiàn) ―icky Linux 13 kernelbug!‖的錯(cuò)誤,請(qǐng)將 src 下 的第 226 行注釋掉,重新編譯下載即可。 boa 啟動(dòng)時(shí)需要一個(gè)配置文件 ,該文件的缺省目錄由 src/ 文件的 SERVER_ROOT 定義,或者在啟動(dòng) boa 的時(shí)候通過參數(shù) ― c‖指定。 應(yīng)用程序設(shè)計(jì) 程序設(shè)計(jì)依賴關(guān)系 通過對(duì)系統(tǒng)的分析以及對(duì)服務(wù)器的了解,系統(tǒng)確定了以下的軟件開發(fā)系統(tǒng)方案,如圖 所示 圖 軟件依賴關(guān)系 14 應(yīng)用程序流程圖 乘法功能 圖 乘法功能實(shí)現(xiàn)流程圖 15 程序段電機(jī)程序的流程圖 圖 電機(jī)部分流程圖 驅(qū)動(dòng)程序設(shè)計(jì) 驅(qū)動(dòng)部分主要有兩部分組成:電機(jī)驅(qū)動(dòng)和網(wǎng)卡驅(qū)動(dòng),其中以電機(jī)驅(qū)動(dòng)為主。 電機(jī)驅(qū)動(dòng) 電機(jī)驅(qū)動(dòng)程序流程 開啟設(shè)備時(shí),配置 IO 口為定時(shí)器工作方式 配置定時(shí)器的各控制寄存器 在 s3c2410_dcm_ioctl 中提供調(diào)速功能接口 應(yīng)用程序 中調(diào)用 實(shí)現(xiàn)直流電機(jī)速度的調(diào)整 16 驅(qū)動(dòng)加載過程 以電機(jī)驅(qū)動(dòng)為例:編譯直流電機(jī) cd /arm2410s/kernel2410smake menuconfig進(jìn)入 Main Menu / Character devices 菜單,選擇 DC MOTOR 模塊加載: 編譯內(nèi)核模塊: make dep make make modules 直流電機(jī)模塊的編譯結(jié)果為:/arm2410s/kernel2410s/drivers/char/ 加載模塊 在超級(jí)終端中,通過加載 NFS 運(yùn)行編譯結(jié)果: mount –t nfs :/arm2410s /host Insmod /host/kernel2410s/drivers/char/ 17 5 系統(tǒng)整體調(diào)試與分析 系統(tǒng)的調(diào)試分了 x86 和 arm 架構(gòu)下的調(diào)試,其中以進(jìn)階方式進(jìn)行開發(fā)測(cè)試,根據(jù)實(shí)現(xiàn)難度分為三步:第一步先實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)頁(yè)瀏覽,然后通過乘法操作的簡(jiǎn)單設(shè)計(jì) 來實(shí)現(xiàn)人機(jī)交互最后通過電機(jī)控制的設(shè)計(jì)完成整個(gè)服務(wù)器監(jiān)控系統(tǒng)的設(shè)計(jì)。 基于 web 的乘法操作的調(diào)試與分析 結(jié)果:網(wǎng)頁(yè)可以正常顯示但在調(diào)試的開始階段遇到了程序不能正常運(yùn)行的問題,但經(jīng)過同一起努力在兩天后解決了問題。 電機(jī)控制的調(diào)試與分析 由于牽涉到硬件設(shè)備的調(diào)試所以在 X86 環(huán)境下只進(jìn)行了程序的編寫和編譯,而沒有實(shí)際的進(jìn)行調(diào)試。 將編寫好的 html 程序 (名稱改為 ,因?yàn)檫@是輸入地址后默認(rèn)的訪問文件 ) 放到目錄 var/ 下。啟動(dòng) boa 服務(wù)器,在根目錄下輸入 ifconfig 命令可以查找到服務(wù)器的 ip 地址,在客戶端的地址欄輸入該地址,就可以訪問到相應(yīng)的網(wǎng)頁(yè),通過該網(wǎng)頁(yè)用戶可以監(jiān)控 電機(jī)。 Module 驅(qū)動(dòng)程序?qū)崿F(xiàn)了以下方法: static struct file_operations s3c2410_dcm_fops = { owner:THIS_MODULE, open: s3c2410_dcm_open, ioctl: s3c2410_dcm_ioctl, release: s3c2410_dcm_release, }。=~ 0xf。 } 配置定時(shí)器的各控制寄存