0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在ARM開(kāi)發(fā)板上實(shí)現(xiàn)WEB服務(wù)器設(shè)計(jì)制作

Q4MP_gh_c472c21 ? 來(lái)源:cg ? 2019-01-03 14:49 ? 次閱讀

隨著計(jì)算機(jī)、通信、自動(dòng)控制、微電子等技術(shù)的發(fā)展。電器設(shè)備上網(wǎng)已經(jīng)成為現(xiàn)實(shí)。與傳統(tǒng)的單片機(jī)相比,嵌入式設(shè)備重要的突破之一就是解決了設(shè)備和internet的互連問(wèn)題.近年來(lái).嵌入式技術(shù)飛速發(fā)展.種類(lèi)繁多、功能強(qiáng)大的CPU和片外連接.為網(wǎng)絡(luò)應(yīng)用提供了穩(wěn)定、可靠的硬件環(huán)境:嵌入式操作系統(tǒng)對(duì)這些硬件和以太網(wǎng)也有很好的支持,搡作系統(tǒng)的移植大為簡(jiǎn)化,這就為嵌入式web服務(wù)器的實(shí)現(xiàn)提供了方便。嵌入式web服務(wù)器將監(jiān)控系統(tǒng)中的各種辦議的數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一的TCP/IP協(xié)議格式,以便用戶通過(guò)以太網(wǎng)遠(yuǎn)程訪問(wèn)web服務(wù)器。該文結(jié)合快速發(fā)震的嵌入式技術(shù)。給出了一種基于嵌入式網(wǎng)絡(luò)化遠(yuǎn)程監(jiān)控系統(tǒng)的web服務(wù)器實(shí)現(xiàn)方案。

通過(guò)創(chuàng)新實(shí)踐課程設(shè)計(jì)建立嵌入式系統(tǒng)主體環(huán)節(jié),嵌入式系統(tǒng)的最小結(jié)構(gòu)和系統(tǒng)應(yīng)用設(shè)計(jì)基本技能,培養(yǎng)分析和解決一些簡(jiǎn)單的實(shí)際問(wèn)題的能力,為今后畢業(yè)設(shè)計(jì)奠定基礎(chǔ)。隨著嵌入式技術(shù)的發(fā)展和高速寬帶網(wǎng)絡(luò)的普及, 利用網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控已為人們廣泛接受, 嵌入式網(wǎng)絡(luò)監(jiān)控技術(shù)正是在此條件下逐步發(fā)展成熟起來(lái)的。用戶使用 Web瀏覽器, 通過(guò)以太網(wǎng)遠(yuǎn)程訪問(wè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ā)送指令。在整個(gè)系統(tǒng)的實(shí)現(xiàn)過(guò)程中, 嵌入式 Web 服務(wù)器起著十分重要的作用。高端嵌入式設(shè)備快速發(fā)展,硬件成本顯著下降,有的嵌入式系統(tǒng)硬件已經(jīng)與通用計(jì)算機(jī)接近。同時(shí)隨著Internet的迅速發(fā)展,網(wǎng)絡(luò)化的嵌入式產(chǎn)品已經(jīng)成為IE產(chǎn)業(yè)的最大增長(zhǎng)點(diǎn),將嵌入式設(shè)備接入Internet將成為一種必然,嵌入式設(shè)備中運(yùn)用Web技術(shù)也是一種必然,但一個(gè)穩(wěn)定好的、適應(yīng)性強(qiáng)的、安全性高的、可以適合多嵌入式操作系統(tǒng)的和有自己知識(shí)產(chǎn)權(quán)的嵌入式Web服務(wù)器軟件也還是一個(gè)市場(chǎng)的需求。因此本課題主要研究和實(shí)現(xiàn)了一個(gè)模塊化的、通過(guò)模塊配置可以適合幾種嵌入式操作系統(tǒng)、屏蔽目標(biāo)平臺(tái)的異構(gòu)性的嵌入式Web服務(wù)器,并對(duì)安全性問(wèn)題也給出了詳細(xì)的研究和解決方案。

研究目的和意義

1.通過(guò)嵌入式課程設(shè)計(jì),熟練掌握 C 語(yǔ)言的編程方法?;?WEB的遠(yuǎn)程監(jiān)控的實(shí)現(xiàn),CGI的編寫(xiě)和使用,將理論聯(lián)系到實(shí)踐中去,提高我們的動(dòng)腦和動(dòng)手的能力。

