新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 探討VxWorks實現自動發送彩信嵌入式設計

        探討VxWorks實現自動發送彩信嵌入式設計

        作者: 時間:2012-11-05 來源:網絡 收藏

          (2)系統串口連接電路的部分電路如圖3所示。ARM7處理器提供標準的UART接口連接手機模塊,另外提供一個串行接口,與圖像壓縮處理器模塊串行接口相連。

        系統軟件設計

        ● 操作系統和開發環境

          是目前世界上用戶數量最大的實時操作系統,具有豐富的應用軟件支持、良好的技術服務、可伸縮性(提供了超過1800個應用編程接口供用戶自行選擇使用)、可裁減性(指用戶可以根據自己的應用需求對進行配置,產生具有各種不同功能的操作系統映像)和可靠的系統穩定性。本系統主要采用其實時性、多任務、基于優先級的搶占式調度、同優先級輪轉調度和任務間的通信與同步機制、任務與中斷之間的通信機制。

          VxWorks的開發環境是WindRiver(風河)公司提供的Tornado。Tornado采用主機-目標機開發方式,主機系統采用運行Windows2000/NT的工作站或PC,VxWorks則運行在ARM等目標處理器上。Tornado采用的主機-目標機連接方式為以太網、串行線等,主機與目標機之間的通信是通過運行各自處理器上的代理進程來完成的,使主機上的開發工具和目標機的操作系統可以完全脫離相互連接的方式。Tornado提供了友好的可視化開發界面、交叉編譯環境、源碼級調試工具、目標機命令解釋器和目標機狀態監視器等多種應用工具,為應用軟件開發提供了一個高效而可靠的平臺。

        ● 軟件設計原理

          軟件設計采用事件驅動機制;中斷事件激活ISR,ISR將事件排隊,并通過信號量的v 操作通知處理任務。處理任務進行p 操作,在沒有事件需要 處理時就會阻塞,如果得到信號量則根據事件隊列的內容進行相應處理;事件處理任務為一永久循環。

        軟件設計流程如圖4所示。

        軟件設計流程圖

        圖4 軟件流程圖

        ● 軟件關鍵設計的具體實現

          (1)當系統啟動時等待一段時間,若超時則正常加載內核進行引導,若從串口UART接收到配置參數請求信息,則通過串口UART發送配置文件到PC端;PC端對配置參數進行處理后,再將參數通過串口發送到設備,設備再將參數以文件的形式進行存儲。

          (2)初始化手機模塊。先利用手機模塊的硬復位線將手機進行硬復位,一直等到手機能響應AT指令,再將手機的信息通知功能打開,初始化短信處理到文本模式,激活CDMA,一直等待,手機信號要足夠強。

        3)當接收到滿足觸發條件的短信息后,發起中斷處理任務,將UIM卡中的短消息讀出到緩沖,將短消息刪除,對緩沖中短消息的有效性進行判斷,若為有效短消息則進行相應的處理,再將根據短消息配置后的參數保存。

          (4)系統根據觸發參數發起任務進行拍照、封裝,調用建立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();

          }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 柞水县| 石屏县| 高唐县| 县级市| 滦南县| 绥宁县| 青岛市| 祁连县| 三明市| 江陵县| 云龙县| 阿克陶县| 彭泽县| 嘉鱼县| 伊川县| 鄱阳县| 奉化市| 和政县| 家居| 临西县| 科技| 江安县| 株洲县| 延寿县| 平乡县| 名山县| 克山县| 瓮安县| 伊春市| 连南| 珠海市| 汾阳市| 苍溪县| 松原市| 宾阳县| 静海县| 文成县| 弋阳县| 邵东县| 富民县| 潼关县|