Cortex-M3平臺上lwIP+AJAX的Web嵌入式應(yīng)用
#define APP_BASE 0x00000000
#define RAM_BASE 0x20000210
MEMORY
{
FLASH (RX) : origin =APP_BASE, length =0x00080000 //Application stored in and executes from //internal flash
SRAM (RWX) : origin =RAM_BASE, length =0x00017df0 //Application uses internal RAM for data
}
lwIP移植
lwIP移植涉及的主要過程如下:
(1)在/ports目錄下,增加對stellaris LM3S9D96的MAC層驅(qū)動實現(xiàn)
stellarisif.h/stellarisif.c:實現(xiàn)與lwIP網(wǎng)絡(luò)驅(qū)動接口,此代碼從lwIP的“ethernetif.c”衍射出來,重要函數(shù)有stellarisif_init(),stellarisif_receive(),stellarisif_output(),stellarisif_interrupt(),及stellarisif_transmit();
sys_arch.h/sys_arch.c:實現(xiàn)sys_init(),sys_arch_thread(),sys_arch_timeouts及信號量,郵箱等功能。
perf.h/perf.c:主要實現(xiàn)perf_init()函數(shù)。
cc.h:一些與CPU或編譯器相關(guān)的定義,如數(shù)據(jù)長度、字的高低位順序等。
(2)在/apps增加lwIP抽象應(yīng)用層API
RAW API進行TCP/IP編程,為提高程序可讀性及設(shè)計方便,對lwIP TCP/IP庫函數(shù)進行抽象、封裝,提供應(yīng)用層方便簡捷的API,此部分包括以下文件中實現(xiàn):
lwiplib.h/lwiplib.c:包括核心封裝有:lwIPInit(),lwIPPrivateInit(),lwIPInterruptTask(),lwIPEthernetIntHandler(),lwIPPrivateNetworkConfigChange()。
以上二步的源代碼,均可在TI網(wǎng)站上下載到示例源代碼文件。
AJAX動態(tài)網(wǎng)頁設(shè)計
基于AJAX的動態(tài)網(wǎng)頁設(shè)計可分成前臺、后臺二部分來實現(xiàn)。
前臺包括(1)AJAX腳本設(shè)計,完整代碼見附件ajax.js;(2)HTML網(wǎng)頁設(shè)計,可借助專業(yè)的網(wǎng)頁開發(fā)工具如Dreamware8.0進行設(shè)計,完整代碼見附件index.htm。代碼關(guān)鍵地方均給出了注釋,index.htm網(wǎng)頁通過調(diào)用ajax.js中的function ajax(url)方法創(chuàng)建一個ajax對象PlantRT.xml,并進行必要的初始化:使用GET方式,關(guān)聯(lián)事件為function updateRTStatus(xml,e),頁面刷新周期5s。在function updateRTStatus(xml,e)中,通過調(diào)用ajax.js中的getXMLValue(xmlData, field)方法獲得服務(wù)器的響應(yīng)值。主頁面Index網(wǎng)頁效果如圖5所示?! ?/p>
linux相關(guān)文章:linux教程
評論