2.使用博創(chuàng)UP-NETARM2410-S嵌入式開(kāi)發(fā)平臺(tái),通過(guò)采購(gòu)部分元器件完成開(kāi)發(fā)板設(shè)計(jì)

3.本課題的研究目的是用 BOA 服務(wù)器、CGI、IE瀏覽器設(shè)計(jì)一個(gè)通過(guò) IE 瀏覽器監(jiān)控電機(jī)的系統(tǒng),能夠通過(guò)兩個(gè)簡(jiǎn)單的按鍵對(duì)電機(jī)進(jìn)行啟動(dòng)和停止的控制,并能夠在 IE 瀏覽器上看到電機(jī)的當(dāng)前狀態(tài)。

4.由于基于 WEB的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)將成為今后遠(yuǎn)程監(jiān)控技術(shù)發(fā)展的主流方向,所以需要設(shè)計(jì)出簡(jiǎn)單實(shí)用,讓人們更滿意的產(chǎn)品。

總體方案設(shè)計(jì)

整體方案設(shè)計(jì)

系統(tǒng)總體設(shè)計(jì)是基于嵌入式系統(tǒng)和 WEB服務(wù)器結(jié)合的思想開(kāi)發(fā)的,其網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖 2.1所示,一個(gè)設(shè)備的核心處理器只能連接一個(gè)Web服務(wù)器,有n個(gè)設(shè)備據(jù)需要n個(gè)Web服務(wù)器,想要將這n個(gè)設(shè)備連接在一起就必須用交換機(jī)作為中轉(zhuǎn)站,這樣就可以將其余的所有設(shè)備連接,實(shí)現(xiàn)信息的交換,而交換機(jī)則需要一個(gè)監(jiān)控機(jī)來(lái)進(jìn)行監(jiān)督。

圖 2.1 系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D

而針對(duì)本次課程設(shè)計(jì)提出的系統(tǒng)設(shè)計(jì)就是這拓?fù)浣Y(jié)果中的一個(gè)單元,如圖 2.2所示。

圖 2.2系統(tǒng)方案框圖

硬件系統(tǒng)設(shè)計(jì)——核心處理器的選擇

核心處理芯片需要完成處理和支持整個(gè)系統(tǒng)的功能需求,通過(guò)運(yùn)行 BOA 服務(wù)器要實(shí)施的接收來(lái)自各個(gè)客戶端的請(qǐng)求和信息,并根據(jù)獲得的請(qǐng)求和信息進(jìn)行相應(yīng)的后臺(tái)處理以及信息的反饋。為完成上述功能,實(shí)現(xiàn)服務(wù)器正常運(yùn)行,對(duì)處理芯片進(jìn)行選型,對(duì)比現(xiàn)有處理芯片的優(yōu)缺點(diǎn),選擇 ARM9 S3C2410X 芯片作為設(shè)計(jì)開(kāi)發(fā)嵌入式服務(wù)器系統(tǒng)的核心處理芯片。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卡接口等。

軟件環(huán)境選擇

1.操作系統(tǒng)的選擇

當(dāng)選定了硬件系統(tǒng)后,為了配合硬件達(dá)到系統(tǒng)的最優(yōu)控制要求,對(duì)市面上常用的嵌入式系統(tǒng)進(jìn)行分析比較。

(1)價(jià)格比較:Linux是完全免費(fèi)的操作系統(tǒng),只需遵循 GPL聲明,不需支付任何費(fèi)用;WinCE是微軟的商用嵌入式操作系統(tǒng),使用它需要支付 WinCE及其開(kāi)發(fā)環(huán)境的費(fèi)用,開(kāi)發(fā)出來(lái)的每套產(chǎn)品也需交納一定費(fèi)用。uc/os—II系統(tǒng),可以免費(fèi)用于學(xué)習(xí)或科研,但開(kāi)發(fā)商使用產(chǎn)品或銷(xiāo)售都是收費(fèi)的。

(2)開(kāi)放性比較:Linux是源代碼完全開(kāi)放的操作系統(tǒng),可以自由下載,并且在遵循GPL聲明的前提下可以自由地修改、移植,為系統(tǒng)的開(kāi)發(fā)和調(diào)試帶來(lái)極大的便利;winCE是部分源碼開(kāi)放的商用操作系統(tǒng),如果要修改其中的代碼,需獲得微軟公司的授權(quán);uc/os—II也是開(kāi)放的實(shí)時(shí)操作系統(tǒng)。

(3)文件系統(tǒng)的比較:Linux支持絕大部分文件系統(tǒng),只需選擇相應(yīng)的文件系統(tǒng)即可;

