在arm微處理器硬件平臺上,應用windriver公司的tornado集成開發環境,實現基于vxworks的自動發送彩信的嵌入式應用系統。該系統使用現有cdma網絡,根據設定的參數發送彩信到特定的移動終端用戶。
隨著嵌入式應用的發展和16/32位risc處理器技術的成熟,以及支持各種高端處理器的嵌入式操作系統的涌現和完善,嵌入式無線設備可以利用cdma網絡實現許多新的應用。自動發送彩信的嵌入式系統就是這種新應用之一,在特定的條件下,系統自動發送彩信到指定的移動通信終端;該應用系統是由用戶根據要求設定觸發條件的自動發送彩信系統,當滿足觸發條件時,設備會自動控制捕獲、壓縮圖像部件拍攝外部圖像,經過模數轉換、數字壓縮等處理后,經處理器做mms(multimedia message service,多媒體短信服務)協議封裝,封裝后的數據經由手機模塊發送到移動交換網絡,最終轉發到移動通信終端用戶。
系統整體設計
● 系統主處理器
系統選用samsung公司的16/32位基于arm7tdmi的微處理器,其最高主頻可以達到130mips,同時支持16位的thumb指令集,使用thumb指令集可以以16位的系統開銷得到32位的系統性能。
● 系統原理框圖
系統從邏輯上分成三部分:圖像捕獲和圖像壓縮模塊用于捕獲和壓縮圖像;mms協議處理和主控制器模塊處理圖像數據和任務控制;手機模塊可發送彩信和接收短消息。系統原理如圖1所示。
圖1 系統原理框圖
● 系統工作原理步驟
?。?)系統上電啟動后,手機模塊讀取uim信息發送無線信號尋找cdma網絡,進行用戶號碼賬戶和身份驗證后連接到網絡;然后系統發起任務讀取手機模塊中的信息,確定是否有網絡連接,若有網絡連接則系統發起任務,等待滿足觸發自動發送彩信的條件。
(2)設備軟件可以接受sms(short message service,短信服務)信息,并對之進行解析,根據解析的結果進行動作。當接收到用戶的觸發后,系統發起任務控制串口uart對圖像捕獲、壓縮模塊進行命令控制和拍照;拍照后發起任務對串口進行讀取,接收圖像捕獲、壓縮模塊回傳的圖像數據。
?。?)當接收到回傳的圖像數據后系統發起任務對圖像數據進行mms封裝,封裝格式完全符合mms client端協議。
(4)系統發起任務使用wap協議與wap信息網關建立連接,建立連接后由系統把封裝的圖像數據通過標準串口uart傳送給手機模塊,最后系統發起任務使用at指令控制手機模塊把彩色圖片發送到移動交換網絡,最終轉發到設定的目標移動通信終端用戶,從而完成了自動發送彩信的功能。
● 系統硬件設計
系統硬件設計技術要點包括以下部分。
(1)圖像壓縮處理模塊完成對數字圖像信息的壓縮,部分電路如圖2所示。sdram用來緩存圖像數據,flash用來存儲壓縮處理器執行程序映像。此外,圖像壓縮處理器模塊提供一個uart接口,以便將壓縮的圖像文件傳輸到主控處理器模塊。
圖2 圖像壓縮處理電路
圖3 系統串口連接電路
?。?)系統串口連接電路的部分電路如圖3所示。arm7處理器提供標準的uart接口連接手機模塊,另外提供一個串行接口,與圖像壓縮處理器模塊串行接口相連。
系統軟件設計
● 操作系統和開發環境
vxworks是目前世界上用戶數量最大的實時操作系統,具有豐富的應用軟件支持、良好的技術服務、可伸縮性(vxworks提供了超過1800個應用編程接口供用戶自行選擇使用)、可裁減性(指用戶可以根據自己的應用需求對vxworks進行配置,產生具有各種不同功能的操作系統映像)和可靠的系統穩定性。本系統主要采用其實時性、多任務、基于優先級的搶占式調度、同優先級輪轉調度和任務間的通信與同步機制、任務與中斷之間的通信機制。
vxworks的開發環境是windriver(風河)公司提供的tornado。tornado采用主機-目標機開發方式,主機系統采用運行 windows2000/nt的工作站或pc,vxworks則運行在arm等目標處理器上。tornado采用的主機-目標機連接方式為以太網、串行線等,主機與目標機之間的通信是通過運行各自處理器上的代理進程來完成的,使主機上的開發工具和目標機的操作系統可以完全脫離相互連接的方式。 tornado提供了友好的可視化開發界面、交叉編譯環境、源碼級調試工具、目標機命令解釋器和目標機狀態監視器等多種應用工具,為應用軟件開發提供了一個高效而可靠的平臺。
● 軟件設計原理
軟件設計采用事件驅動機制;中斷事件激活isr,isr將事件排隊,并通過信號量的v 操作通知處理任務。處理任務進行p 操作,在沒有事件需要處理時就會阻塞,如果得到信號量則根據事件隊列的內容進行相應處理;事件處理任務為一永久循環。
軟件設計流程如圖4所示。
圖4 軟件流程圖
● 軟件關鍵設計的具體實現
?。?)當系統啟動時等待一段時間,若超時則正常加載內核進行引導,若從串口uart接收到配置參數請求信息,則通過串口uart發送配置文件到pc端;pc端對配置參數進行處理后,再將參數通過串口發送到設備,設備再將參數以文件的形式進行存儲。
?。?)初始化手機模塊。先利用手機模塊的硬復位線將手機進行硬復位,一直等到手機能響應at指令,再將手機的信息通知功能打開,初始化短信處理到文本模式,激活cdma,一直等待,手機信號要足夠強。
(3)當接收到滿足觸發條件的短信息后,發起中斷處理任務,將uim卡中的短消息讀出到緩沖,將短消息刪除,對緩沖中短消息的有效性進行判斷,若為有效短消息則進行相應的處理,再將根據短消息配置后的參數保存。
?。?)系統根據觸發參數發起任務進行拍照、封裝,調用建立ppp連接的函數,先用at指令atd#777接通cdma,然后初始化ppp連接,當ppp連接完成后設置好相應的ip參數。
(5)然后初始化wap相關參數,建立wap連接,調用彩信發送函數將圖片發送到目的移動通信終端用戶,斷開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;
}
主要實現的功能有:初始化系統參數,初始化捕獲、圖像壓縮處理器模塊,初始化手機modem,建立ppp連接,發送連接包,斷開ppp連接并返回;建立檢查modem信息接收任務,建立系統主循環任務,在主循環任務中處理modem信息接收任務和中斷處理程序中發送到信息隊列中的內容。
這種實現自動發送彩信的系統可用于無線監控和實現智能家居安全,系統收發機制使用cdma網絡傳輸信息,目標移動通信終端用戶不論在何地都可以接收由系統發送的彩信,從而能夠實現遠程監控等功能,為用戶提供更多的安全和便利。
評論