<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于嵌入式系統(tǒng)的手機編程開發(fā)平臺

          基于嵌入式系統(tǒng)的手機編程開發(fā)平臺

          作者: 時間:2012-08-15 來源:網(wǎng)絡 收藏

          引 言

          本文引用地址:http://www.ex-cimer.com/article/148598.htm

          隨著移動通信技術(shù)的飛速發(fā)展,已經(jīng)從單一的電話通信設備轉(zhuǎn)變?yōu)樾畔⒕W(wǎng)絡終端,因此,近年來已經(jīng)成為一項重要的技術(shù)。是一個高新技術(shù)的集合體,包含了移動終端、、數(shù)字信號處理以及通信協(xié)議設置等多項技術(shù)。手機是集合了通信技術(shù)、技術(shù)、電子技術(shù)、軟件工程、操作等理論的軟硬件的教學與研究。在這個上開發(fā)相應的程序,可以掌握設計的流程與方法;可以根據(jù)使用者的需求,設計并實現(xiàn)手機的基本功能和擴展功能。

          1 手機開發(fā)平臺總體結(jié)構(gòu)

          作為專業(yè)技術(shù)課程,手機編程技術(shù)的教學內(nèi)容包括系統(tǒng)設置、操作系統(tǒng)使用以及應用軟件開發(fā),因此,手機編程平臺必須支持各項教學內(nèi)容。另外,作為教學儀器,不僅需要滿足全部工程編程測試等技術(shù)環(huán)節(jié)的學習要求,同時,還必須具有系統(tǒng)靈活、調(diào)試方便等特點。因此,手機編程開發(fā)平臺硬件的設計應滿足以下要求:支持移動公網(wǎng)通信功能,支持嵌入式設計基本功能,支持擴展操作功能,支持結(jié)構(gòu)調(diào)整,支持數(shù)字測試。

          根據(jù)上述要求,把手機編程系統(tǒng)設計劃分為硬件平臺和軟件平臺:硬件平臺采用了功能模塊化設計思想,有利于系統(tǒng)硬件的擴充與更改。模塊化的設計中,把手機的硬件部分劃分為通信單元模塊、嵌入式系統(tǒng)模塊、音頻輸入/輸出模塊和電源模塊。各模塊在結(jié)構(gòu)與功能上完全獨立,且采用統(tǒng)一的接口規(guī)范,使各模塊能簡單方便地連接到一起,構(gòu)成完整的手機編程硬件平臺。

          考慮到降低開發(fā)成本以及移植與編程難度等因素,軟件開發(fā)平臺用嵌入式Linux操作系統(tǒng)作為開發(fā)平臺,包括Bootloader的設計、Linux操作系統(tǒng)移植、相關(guān)的驅(qū)動程序編寫、GUI移植等。

          軟件和硬件平臺相結(jié)合,形成了硬件開放、源碼公開、滿足手機編程開發(fā)需要的系統(tǒng)。這個系統(tǒng)是嵌入式系統(tǒng)、GSM/CDMA、操作系統(tǒng)、GUI等技術(shù)的綜合技術(shù)體,構(gòu)建了一個完整的、開放的手機編程平臺。

          2 手機編程開發(fā)平臺硬件結(jié)構(gòu)

          手機編程平臺系統(tǒng)中,需要處理的數(shù)據(jù)有兩大類:通信數(shù)據(jù)以及應用程序的數(shù)據(jù)。這里采用了雙處理器的解決方案,如圖1所示。



          ①公網(wǎng)通信模塊。利用一個微處理器(專用單片機)系統(tǒng)構(gòu)成通信電路模塊,專門處理與GSM/CDMA通信相關(guān)的任務。

          ②應用程序處理模塊。利用嵌入式系統(tǒng)構(gòu)成本地任務處理模塊,用來運行操作系統(tǒng)及其他應用程序。

          2.1 公網(wǎng)通信模塊

          公網(wǎng)通信模塊如圖2所示,采用市場上可購買到的手機模塊實現(xiàn)。以GSM公網(wǎng)通信模塊為例,手機模塊中包括天線、內(nèi)部Flash、SDRAM、GSM基帶處理器、電源等。GSM基帶處理器是手機模塊的核心部件,其作用相當于一個協(xié)議處理器,用來處理外部系統(tǒng)通過串口發(fā)送過來的AT指令。天線部分用來實現(xiàn)射頻信號發(fā)射一接收、調(diào)制一解調(diào),以及射頻信號與基帶處理器之間的信號轉(zhuǎn)換。匹配電源為處理器及射頻部分提供所需的電源。



          2.2 應用程序處理模塊

          應用程序處理模塊用來實現(xiàn)手機控制和操作的全部功能。本應用處理器模塊以S3C2410構(gòu)成的ARM9嵌入式微處理器系統(tǒng)為核心。應用程序處理模塊包括嵌入式微處理器單元、音頻輸入輸出電路單元和電源單元,如圖3所示。



          圖3中,嵌入式微處理器系統(tǒng)模塊具有如下技術(shù)特點:CPU為Samsung S3C2410X,200 MHz主頻;2 MBNOR Flash,64 MB NAND Flash;64 MB SDRAM,由2片K4S561632組成,工作在32位模式下;3.5 in的TFT顯示屏,320×240像素;USB1.1標準Client接口,10M以太網(wǎng)網(wǎng)絡接口,20針JTAG調(diào)試接口。

          2.3 手機開發(fā)硬件系統(tǒng)

          在手機編程開發(fā)系統(tǒng)中,硬件系統(tǒng)平臺與PC機相連接,把PC機作為程序開發(fā)平臺,手機硬件系統(tǒng)平臺作為嵌入式目標系統(tǒng)。作為開發(fā)系統(tǒng),手機開發(fā)硬件平臺的安裝比較簡單,如圖4所示。將JTAG電纜插入嵌入式系統(tǒng)單元的JTAG接口,另一端連接PC機并口,就完成了手機編程系統(tǒng)的硬件平臺連接。根據(jù)開發(fā)的需要,可用串口線連接PC機串口與手機編程系統(tǒng)的硬件平臺串口。所開發(fā)的手機應用程序可以在手機硬件平臺系統(tǒng)的嵌入式系統(tǒng)上獨立運行,同時程序處理模塊還可以通過網(wǎng)絡接口直接用于網(wǎng)絡通信。



          3 手機編程實驗臺軟件平臺的構(gòu)建

          手機編程實驗臺軟件平臺包括Bootloader、嵌入式 Linuxkernel、GUI QT和用戶驅(qū)動程序4個部分,Bootloader如圖5所示。代碼(即啟動代碼)是處理器復位后進入操作系統(tǒng)之前執(zhí)行的一段代碼,主要是為運行操作系統(tǒng)提供基本的運行環(huán)境,如初始化CPU和堆棧、初始化存儲器系統(tǒng)等。



          軟件平臺的邏輯操作如圖6所示。



          4 手機編程開發(fā)平臺應用程序設計

          作為基本技術(shù)學習的內(nèi)容,該基本的手機編程應用程序主要是ARM的應用處理模塊與GSM模塊,來實現(xiàn)相互通信的無線數(shù)據(jù)傳輸,包括應用AT指令集的 GSM模塊數(shù)據(jù)讀寫子程序、鍵盤控制處理子程序、LCD顯示子程序等。此外,還提供了一個手機撥號及收發(fā)短信的程序。

          (1)主程序流程主程序的流程如圖7所示。首先對輸入?yún)?shù)進行檢查,完成對手機通信模塊的串口波特率的設置,同時對串口通信其他的一些屬性進行設置,從而保證手機通信模塊與GSM模塊的正確通信。初始化結(jié)束后,就可以建立鍵盤控制與讀GSM模塊子函數(shù),此過程需要嵌入式Linux操作系統(tǒng)庫函數(shù)的支持。最后,主函數(shù)處于等待外部中斷請求的狀態(tài)中。外部中斷請求分別來自鍵盤輸入和外部呼叫。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程



          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();