WinCE僅支持 Windows系列的 FAT16、有限文件系統(tǒng);uc/os—II本身沒(méi)有包括文件系統(tǒng),需購(gòu)買(mǎi)或移植。Linux與 ARM處理器從以上可以看出,Linux系統(tǒng)在諸多方面都存在優(yōu)勢(shì),而且本身的 ARM處理器與 Linux也有著緊密的聯(lián)系。因此采用 Linux操作系統(tǒng)。

2.服務(wù)器的選擇

典型的嵌入式 Web服務(wù)器有 Boa和 thttpd兩種,它們和 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)足夠了。Boa是一個(gè)非常小巧的 Web服務(wù)器,可執(zhí)行代碼只有約60KB。它是一個(gè)單任務(wù) Web服務(wù)器,只能依次完成用戶的請(qǐng)求,而不會(huì) fork出新的進(jìn)程來(lái)處理并發(fā)連接請(qǐng)求。但 Boa支持 CGI,能夠?yàn)?CGI程序fork出一個(gè)進(jìn)程來(lái)執(zhí)行。Boa的設(shè)計(jì)目標(biāo)是速度和安全,在其站點(diǎn)公布的性能測(cè)驗(yàn)中,Boa的性能要好于 Apache服務(wù)器。經(jīng)過(guò)上述的對(duì)比和判斷,選擇Boa作為系統(tǒng)的嵌入式服務(wù)器。

綜合以上的討論以及選擇,根據(jù)系統(tǒng)的實(shí)際需求,最終確定了采用 S3C2410X為核心處理器,Linux為嵌入式操作系統(tǒng),boa為服務(wù)器以及相應(yīng)的 http瀏覽器的系統(tǒng)設(shè)計(jì)方案。

硬件設(shè)計(jì)

系統(tǒng)硬件平臺(tái)介紹

我們所介紹的硬件平臺(tái)是基于 ARM體系結(jié)構(gòu),由北京博創(chuàng)興業(yè)科技有限公司開(kāi)發(fā)的UP-NetARM2410-S實(shí)驗(yàn)儀器。 UP-NetARM2410-S的 CPU為 ARM920T內(nèi)核的三星S3c2410芯片,由于有 MMU(內(nèi)存管理單元)可以運(yùn)行標(biāo)準(zhǔn)的 ARM-LINUX內(nèi)核。通過(guò)這個(gè)平臺(tái),我們可以實(shí)現(xiàn)嵌入式 LINUX中的針對(duì)無(wú) MMU的開(kāi)發(fā)過(guò)程。

S3C2410芯片介紹

S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,采用0.18um制造工藝的32位微控制器。該處理器擁有:獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,nand閃存控制器,3路UART,4路DMA,4路帶PWM的Timer,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。S3C2410處理器最高可運(yùn)行在203MHz。

系統(tǒng)的硬件設(shè)計(jì)方案

通常的嵌入式設(shè)備的硬件架構(gòu)是以嵌入式微處理器為核心,通過(guò)CPU擴(kuò)展接口以及平臺(tái)硬件的支持,把眾多的外設(shè)單元集成到整個(gè)系統(tǒng)中,并通過(guò)CPLD等邏輯轉(zhuǎn)換器件和其他硬件電路完成對(duì)外設(shè)模塊進(jìn)行讀寫(xiě)和控制操作?;赟3C2410的硬件平臺(tái)設(shè)計(jì)最主要的工作是外圍電路的設(shè)計(jì),包括系統(tǒng)總線、片選、存儲(chǔ)系統(tǒng)、輸入和輸出設(shè)計(jì)。由于S3C24l0片上集成了很多設(shè)備的控制器,外圍電路的設(shè)計(jì)變得很簡(jiǎn)單。本系統(tǒng)利用S3C2410出色的內(nèi)核性能和豐富的外部接口構(gòu)造一個(gè)嵌入式系統(tǒng)平臺(tái)。下圖3.1表示了本文所設(shè)計(jì)的嵌入式Web服務(wù)器的硬件結(jié)構(gòu)框圖。

圖3.1系統(tǒng)硬件結(jié)構(gòu)框圖

ARM處理器的外圍設(shè)備

1.電源電路

設(shè)備提供 12v的電源,經(jīng) LM1085-3.3V 和 AS1117-1.8V 分別得到3.3V 和1.8V 的工作電壓。開(kāi)發(fā)板上的芯片多數(shù)使用了 3.3V 電壓,而 1.8V 是供給 S3C2410 內(nèi)核使用的。5V 電壓供給 LCD、電機(jī)、總線等電路使用。

