本文基于lwIP以太網(wǎng)協(xié)議棧將AJAX動態(tài)網(wǎng)頁設(shè)計(jì)技術(shù)應(yīng)用于嵌入式Cortex-M3平臺,實(shí)現(xiàn)Web嵌入式應(yīng)用。相比于CGI技術(shù),AJAX實(shí)現(xiàn)簡易,移植性強(qiáng),可支持傳統(tǒng)IE或是手機(jī)等不同的網(wǎng)頁訪問終端用戶。所選Cortex-M3平臺內(nèi)部集成PHY,lwIP協(xié)議棧及實(shí)時操作系統(tǒng)FreeRTOS均是開源、免費(fèi),整個系統(tǒng)成本在60RMB以內(nèi),對于成本較敏感的網(wǎng)絡(luò)互聯(lián)產(chǎn)品提供了一種解決方案,并給出了硬件原理圖及軟件代碼。
引言
嵌入式系統(tǒng)是融合了SoC半導(dǎo)體技術(shù)、電子技術(shù)、計(jì)算機(jī)技術(shù),針對具體應(yīng)用硬件軟件均量身定制的計(jì)算機(jī)系統(tǒng)。低成本、高可靠性、高靈活性、高集成性使得嵌入式產(chǎn)品在工業(yè)領(lǐng)域獲得了巨大的發(fā)展契機(jī)。嵌入式產(chǎn)品一般服務(wù)于工業(yè)現(xiàn)場,通過RS232、RS485、或是CAN等通信接口與外界互聯(lián)通信。如今伴隨著Internet技術(shù)的成熟,帶寬的日益提高,公共場所無線網(wǎng)絡(luò)覆蓋,智能手機(jī)日益普及,網(wǎng)絡(luò)化、信息化的要求越來越受到關(guān)注,Internet網(wǎng)絡(luò)互聯(lián)成為必然的趨勢[1]。
目前在實(shí)際應(yīng)用中支持Internet應(yīng)用的嵌入式系統(tǒng)產(chǎn)品,主要是通過ARM9平臺實(shí)現(xiàn),如Samsung S3C2442或是ATMEL AT91SAM9G25平臺,操作系統(tǒng)一般是用Linux,網(wǎng)絡(luò)開發(fā)則多是采用傳統(tǒng)的CGI(Common Gateway Interface)技術(shù)[2]。此種解決方案在成本上過高,僅一顆ARM9處理器就將近70RMB,對于成本敏感的產(chǎn)品無法承擔(dān);CGI維護(hù)復(fù)雜,運(yùn)行效率低下,每響應(yīng)一個客戶就會打開一個新的進(jìn)程,當(dāng)用戶訪問數(shù)量增大時,會嚴(yán)重地?fù)p耗系統(tǒng)資源,大幅度地降低系統(tǒng)性能,訪問數(shù)據(jù)庫的程序也不容易編寫,這也就是最近幾年來隨著各種新的后臺技術(shù)的誕生,CGI應(yīng)用在Internet上越來越少的原因,CGI方式不適合訪問量大的應(yīng)用[3]。
基于此現(xiàn)狀,本文給出了一個TI Cortex-M3平臺上,運(yùn)用AJAX(Asynchronous JavaScript and XML)技術(shù)實(shí)現(xiàn)Web嵌入式應(yīng)用方案。Cortex-M3平臺成本和性能介于ARM9和MCU之間一類處理器,而TI Cortex-M3是目前市場上唯一內(nèi)部集成PHY,這可進(jìn)一步降低方案硬件成本。操作系統(tǒng)采用開源的FreeRTOS,相對Linux,F(xiàn)reeRTOS小巧精致,對硬件Flash和RAM需求極小,5KB Flash和0.6KB RAM便可運(yùn)行,相對于μC/OS-II商業(yè)操作系統(tǒng),F(xiàn)reeRTOS則是完全免費(fèi)。TCP/IP協(xié)議棧采用瑞典開源免費(fèi)的lwIP(Light Weight IP),一般它只需要0.5KB的RAM和7KB左右的Flash就可以運(yùn)行[4];網(wǎng)絡(luò)開發(fā)采用AJAX技術(shù),AJAX是一種基于客戶端瀏覽器的語言[5],使用AJAX的最大優(yōu)點(diǎn)就是能在不刷新整個頁面的前提下維護(hù)數(shù)據(jù)。這使得Web應(yīng)用程序更為迅捷地響應(yīng)用戶交互,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒有改變的信息[6]。由于采用了高性價比處理器平臺和免費(fèi)開源的系統(tǒng)軟件,整個系統(tǒng)成本可控制在60RMB以內(nèi),為成本較敏感的網(wǎng)絡(luò)互聯(lián)產(chǎn)品提供了一種解決方案。
系統(tǒng)硬件設(shè)計(jì)
TI推出的Cortex-M3 LM3S9D96,提供豐富的片內(nèi)外設(shè):片上集成512KB Flash,96KB RAM,18通道ADC,1個USB(OTG),2通道SPI,2路CAN,3通道UART,1路10/100M Ethernet,內(nèi)部集成PHY,看門狗,支持EPI、NVIC和DMA,65個通用IO,處理速度80MHz,ROM固化了FreeRTOS操作系統(tǒng),Bootloader及常用外設(shè)操作接口函數(shù)庫,方便快速高效產(chǎn)品開發(fā)。
基于LM3S9D96平臺的硬件系統(tǒng)框圖如圖1所示。
(1)PowerMode:系統(tǒng)工作電源,采用DC5V,由外置Adaptor設(shè)備提供。整個系統(tǒng)的電源包括:5V,3.3V及5V_ISO(用于RS485通信電源)。
(2)RS4851/RS4852:系統(tǒng)通過RS4851或RS4851接口電路實(shí)時采集現(xiàn)場設(shè)備運(yùn)行數(shù)據(jù)。
(3)LEDs:通過4個LED指示一些重要功能模塊的工作狀態(tài),如5V電源,RS4851,RS4852及LAN的通信狀態(tài)等。
(4)LAN:實(shí)現(xiàn)標(biāo)準(zhǔn)TCP/IP互聯(lián)網(wǎng)通信。
(5)Clock:為整個系統(tǒng)提供時鐘源。
(6)JTAG:軟件開發(fā)調(diào)試接口。
(7)EEPROM:采用512Kb SPI接口式EEPROM,存儲一些采集到的重要運(yùn)行數(shù)據(jù)及系統(tǒng)配制參數(shù)如IP地址,子網(wǎng)掩碼,網(wǎng)關(guān)及DNS服務(wù)器,Internet時間服務(wù)器,時區(qū)等。
(8)Recover:恢復(fù)出廠設(shè)置,當(dāng)上電時按住此鍵可使系統(tǒng)所有參數(shù)恢復(fù)到出廠默認(rèn)值。
(9)Reset:系統(tǒng)復(fù)位電路。