基于VxWorks實現(xiàn)自動發(fā)送彩信嵌入式設計
隨著嵌入式應用的發(fā)展和16/32位RISC處理器技術的成熟,以及支持各種高端處理器的嵌入式操作系統(tǒng)的涌現(xiàn)和完善,嵌入式無線設備可以利用CDMA網(wǎng)絡實現(xiàn)許多新的應用。自動發(fā)送彩信的嵌入式系統(tǒng)就是這種新應用之一,在特定的條件下,系統(tǒng)自動發(fā)送彩信到指定的移動通信終端;該應用系統(tǒng)是由用戶根據(jù)要求設定觸發(fā)條件的自動發(fā)送彩信系統(tǒng),當滿足觸發(fā)條件時,設備會自動控制捕獲、壓縮圖像部件拍攝外部圖像,經(jīng)過模數(shù)轉換、數(shù)字壓縮等處理后,經(jīng)處理器做MMS(Multimedia Message Service,多媒體短信服務)協(xié)議封裝,封裝后的數(shù)據(jù)經(jīng)由手機模塊發(fā)送到移動交換網(wǎng)絡,最終轉發(fā)到移動通信終端用戶。
系統(tǒng)整體設計
● 系統(tǒng)主處理器
系統(tǒng)選用Samsung公司的16/32位基于ARM7TDMI的微處理器,其最高主頻可以達到130MIPS,同時支持16位的Thumb指令集,使用Thumb指令集可以以16位的系統(tǒng)開銷得到32位的系統(tǒng)性能。
● 系統(tǒng)原理框圖
系統(tǒng)從邏輯上分成三部分:圖像捕獲和圖像壓縮模塊用于捕獲和壓縮圖像;MMS協(xié)議處理和主控制器模塊處理圖像數(shù)據(jù)和任務控制;手機模塊可發(fā)送彩信和接收短消息。系統(tǒng)原理如圖1所示。
圖1 系統(tǒng)原理框圖
● 系統(tǒng)工作原理步驟
(1)系統(tǒng)上電啟動后,手機模塊讀取UIM信息發(fā)送無線信號尋找CDMA網(wǎng)絡,進行用戶號碼賬戶和身份驗證后連接到網(wǎng)絡;然后系統(tǒng)發(fā)起任務讀取手機模塊中的信息,確定是否有網(wǎng)絡連接,若有網(wǎng)絡連接則系統(tǒng)發(fā)起任務,等待滿足觸發(fā)自動發(fā)送彩信的條件。
(2)設備軟件可以接受SMS(Short Message Service,短信服務)信息,并對之進行解析,根據(jù)解析的結果進行動作。當接收到用戶的觸發(fā)后,系統(tǒng)發(fā)起任務控制串口UART對圖像捕獲、壓縮模塊進行命令控制和拍照;拍照后發(fā)起任務對串口進行讀取,接收圖像捕獲、壓縮模塊回傳的圖像數(shù)據(jù)。
(3)當接收到回傳的圖像數(shù)據(jù)后系統(tǒng)發(fā)起任務對圖像數(shù)據(jù)進行MMS封裝,封裝格式完全符合MMS CLIENT端協(xié)議。
(4)系統(tǒng)發(fā)起任務使用WAP協(xié)議與WAP信息網(wǎng)關建立連接,建立連接后由系統(tǒng)把封裝的圖像數(shù)據(jù)通過標準串口UART傳送給手機模塊,最后系統(tǒng)發(fā)起任務使用AT指令控制手機模塊把彩色圖片發(fā)送到移動交換網(wǎng)絡,最終轉發(fā)到設定的目標移動通信終端用戶,從而完成了自動發(fā)送彩信的功能。
● 系統(tǒng)硬件設計
系統(tǒng)硬件設計技術要點包括以下部分。
(1)圖像壓縮處理模塊完成對數(shù)字圖像信息的壓縮,部分電路如圖2所示。SDRAM用來緩存圖像數(shù)據(jù),F(xiàn)LASH用來存儲壓縮處理器執(zhí)行程序映像。此外,圖像壓縮處理器模塊提供一個UART接口,以便將壓縮的圖像文件傳輸?shù)街骺靥幚砥髂K。
圖2 圖像壓縮處理電路
圖3 系統(tǒng)串口連接電路
(2)系統(tǒng)串口連接電路的部分電路如圖3所示。ARM7處理器提供標準的UART接口連接手機模塊,另外提供一個串行接口,與圖像壓縮處理器模塊串行接口相連。
系統(tǒng)軟件設計
● 操作系統(tǒng)和開發(fā)環(huán)境
VxWorks是目前世界上用戶數(shù)量最大的實時操作系統(tǒng),具有豐富的應用軟件支持、良好的技術服務、可伸縮性(VxWorks提供了超過1800個應用編程接口供用戶自行選擇使用)、可裁減性(指用戶可以根據(jù)自己的應用需求對VxWorks進行配置,產生具有各種不同功能的操作系統(tǒng)映像)和可靠的系統(tǒng)穩(wěn)定性。本系統(tǒng)主要采用其實時性、多任務、基于優(yōu)先級的搶占式調度、同優(yōu)先級輪轉調度和任務間的通信與同步機制、任務與中斷之間的通信機制。
VxWorks的開發(fā)環(huán)境是WindRiver(風河)公司提供的Tornado。Tornado采用主機-目標機開發(fā)方式,主機系統(tǒng)采用運行Windows2000/NT的工作站或PC,VxWorks則運行在ARM等目標處理器上。Tornado采用的主機-目標機連接方式為以太網(wǎng)、串行線等,主機與目標機之間的通信是通過運行各自處理器上的代理進程來完成的,使主機上的開發(fā)工具和目標機的操作系統(tǒng)可以完全脫離相互連接的方式。Tornado提供了友好的可視化開發(fā)界面、交叉編譯環(huán)境、源碼級調試工具、目標機命令解釋器和目標機狀態(tài)監(jiān)視器等多種應用工具,為應用軟件開發(fā)提供了一個高效而可靠的平臺。
● 軟件設計原理
軟件設計采用事件驅動機制;中斷事件激活ISR,ISR將事件排隊,并通過信號量的v 操作通知處理任務。處理任務進行p 操作,在沒有事件需要處理時就會阻塞,如果得到信號量則根據(jù)事件隊列的內容進行相應處理;事件處理任務為一永久循環(huán)。
軟件設計流程如圖4所示。
圖4 軟件流程圖
● 軟件關鍵設計的具體實現(xiàn)
(1)當系統(tǒng)啟動時等待一段時間,若超時則正常加載內核進行引導,若從串口UART接收到配置參數(shù)請求信息,則通過串口UART發(fā)送配置文件到PC端;PC端對配置參數(shù)進行處理后,再將參數(shù)通過串口發(fā)送到設備,設備再將參數(shù)以文件的形式進行存儲。
(2)初始化手機模塊。先利用手機模塊的硬復位線將手機進行硬復位,一直等到手機能響應AT指令,再將手機的信息通知功能打開,初始化短信處理到文本模式,激活CDMA,一直等待,手機信號要足夠強。
(3)當接收到滿足觸發(fā)條件的短信息后,發(fā)起中斷處理任務,將UIM卡中的短消息讀出到緩沖,將短消息刪除,對緩沖中短消息的有效性進行判斷,若為有效短消息則進行相應的處理,再將根據(jù)短消息配置后的參數(shù)保存。
(4)系統(tǒng)根據(jù)觸發(fā)參數(shù)發(fā)起任務進行拍照、封裝,調用建立PPP連接的函數(shù),先用AT指令ATD#777接通CDMA,然后初始化PPP連接,當PPP連接完成后設置好相應的IP參數(shù)。
(5)然后初始化WAP相關參數(shù),建立WAP連接,調用彩信發(fā)送函數(shù)將圖片發(fā)送到目的移動通信終端用戶,斷開PPP連接。
關鍵源代碼如下:
STATUS mmsmain(viod)
{
int ioFd, i;
pSysInfo = (sysInfo_t *) calloc(1, sizeof(sysInfo_t));
pSysInfo->tickRate = SYS_TICK_RATE;
pSysInfo->pQueue = msgQCreate( SYS_MSG_COUNT, sizeof(sysMsg_t), MSG_Q_FIFO );
pSysInfo->pCamQueue = msgQCreate( SYS_MSG_COUNT, sizeof(sysMsg_t), MSG_Q_FIFO );
pSysInfo->pPhotoQueue = msgQCreate(SYS_MSG_COUNT, sizeof(sysMsg_t), MSG_Q_FIFO);
pSysInfo->pModemQueue = msgQCreate(SYS_MSG_COUNT, sizeof(sysMsg_t), MSG_Q_FIFO);
DEBUG_PRINT(("Now begin read config information... "));
if (readFlash() == ERROR)
{
initDefaultInfo();
readFlash();
}
DEBUG_PRINT(("Now end read config information... "));
#ifndef CDMA_MODULE
while(wavecomLibInit() == ERROR);
for (i=0; i<2; i++)
{
if (startPPP() == OK)
break;
pppDelete(0);
taskDelay(30);
wavecomLibInit();
}
if (i>= 2)
{
DEBUG_PRINT(("startPPP ERROR! "));
return ERROR;
}
if (wapInit()!= OK)
{
DEBUG_PRINT(("wapInit ERROR! "));
return ERROR;
}
#else
cdmaLibInit();
#endif
sysRecvLibInit();
taskSpawn("tCamera", 80, 0, 50 * 1024, cameraTask, pSysInfo->pCamQueue, pSysInfo->pPhotoQueue,2,3,4,5,6,7,8,9);
photoSendLibInit();
taskDelay(2);
irLibInit();
if (sysInitInfo->motionDetction)
camQSend(SYS_MOTION_PIC, NULL, 0x0200 + sysInitInfo->camPixel);
commCallBackFun = commStrHandle;
pSysInfo->initialized = TRUE;
return OK;
}
主要實現(xiàn)的功能有:初始化系統(tǒng)參數(shù),初始化捕獲、圖像壓縮處理器模塊,初始化手機modem,建立PPP連接,發(fā)送連接包,斷開PPP連接并返回;建立檢查modem信息接收任務,建立系統(tǒng)主循環(huán)任務,在主循環(huán)任務中處理modem信息接收任務和中斷處理程序中發(fā)送到信息隊列中的內容。
這種實現(xiàn)自動發(fā)送彩信的系統(tǒng)可用于無線監(jiān)控和實現(xiàn)智能家居安全,系統(tǒng)收發(fā)機制使用CDMA網(wǎng)絡傳輸信息,目標移動通信終端用戶不論在何地都可以接收由系統(tǒng)發(fā)送的彩信,從而能夠實現(xiàn)遠程監(jiān)控等功能,為用戶提供更多的安全和便利。
參考文獻
1 VxWorks Programmer’s Guide 5.4. Wind
River Systems, Inc
2 VxWorks Reference Manual. Wind River
Systems, Inc
3 陳智育,溫彥軍,陳琪編著. VxWorks程序
開發(fā)實踐. 人民郵電出版社,2004.5
4 杜春雷. ARM體系結構與編程. 清華大
學出版社,2004.4
評論