圖3.2 電源電路

2.硬件復(fù)位電路

硬件復(fù)位電路由IMP811T構(gòu)成,實(shí)現(xiàn)對(duì)電源電壓的監(jiān)控和手動(dòng)復(fù)位操作。2410-S主板復(fù)位電路設(shè)置專(zhuān)用邏輯:IMP811T的復(fù)位電平可以使CPUJTAG(nTRST和板級(jí)系統(tǒng)(nRESET)全部復(fù)位;來(lái)自仿真器的ICE_nSRST信號(hào)只能使板級(jí)復(fù)位;來(lái)自仿真器的ICE_nTRST可以使JTAG(nTRST)復(fù)位,通過(guò)跳線選擇是否使板級(jí)nRESET復(fù)位。nRESET反相后得到RESET 信號(hào)。硬件復(fù)位電路如圖3.3所示。

圖3.3 硬件復(fù)位

BOA服務(wù)器的簡(jiǎn)介與搭建

1.嵌入式 Web服務(wù)器 Boa 的特點(diǎn)

Boa 是一款單任務(wù)的HTTP 服務(wù)器, 與其他傳統(tǒng)的 Web 服務(wù)器不同的是當(dāng)有連接請(qǐng)求到來(lái)時(shí), 它并不為每個(gè)連接單獨(dú)創(chuàng)建進(jìn)程, 也不通過(guò)復(fù)制自身進(jìn)程來(lái)處理多鏈接, 而是通過(guò)建立 HTTP 請(qǐng)求列表來(lái)處理多路 HTTP 連接請(qǐng)求, 同時(shí)它只為 CGI 程序創(chuàng)建新的進(jìn)程,這樣就在最大程度上節(jié)省了系統(tǒng)資源, 這對(duì)嵌入式系統(tǒng)來(lái)說(shuō)至關(guān)重要。同時(shí)它還具有自動(dòng)生成目錄、自動(dòng)解壓文件等功能, 因此 Boa 具有很高的 HTTP 請(qǐng)求處理速度和效率, 在嵌入式系統(tǒng)中具有很高的應(yīng)用價(jià)值。

2.Boa 的功能實(shí)現(xiàn)

嵌入式 Web 服務(wù)器 Boa 和普通 Web 服務(wù)器一樣, 能夠完成接收客戶端請(qǐng)求、分析請(qǐng)求、響應(yīng)請(qǐng)求、向客戶端返回請(qǐng)求結(jié)果等任務(wù)。它的工作過(guò)程主要包括:

( a) 完成 Web 服務(wù)器的初始化工作, 如創(chuàng)建環(huán)境變量、創(chuàng)建 TCP 套接字、綁定端口、開(kāi)始偵聽(tīng)、進(jìn)入循環(huán)結(jié)構(gòu), 以及等待接收客戶瀏覽器的連接請(qǐng)求;

( b) 當(dāng)有客戶端連接請(qǐng)求時(shí),Web 服務(wù)器負(fù)責(zé)接收客戶端請(qǐng)求, 并保存相關(guān)請(qǐng)求信息;

( c) 在接收到客戶端的連接請(qǐng)求之后,分析客戶端請(qǐng)求, 解析出請(qǐng)求的方法、URL 目標(biāo)、可選的查詢信息及表單信息, 同時(shí)根據(jù)請(qǐng)求做出相應(yīng)的處理;

( d)Web 服務(wù)器完成相應(yīng)處理后, 向客戶端瀏覽器發(fā)送響應(yīng)信息, 關(guān)閉與客戶機(jī)的TCP 連接。嵌入式 Web 服務(wù)器 Boa 根據(jù)請(qǐng)求方法的不同,做出不同的響應(yīng)。如果請(qǐng)求方法為HEAD,則直接向?yàn)g覽器返回響應(yīng)首部;如果請(qǐng)求方法為 GET,則在返回響應(yīng)首部的同時(shí),將客戶端請(qǐng)求的 URL 目標(biāo)文件從服務(wù)器上讀出,并且發(fā)送給客戶端瀏覽器;如果請(qǐng)求方法為 POST,則將客戶發(fā)送過(guò)來(lái)的表單信息傳送給相應(yīng)的 CGI 程序,作為 CGI 的參數(shù)來(lái)執(zhí)行 CGI 程序,并將執(zhí)行結(jié)果發(fā)送給客戶端瀏覽器。 Boa的功能實(shí)現(xiàn)也是通過(guò)建立連接、綁定端口、進(jìn)行偵聽(tīng)、請(qǐng)求處理等來(lái)實(shí)現(xiàn)的。

