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