3.Boa的搭建與移植

(1)準(zhǔn)備源代碼、解壓軟件包,安裝源代碼到 boa網(wǎng)站 http://www.boa.org下載 boa-0.94.13.tar.gz 源代碼,或者使用光盤(pán)的boa-0.94.13.tar.gz 軟件包。$tar xzvf boa-0.94-13.tar.gz

(2)進(jìn)入 src 目錄,編譯源代碼。

解壓后 src 目錄下有 Makefile.in 文件,但沒(méi)有 Makefile 文件,為了編譯源代碼,需要先生成Makefile 文件,在 src 目錄下運(yùn)行 configure 命令$./configure

生成的 Makefile 文件是針對(duì) X86平臺(tái)的,為了生成能夠在 ARM 上運(yùn)行的 boa,需要修改 Makefile 文件。將 Makefile 的 31~32 行內(nèi)容:

CC = gcc

CPP = gcc –E

應(yīng)用(在交叉編譯時(shí)使用):

然后輸入 make 命令進(jìn)行編譯,在 src 目錄下就會(huì)生成 boa 文件。$ make然后將該文件添加到文件系統(tǒng)中,重新下載文件系統(tǒng)。如果不幸出現(xiàn)―icky Linux kernelbug!‖的錯(cuò)誤,請(qǐng)將 src下 boa.c 的第 226 行注釋掉,重新編譯下載即可。

(3)安裝 boa 服務(wù)器

主要是配置 boa 服務(wù)器。boa 啟動(dòng)時(shí)需要一個(gè)配置文件 boa.conf,該文件的缺省目錄由src/defines.h 文件的 SERVER_ROOT 定義,或者在啟動(dòng) boa的時(shí)候通過(guò)參數(shù)―-c‖指定。其中指定的默認(rèn)目錄是:/etc/boa/。

(4)登錄 boa 服務(wù)器

在 PC 機(jī)瀏覽器地址欄輸入目標(biāo)系統(tǒng)的 IP 地址(http://172.31.55.91),訪問(wèn)存在于目標(biāo)系統(tǒng)中的網(wǎng)頁(yè)。

應(yīng)用程序設(shè)計(jì)

1.程序設(shè)計(jì)依賴(lài)關(guān)系

通過(guò)對(duì)系統(tǒng)的分析以及對(duì)服務(wù)器的了解,系統(tǒng)確定了以下的軟件開(kāi)發(fā)系統(tǒng)方案,如圖4.2 所示。

圖 4.1 軟件依賴(lài)關(guān)系

圖4.2 乘法功能實(shí)現(xiàn)流程圖

程序段電機(jī)程序的流程圖如下圖4.3所示。

圖 4.3 電機(jī)部分流程圖

驅(qū)動(dòng)程序設(shè)計(jì)

驅(qū)動(dòng)部分主要有兩部分組成:電機(jī)驅(qū)動(dòng)和網(wǎng)卡驅(qū)動(dòng),其中以電機(jī)驅(qū)動(dòng)為主。由于在本套系統(tǒng)設(shè)計(jì)中,不可能每次開(kāi)機(jī)都要由操作人員將驅(qū)動(dòng)加入內(nèi)核,這樣既不方便又費(fèi)時(shí)費(fèi)力,所以系統(tǒng)采用將驅(qū)動(dòng)編譯進(jìn)內(nèi)核的模式。

(1)電機(jī)驅(qū)動(dòng)

電機(jī)驅(qū)動(dòng)程序流程

1、開(kāi)啟設(shè)備時(shí),配置 IO 口為定時(shí)器工作方式

2、配置定時(shí)器的各控制寄存器

3、在 s3c2410_dcm_ioctl 中提供調(diào)速功能接口

4、應(yīng)用程序dcm_main.c 中調(diào)用

5、實(shí)現(xiàn)直流電機(jī)速度的調(diào)整

驅(qū)動(dòng)加載過(guò)程

以電機(jī)驅(qū)動(dòng)為例:編譯直流電機(jī)cd/arm2410s/kernel-2410smake menuconfig進(jìn)入 Main Menu / Character devices 菜單,選擇 DC MOTOR

模塊加載:

編譯內(nèi)核模塊:

make dep

make

make modules

直流電機(jī)模塊的編譯結(jié)果為:/arm2410s/kernel-2410s/drivers/char/s3c2410-dc-motor.o

(2)加載模塊

在超級(jí)終端中,通過(guò)加載 NFS 運(yùn)行編譯結(jié)果:

mount–t nfs 192.168.0.121:/arm2410s /host

Insmod/host/kernel-2410s/drivers/char/s3c2410-dc-motor.o

嵌入式平臺(tái)下的調(diào)試

客戶端與服務(wù)器交互的調(diào)試與分析

由于/etc 目錄只允許讀不允許寫(xiě),但我們搭建的 BOA服務(wù)器的運(yùn)行要求在/etc目錄下有 mime.types(用來(lái)指明不同文件的擴(kuò)展名對(duì)應(yīng)的 MIME 類(lèi)型)并且還要在/etc/boa/下有相應(yīng)的配置文件 BOA.conf,則需要我們重新生成根文件系統(tǒng)等,將我們需要的文件填到相應(yīng)的位置,然后再重新生成鏡像文件并燒寫(xiě)文件系統(tǒng)。

將編寫(xiě)好的html 程序(名稱(chēng)改為 index.html,因?yàn)檫@是輸入地址后默認(rèn)的訪問(wèn)文件) 放到目錄 var/www 下。需要的 c 語(yǔ)言程序用 arm-linux-gcc 編譯生成相應(yīng)的 cgi 程序,到目錄/var/www/cgi-bin 下。啟動(dòng) boa 服務(wù)器,在根目錄下輸入 ifconfig 命令可以查找到服務(wù)器的 ip 地址,在客戶端的地址欄輸入該地址,就可以訪問(wèn)到相應(yīng)的網(wǎng)頁(yè),通過(guò)該網(wǎng)頁(yè)用戶可以監(jiān)控電機(jī)。

電機(jī)控制的調(diào)試與分析

Linux 下的直流電機(jī)程序包括模塊驅(qū)動(dòng)程序和應(yīng)用程序兩部分。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,

};

開(kāi)啟設(shè)備時(shí),配置 IO 口為定時(shí)器工作方式:

({

GPBCON&=~ 0xf;

GPBCON|= 0xa;

}

配置定時(shí)器的各控制寄存器:

({ TCFG0 &= ~(0x00ff0000);

TCFG0 |= (DCM_TCFG0);

TCFG1 &= ~(0xf);

TCNTB0 = DCM_TCNTB0; /* less than 10ms */

TCMPB0 = DCM_TCNTB0/2;

TCON &=~(0xf);

TCON |= (0x2);

TCON &=~(0xf);

TCON |= (0x19); })

在 s3c2410_dcm_ioctl 中提供調(diào)速功能接口:

case DCM_IOCTRL_SETPWM:

return dcm_setpwm((int)arg);

應(yīng)用程序 dcm_main.c 中調(diào)用:

ioctl(dcm_fd, DCM_IOCTRL_SETPWM, (setpwm *factor));

實(shí)現(xiàn)直流電機(jī)速度的調(diào)整。

a.編譯直流電機(jī)模塊

cd /arm2410s/kernel-2410s

make menuconfig

進(jìn)入 Main Menu / Characterdevices 菜單,選擇 DC MOTOR 為模塊加載:

b.編譯內(nèi)核模塊:

make dep

make

make modules

直流電機(jī)模塊的編譯結(jié)果為:

/arm2410s/kernel-2410s/drivers/char/s3c2410-dc-motor.o

c. 編譯應(yīng)用程序

cd /arm2410s/exp/basic/10_dcmotor/

make

生成 dcm_main

d.掛載驅(qū)動(dòng)模塊

insmod/host/kernel-2410s/drivers/char/s3c2410-dc-motor.o

e.運(yùn)行程序

mount –t nfs 192.168.0.xxx:/arm2410s /host

insmod/host/kernel-2410s/drivers/char/s3c2410-dc-motor.o

cd /host/exp/basic/10_dcmotor/

./dcm_main

參考文獻(xiàn)

[1] 孫天澤,袁文菊,張海峰.嵌入式設(shè)計(jì)及Linux驅(qū)動(dòng)開(kāi)發(fā)指南—基于ARM9 處理器[M].北京:電子工業(yè)出版社,2005

[2] 于明,范書(shū)瑞,曾祥燁.ARM9嵌入式系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)教程[M].北京:電子工業(yè)出版社,2006

[3]王田苗.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開(kāi)發(fā)[M].北京:清華大學(xué)出版社,2003

[4] Samsung Electronics.S3C2410X32-Bit RISC Microprocessor User’s Manual,2003

[5] 周立功等. ARM嵌入式Linux系統(tǒng)構(gòu)建與驅(qū)動(dòng)開(kāi)發(fā)范例.北京:北京航空航天大學(xué)出版社,2006

[3] 王進(jìn)德 編著《嵌入式 LINUX 程序設(shè)計(jì)與應(yīng)用案例》 中國(guó)電力出版社 2007.5

[4] 鄭慕德 編著《嵌入式微型計(jì)算機(jī)系統(tǒng)實(shí)例教程-ARM 與 LINUX》 科學(xué)出版社2006.7

附錄

乘法程序清單:

#include

#include

intmain(void)

{char*data;

longm,n;

printf("%s%c%c","Content-Type:text/html;charset=gb2312 ",13,10);

printf("乘法結(jié)果 ");

printf("

乘法結(jié)果

");

data= getenv("QUERY_STRING");

if(data== NULL)

printf("

錯(cuò)誤!數(shù)據(jù)沒(méi)有被輸入或者數(shù)據(jù)傳輸有問(wèn)題");

elseif(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)

printf("

錯(cuò)誤!輸入數(shù)據(jù)非法。表單中輸入的必須是數(shù)字。");

else

printf("

%ld和%ld的成績(jī)是:%ld。",m,n,m*n);

return0;

}

電機(jī)網(wǎng)頁(yè)的HTML表單:

監(jiān)控電機(jī)

輸入start啟動(dòng)電機(jī),輸入stop停止電機(jī)

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9164

    瀏覽量

    368857
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9295

    瀏覽量

    85944

原文標(biāo)題:ARM開(kāi)發(fā)板上實(shí)現(xiàn)WEB服務(wù)器設(shè)計(jì)制作全過(guò)程

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式Web服務(wù)器BOA怎么在ARM9移植?

    成本比較高,而且不方便工業(yè)現(xiàn)場(chǎng)的應(yīng)用實(shí)施,嵌入式系統(tǒng)以及嵌入式小型Web服務(wù)器的出現(xiàn)使得Web服務(wù)運(yùn)行在資源、性能有限的嵌入式設(shè)備提供了條
    發(fā)表于 10-29 06:48

    迅為IMX6ULL開(kāi)發(fā)板搭建 Web 服務(wù)器

    本章節(jié)使用的資料已經(jīng)放到了開(kāi)發(fā)板網(wǎng)盤(pán)資料中,路徑為“11_Linux 系統(tǒng)開(kāi)發(fā)進(jìn)階\80_章節(jié)_搭建 Web服務(wù)器使用資料”。在 iTOP-IMX6ULL 搭建
    發(fā)表于 06-07 15:00

    如何實(shí)現(xiàn)對(duì)嵌入式WEB服務(wù)器系統(tǒng)的控制設(shè)計(jì)

    簡(jiǎn)單設(shè)計(jì)。本設(shè)計(jì)利用ARM 自帶的WEB服務(wù)器技術(shù),來(lái)實(shí)現(xiàn)對(duì)嵌入式WEB服務(wù)器系統(tǒng)的控制設(shè)計(jì)。該
    發(fā)表于 11-09 08:47

    怎樣在開(kāi)發(fā)板上去搭建一個(gè)基于boa的web服務(wù)器

    什么是嵌入式web服務(wù)器呢?怎樣在開(kāi)發(fā)板上去搭建一個(gè)基于boa的web服務(wù)器呢?
    發(fā)表于 12-27 07:04

    何在單片機(jī)跑裸機(jī)的環(huán)境下實(shí)現(xiàn)簡(jiǎn)易的web服務(wù)器

    。本人介紹,如何在單片機(jī)跑裸機(jī)的環(huán)境下實(shí)現(xiàn)簡(jiǎn)易的web服務(wù)器,并可通過(guò)電腦、手機(jī)上傳、下載資源。前提條件1、單片機(jī)(最好4+32及以上資源)+ 以太網(wǎng)模塊/WIFI模塊二選一。2、已能
    發(fā)表于 01-26 07:23

    何在ARM構(gòu)建一個(gè)web服務(wù)器

    本人現(xiàn)在在做ARM構(gòu)建一個(gè)web服務(wù)器,就是將網(wǎng)頁(yè)放在這個(gè)服務(wù)器,然后接入internet可
    發(fā)表于 10-28 10:55

    基于ARM的嵌入式uClinux系統(tǒng)設(shè)計(jì)與Web服務(wù)器應(yīng)用的

    基于ARM的嵌入式uClinux系統(tǒng)設(shè)計(jì)與Web服務(wù)器應(yīng)用的實(shí)現(xiàn)
    發(fā)表于 03-25 15:00 ?47次下載

    簡(jiǎn)單嵌入式WEB服務(wù)器實(shí)驗(yàn)

    掌握在ARM開(kāi)發(fā)板實(shí)現(xiàn)一個(gè)簡(jiǎn)單WEB服務(wù)器的過(guò)程。 學(xué)習(xí)在ARM開(kāi)發(fā)板
    發(fā)表于 04-15 23:44 ?80次下載

    基于ARM9的WEB服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)

    設(shè)計(jì)并實(shí)現(xiàn)了一種基于S3C2440開(kāi)發(fā)板使用linux操作系統(tǒng)做為開(kāi)發(fā)平臺(tái),開(kāi)發(fā)實(shí)現(xiàn)了嵌入式
    發(fā)表于 02-21 16:18 ?85次下載
    基于<b class='flag-5'>ARM</b>9的<b class='flag-5'>WEB</b><b class='flag-5'>服務(wù)器</b>設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>

    iTOP-4412開(kāi)發(fā)板-實(shí)戰(zhàn)教程-ssh服務(wù)器移植到arm開(kāi)發(fā)板

    迅為iTOP-4412開(kāi)發(fā)板-實(shí)戰(zhàn)教程-ssh服務(wù)器移植到arm開(kāi)發(fā)板
    發(fā)表于 05-15 11:11 ?28次下載

    嵌入式web服務(wù)器系統(tǒng)設(shè)計(jì),基于-ARM簡(jiǎn)單嵌入式WEB服務(wù)器系統(tǒng)設(shè)計(jì).doc

    進(jìn)行了簡(jiǎn)單設(shè)計(jì)。本設(shè)計(jì)利用ARM 自帶的WEB服務(wù)器技術(shù),來(lái)實(shí)現(xiàn)對(duì)嵌入式WEB服務(wù)器系統(tǒng)的控制設(shè)
    發(fā)表于 11-03 20:06 ?21次下載
    嵌入式<b class='flag-5'>web</b><b class='flag-5'>服務(wù)器</b>系統(tǒng)設(shè)計(jì),基于-<b class='flag-5'>ARM</b>簡(jiǎn)單嵌入式<b class='flag-5'>WEB</b><b class='flag-5'>服務(wù)器</b>系統(tǒng)設(shè)計(jì).doc

    基于STM32的WEB服務(wù)器設(shè)計(jì)

    STM32控制ENC28J60+UIP協(xié)議棧創(chuàng)建TCP服務(wù)器(WEB服務(wù)器),支持瀏覽訪問(wèn)完成數(shù)據(jù)傳輸。 瀏覽可以實(shí)時(shí)顯示溫度、時(shí)間、可
    的頭像 發(fā)表于 02-28 14:03 ?1.1w次閱讀
    基于STM32的<b class='flag-5'>WEB</b><b class='flag-5'>服務(wù)器</b>設(shè)計(jì)

    如何使用ESP8266制作可配置的Web服務(wù)器

    在這個(gè)項(xiàng)目中,我們首先研究如何在 Arduino IDE 中安裝 ESP8266 插件,然后使用 ESP8266 制作可配置的 Web 服務(wù)器。
    的頭像 發(fā)表于 05-10 15:18 ?1.3w次閱讀
    如何使用ESP8266<b class='flag-5'>制作</b>可配置的<b class='flag-5'>Web</b><b class='flag-5'>服務(wù)器</b>

    基于ARM平臺(tái)的嵌入式WEB服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于ARM平臺(tái)的嵌入式WEB服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-27 10:45 ?1次下載
    基于<b class='flag-5'>ARM</b>平臺(tái)的嵌入式<b class='flag-5'>WEB</b><b class='flag-5'>服務(wù)器</b>的設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>

    ElfBoard技術(shù)貼|如何在ELF 1開(kāi)發(fā)板搭建流媒體服務(wù)器

    流媒體服務(wù)器是一種專(zhuān)門(mén)用于傳輸實(shí)時(shí)數(shù)據(jù)流的服務(wù)器軟件,廣泛用于視頻直播、視頻會(huì)議、音頻播放等應(yīng)用場(chǎng)景。在嵌入式開(kāi)發(fā)領(lǐng)域,將流媒體服務(wù)器部署到開(kāi)發(fā)板
    的頭像 發(fā)表于 08-20 14:48 ?620次閱讀
    ElfBoard技術(shù)貼|如<b class='flag-5'>何在</b>ELF 1<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>上</b>搭建流媒體<b class='flag-5'>服務(wù)器</b>