

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 本文以MTK手機開發(fā)平臺為基礎(chǔ),簡述了MTK平臺中使用的Nucleus嵌入式操作系統(tǒng),分析了MTK平臺的軟件架構(gòu),詳細(xì)說明了MTK中的任務(wù)處理和消息管理機制。</p><p> 基于以上理論基礎(chǔ),對通話管理模塊軟件進行分析,詳細(xì)分析了其中的AT模塊,研究了MTK平臺中AT命令的類型和格式,分析了通話管
2、理模塊中AT命令的收發(fā)格式。根據(jù)對通話管理模塊軟件的分析和AT命令收發(fā)格式的研究,設(shè)計出底層AT命令的發(fā)送和響應(yīng)過程,完成了通話管理軟件中AT模塊的設(shè)計。然后根據(jù)實際需求,在原方案的基礎(chǔ)上,針對AT模塊設(shè)計的缺陷提出了改進方案。利用擴展AT命令的實現(xiàn)原理,完善了對AT模塊軟件的設(shè)計,并最終實現(xiàn)了通話管理的主要功能。最后,設(shè)計測試用例,對完成的功能進行測試和驗證。</p><p> 關(guān)鍵詞: MTK 手機
3、 通話管理 AT命令 </p><p><b> Abstact</b></p><p> This thesis is based on the MTK mobile phones development platform. It briefly describes Nucleus operating system used in MTK platfo
4、rm, analyzes the framework of MTK platform, and focuses on the task processing and the mechanism of message management in MTK.</p><p> Based on the above theory, this thesis analyzes the call management sof
5、tware and it’s AT module, studies the types and formats of AT commands, and expounds the sending and receiving formats of AT commands used in the call management. According to the analysis of call management software and
6、 the study of AT commands’ sending and receiving formats, this paper schemes out the sending and responding processes of AT commands and completes the design of AT module in the call management. According to t</p>
7、<p> Keyword: MTK Mobile Phone Call Management AT command</p><p><b> 目錄</b></p><p><b> 第一章 緒論1</b></p><p> 1.1 課題背景1</p><p>
8、; 1.2 課題研究的意義2</p><p> 1.3 論文的章節(jié)安排3</p><p> 第二章 MTK手機開發(fā)平臺的操作系統(tǒng)5</p><p> 2.1 常用的手機操作系統(tǒng)5</p><p> 2.2 MTK平臺的Nucleus操作系統(tǒng)6</p><p> 2.2.1 Nucleu
9、s的特點6</p><p> 2.2.2 Nucleus支持的CPU類型7</p><p> 2.2.3 Nucleus源代碼帶來的優(yōu)勢8</p><p> 第三章 MTK手機開發(fā)平臺及其機制研究9</p><p> 3.1 平臺軟件架構(gòu)9</p><p> 3.2 應(yīng)用模塊的分析10&
10、lt;/p><p> 3.2.1 應(yīng)用模塊的組成10</p><p> 3.2.2 屏幕歷史管理機制10</p><p> 3.3 用戶界面設(shè)計的分析12</p><p> 3.4 本地數(shù)據(jù)模塊14</p><p> 3.5 輸入事件處理機制15</p><p> 3
11、.5.1 消息機制15</p><p> 3.5.2 事件處理機制17</p><p> 3.6 任務(wù)18</p><p> 3.7 本章小結(jié)19</p><p> 第四章 通話管理模塊軟件的分析21</p><p> 4.1 通話管理軟件的分析21</p><p&
12、gt; 4.2 AT模塊的分析23</p><p> 4.3 AT命令的分析24</p><p> 4.3.1 AT命令概述24</p><p> 4.3.2 AT命令的類型和格式25</p><p> 4.3.3 AT命令的分析26</p><p> 4.4 本章小結(jié)30</
13、p><p> 第五章 通話管理模塊軟件的設(shè)計與實現(xiàn)31</p><p> 5.1 通話管理中AT模塊的設(shè)計31</p><p> 5.1.1 MMI功能接口層的設(shè)計31</p><p> 5.1.2 AT任務(wù)功能接口層的設(shè)計31</p><p> 5.1.3 AT任務(wù)處理層的設(shè)計32</
14、p><p> 5.1.4 AT模塊設(shè)計的幾個關(guān)鍵點36</p><p> 5.2 AT模塊設(shè)計的改進方案39</p><p> 5.2.1 改進方案的必要性39</p><p> 5.2.2 擴展AT命令的設(shè)計原理39</p><p> 5.2.3 改進方案的軟件設(shè)計40</p>
15、<p> 5.2.4 改進方案AT任務(wù)處理層的設(shè)計42</p><p> 5.3 通話管理主要功能的實現(xiàn)45</p><p> 5.3.1 單通電話撥打—接通流程46</p><p> 5.3.2 來電—接通—掛斷流程47</p><p> 5.3.3 單通電話的恢復(fù)—暫停48</p>
16、<p> 5.3.4 兩通電話的接通48</p><p> 5.3.5 兩通電話的切換49</p><p> 5.3.6 兩通電話的掛斷50</p><p> 5.4 本章小結(jié)50</p><p> 第六章 通話管理模塊軟件的測試51</p><p> 6.1 軟件測試的方法
17、和過程51</p><p> 6.2 通話管理軟件測試用例的設(shè)計52</p><p> 6.3 通話管理軟件測試平臺的搭建53</p><p> 6.3.1 AT命令測試平臺的搭建53</p><p> 6.3.2 通話功能測試平臺的搭建55</p><p> 6.4 通話管理軟件的測試
18、56</p><p> 6.4.1 AT命令測試結(jié)果的分析56</p><p> 6.4.2 通話功能測試結(jié)果的分析58</p><p><b> 結(jié)束語59</b></p><p><b> 致謝61</b></p><p><b> 參考文
19、獻(xiàn)63</b></p><p><b> 第一章 緒論</b></p><p><b> 1.1 課題背景</b></p><p> 從1876年貝爾發(fā)明電話以來,電話通訊服務(wù)經(jīng)歷了長達(dá)一個多世紀(jì)的發(fā)展,如今已走進千家萬戶,成為國家經(jīng)濟建設(shè)、社會生活和人們交流信息所不可缺少的重要工具。隨著人們生活水
20、平的提高,手機已經(jīng)逐漸從奢侈品發(fā)展到了現(xiàn)在十分普及的消費電子產(chǎn)品?;仡櫴謾C發(fā)展的過程,無論從造型還是功能都有了翻天覆地的變化。手機的發(fā)展也是經(jīng)過了一次次的變革,才形成了如今多樣化的造型,多樣化的功能,而不是單一的通信工具。隨著科技的發(fā)展與進步,電話技術(shù)和業(yè)務(wù)發(fā)生了巨大變化,通信的地點由固定方式轉(zhuǎn)向移動方式。移動通訊的迅猛發(fā)展,使現(xiàn)代生活節(jié)奏越來越快,移動通訊產(chǎn)品的更新?lián)Q代和市場爭奪戰(zhàn)也愈演愈烈,眾多國產(chǎn)手機品牌群雄逐鹿,移動運營商也做好
21、了一切準(zhǔn)備迎接3G時代的到來。未來的手機將偏重于安全和數(shù)據(jù)通訊。一方面加強個人隱私的保護,另一方面加強數(shù)據(jù)業(yè)務(wù)的研發(fā),更多的多媒體功能被引入進來,手機將會具有更加強勁的運算能力,成為個人的信息終端,而不是僅僅具有通話和文字消息的功能。手機會更加智能化、微型化、安全化、多功能化。</p><p> 現(xiàn)在,手機開發(fā)模式包括采用芯片供應(yīng)商提供的參考設(shè)計和完全獨立自主的研發(fā)兩種。芯片供應(yīng)商參考設(shè)計就是芯片供應(yīng)商除了負(fù)責(zé)
22、芯片組的設(shè)計外,還要對芯片組的核心硬件電路、底層操作系統(tǒng)、第二、三層協(xié)議棧進行設(shè)計。對于那些較小的終端廠商而言,其實力不足以承擔(dān)獨立開發(fā)以上設(shè)計的財力及人力,因而只需要購進某家芯片供應(yīng)商的芯片及其參考設(shè)計,再在此基礎(chǔ)上進行驅(qū)動程序、功能實現(xiàn)、應(yīng)用程序、人機界面等的開發(fā)工作,來完成一款手機的設(shè)計與生產(chǎn)。而完全自主設(shè)計的終端廠家則能自由組合不同廠商的芯片,完全掌握底層操作系統(tǒng)和協(xié)議棧,可以根據(jù)自己的需求設(shè)計出更個性化的手機來。現(xiàn)階段國內(nèi)仍以
23、采用參考設(shè)計的方式為主。[17] [20]</p><p> MTK是臺灣聯(lián)發(fā)科技多媒體芯片提供商的簡稱。MTK公司是國內(nèi)的專業(yè)手機平臺提供商,該公司成立至今發(fā)展迅猛,如今,MTK已成為全球光存儲IC芯片的領(lǐng)航者。該公司的產(chǎn)品因為集成較多的多媒體功能和較低的價格在大陸手機公司和手機設(shè)計公司得到廣泛的應(yīng)用。MTK手機開發(fā)平臺就是目前國內(nèi)向客戶提供整套手機開發(fā)方案支持的平臺,并以其完善的服務(wù),全面細(xì)致、穩(wěn)定的方案,
24、迅速占領(lǐng)著國內(nèi)市場。該平臺的兩個最大的優(yōu)點是:產(chǎn)品研發(fā)周期短,方案成本低。隨著MTK芯片能力和系統(tǒng)的穩(wěn)定性不斷提高,手機的計算、存儲能力大幅提升,功能持續(xù)拓展。該平臺在市場上的占有率逐年遞增,基于MTK手機平臺的開發(fā)也逐漸受到業(yè)界的普遍關(guān)注。[7]</p><p> 國外一些經(jīng)濟和技術(shù)實力很強的公司,像摩托羅拉、諾基亞、索愛、三星等都有自己的開發(fā)平臺[26],他們在各自的平臺上已經(jīng)開發(fā)出了不少雙卡雙待機,三星在
25、雙模手機領(lǐng)域一直處于領(lǐng)先地位,并且只走高端路線,基本壟斷了高端商務(wù)型雙模手機市場。三星最新推出一款雙GSM雙待手機SGH-D888,這款三星D888擁有雙卡雙待功能,還有著不俗的外觀設(shè)計以及三星強大的品牌號召力,尤其是它對通話管理的創(chuàng)新設(shè)計,使得D888成為高端用戶所關(guān)注的焦點。</p><p> 目前國內(nèi)的手機開發(fā)商,開始致力于開發(fā)雙卡雙待手機。在MTK平臺上做底層開發(fā)主要是AT命令的解析和串口通信的實現(xiàn),目
26、前很多小公司都是基于MTK平臺開發(fā)手機,但是對通話的管理功能也非常類似,突破很小,這主要是由于MTK軟件很多都是封閉的,無法了解他們的深層機制。而時間和精力也不允許這些公司開發(fā)自己的研發(fā)平臺,只能最大限度的在所用的平臺上開發(fā)出最優(yōu)的手機軟件。所以本文研究的基于MTK平臺通話管理軟件的設(shè)計與實現(xiàn)具有很大的實用性和創(chuàng)新性。</p><p> 1.2 課題研究的意義</p><p> 伴隨
27、著人們生活品質(zhì)的不斷提高,許多人因為工作和生活的原因需要同時使用兩部不同的手機,擁有兩個手機號碼的用戶越來越多,人們對雙卡雙待手機的需求也越來越迫切。市場上出現(xiàn)雙模雙卡雙待手機、GSM網(wǎng)雙卡雙待手機、雙卡單待手機等多種不同的產(chǎn)品,以滿足消費者多種不同的需求。隨著移動網(wǎng)絡(luò)單向收費業(yè)務(wù)的逐步開通、資費標(biāo)準(zhǔn)不斷下調(diào),雙卡雙待手機有很好的市場前景。因此,雙卡雙待手機功能的研發(fā)不僅為用戶的使用帶來了方便,也將給生產(chǎn)廠家?guī)砗艽蟮慕?jīng)濟效益。[22]
28、</p><p> 通常所說的手機大部分是指單SIM卡手機,雙卡雙待手機指的是在一部手機使用一個界面管理兩張SIM卡,可以同時處于移動網(wǎng)絡(luò)中待機狀態(tài)(雙卡雙待機)。這兩張SIM卡可以都是GSM網(wǎng)絡(luò)的SIM卡,也可以分別是一張GSM網(wǎng)絡(luò)和CDMA網(wǎng)絡(luò)的SIM卡(稱為雙模雙待機)。兩個號碼可以同時待機,同時在線。電話、短信、通訊錄等功能都可以分別正常使用,彼此不受影響。這實際上是在同一部手機中同時運行兩套系統(tǒng)、兩套
29、基帶,兩套射頻同時協(xié)調(diào)工作,一個系統(tǒng)負(fù)責(zé)一個號碼的通信控制,使得兩張卡都能相對獨立的同時工作。其中,MMI界面是由其中的主處理器負(fù)責(zé)。由于具備一機多卡、多網(wǎng)在線等功能,雙卡雙待手機上市之后迅速贏得了商務(wù)人士的青睞,并被業(yè)界認(rèn)為是2G向3G手機進行平滑過渡的首選。[5]</p><p> 本文依據(jù)本人在實習(xí)公司從事的PW888項目,以本人負(fù)責(zé)的通話管理模塊為基礎(chǔ),詳細(xì)闡述了在MTK手機開發(fā)平臺上,通過UART串口
30、實現(xiàn)兩卡間通信,利用AT命令完成對SIM2卡的操作和管理,最終完成了對雙卡雙待手機中通話管理模塊的分析、設(shè)計和實現(xiàn)。從開發(fā)者的角度來看,新功能手機的開發(fā)是技術(shù)能力的一個挑戰(zhàn);對生產(chǎn)廠家來說,新功能吸引了眾多消費者,增強了他們的市場競爭力;對用戶來說,新功能使人們的生活舒適,工作方便快捷。</p><p> 從技術(shù)的角度講,項目的實現(xiàn)具有很好的移植性,便于代碼的二次開發(fā)。不僅在理論上是對嵌入式移動終端平臺的深入挖
31、掘,更是在實踐上解決了不同平臺間實現(xiàn)相同功能的技術(shù)難題。并根據(jù)需求,提出了最優(yōu)化的設(shè)計方案,驗證了優(yōu)化方案的可行性。本文對雙卡雙待手機技術(shù)的研究具有很好的參考價值。</p><p> 從市場效益的角度來說,不僅給公司帶來了可觀的經(jīng)濟價值,同時又為消費者購買移動終端產(chǎn)品提供了一個更有競爭力的選擇。</p><p> 1.3 論文的章節(jié)安排</p><p> 本
32、文在研究MTK平臺開發(fā)技術(shù)的基礎(chǔ)上,設(shè)計了一套如何在其上實現(xiàn)雙卡雙待功能的解決方案。主要包括以下幾個部分:</p><p> 第一章介紹課題背景、研究意義和論文的章節(jié)安排。</p><p> 第二章簡述MTK手機開發(fā)平臺中Nucleus嵌入式實時操作系統(tǒng)。</p><p> 第三章主要研究MTK手機軟件開發(fā)平臺的架構(gòu),詳細(xì)分析了消息隊列、任務(wù)、屏幕歷史管理機制
33、等。</p><p> 第四章對通話管理模塊軟件進行分析,重點分析了其中的AT模塊和通話管理中用到的AT命令。</p><p> 第五章對AT模塊進行設(shè)計,根據(jù)實際需求,對AT模塊的設(shè)計方案提出改進,并完成改進方案的AT模塊設(shè)計,最后用擴展的AT命令實現(xiàn)了通話管理的主要功能。</p><p> 第六章根據(jù)軟件測試的方法和過程,設(shè)計通話管理軟件的測試用例,搭建測
34、試平臺,測試軟件功能,并對測試結(jié)果進行分析。</p><p> 結(jié)束語中提出本文所解決的實際問題,以及存在的問題,提出了下一步的研究和開發(fā)任務(wù)。</p><p> 第二章 MTK手機開發(fā)平臺的操作系統(tǒng)</p><p> 2.1 常用的手機操作系統(tǒng)</p><p> 手機開發(fā)是典型的嵌入式實時操作系統(tǒng)的應(yīng)用。手機操作系統(tǒng)是承載手機信
35、息服務(wù)的平臺,地位十分重要。手機客戶端軟件開發(fā)最大的困難就是平臺不統(tǒng)一,手機開發(fā)平臺太多。目前應(yīng)用于手機中的一種是像Symbian、Windows Mobile、Palm、linux四個操作系統(tǒng)屬于智能手機操作系統(tǒng),這種操作系統(tǒng)不僅提供操作系統(tǒng)的核心功能,還提供諸如多線程調(diào)度,高級API等其它附加功能。支持智能手機操作系統(tǒng)的手機稱為智能手機,也被稱為結(jié)合手機與網(wǎng)絡(luò)化的PDA。[9]</p><p><b&g
36、t; Symbian</b></p><p> 在智能手機操作系統(tǒng)中,Symbian搶得了先機,索愛、諾基亞、摩托羅拉以及松下等公司基本上都采用了Symbian為主的操作系統(tǒng)。Symbian目前設(shè)計合理,穩(wěn)定,而且有眾多廠商支持,前景看好?,F(xiàn)在它的網(wǎng)絡(luò)應(yīng)用非常強,9鍵的單手操作非常舒服,缺點就是慢。Symbian很像是Windows和Linux的結(jié)合體,有著良好的界面,采用內(nèi)核與界面分離技術(shù),對硬
37、件的要求比較低,支持C++,VB和J2ME,兼容性較差。</p><p><b> Linux</b></p><p> Linux操作系統(tǒng)包含了Unix的全部功能和特性,它具有開放性、多用戶、多任務(wù)、良好的用戶界面、良好的可移植性、可靠的系統(tǒng)安全,除此之外,Linux還提供豐富的網(wǎng)絡(luò)功能,完善的內(nèi)置網(wǎng)絡(luò)是Linux的一大特點。Linux在通信和網(wǎng)絡(luò)功能方面優(yōu)于其
38、他操作系統(tǒng)。其他操作系統(tǒng)不包含如此緊密地和內(nèi)核結(jié)合在一起的連接網(wǎng)絡(luò)的能力,也沒有內(nèi)置這些聯(lián)網(wǎng)特性的靈活性。而Linux為用戶提供了完善的、強大的網(wǎng)絡(luò)功能。支持Internet是其網(wǎng)絡(luò)功能之一。Linux免費提供了大量支持Internet的軟件,Internet是在Unix領(lǐng)域中建立并繁榮起來的,在這方面使用Linux是相當(dāng)方便的,用戶能用Linux與世界上的其他人通過Internet網(wǎng)絡(luò)進行通信。 文件傳輸是其網(wǎng)絡(luò)功能之二。用戶能通過一
39、些Linux命令完成內(nèi)部信息或文件的傳輸。 遠(yuǎn)程訪問是其網(wǎng)絡(luò)功能之三。Linux不僅允許進行文件和程序的傳輸,它還為系統(tǒng)管理員和技術(shù)人員提供了訪問其他系統(tǒng)的窗口。通過這種遠(yuǎn)程訪問的功能,一位技術(shù)人員能夠有效地為多個系統(tǒng)服務(wù),即使那些系統(tǒng)位于相距很遠(yuǎn)的地方。</p><p> Windows CE</p><p> Windows CE是針對有限資源的平臺而設(shè)計的多線程、完整優(yōu)先權(quán)、多任
40、務(wù)的操作系統(tǒng),但它不是一個硬實時操作系統(tǒng)。高度模塊化是Windows CE的一個鮮為人知的特性,這一特性有利于它對從掌上電腦到專用的工業(yè)控制器的用戶電子設(shè)備進行定制。Windows CE支持Win32 API子集、多種用戶界面硬件、多種串行和網(wǎng)絡(luò)通信技術(shù)。Windows CE嵌入式操作系統(tǒng)最大的特點是能提供與PC機類似的圖形界面和主要的應(yīng)用程序。Windows CE的設(shè)計目標(biāo)是:模塊化及可伸縮性、實時性能好,通信能力強大,支持多種CPU
41、。它的設(shè)計可以滿足多種設(shè)備的需要,這些設(shè)備包括了工業(yè)控制器、通信集線器以及銷售終端之類的企業(yè)設(shè)備,還有像照相機、電話和家用娛樂器材之類的消費產(chǎn)品。一個典型的基于Windows CE的嵌入系統(tǒng)通常為某個特定用途而設(shè)計,并在不聯(lián)機的情況下工作。它要求所使用的操作系統(tǒng)體積較小,內(nèi)建有對中斷的響應(yīng)功能。</p><p><b> Palm</b></p><p> Pal
42、m是3Com公司的產(chǎn)品,其操作系統(tǒng)為Palm OS。Palm OS是一種32位的嵌入式操作系統(tǒng)。Palm提供了串行通信接口和紅外線傳輸接口,利用它可以方便的與其他外部設(shè)備通信、傳輸數(shù)據(jù);擁有開放的OS應(yīng)用程序接口,開發(fā)商可以根據(jù)需要自行開發(fā)所需的應(yīng)用程序。Palm OS是一套具有技術(shù)強、開放性的系統(tǒng),現(xiàn)在有大約數(shù)千種專為Palm OS編寫的應(yīng)用程序,從程序內(nèi)容上看,小到個人管理、游戲,大到行業(yè)解決方案,Palm OS無所不包。在豐富的軟
43、件支持下,基于Palm OS的掌上電腦功能得以不斷擴展。Palm OS是一套專門為掌上電腦開發(fā)的OS。在編寫程序時,Palm OS充分考慮了掌上電腦內(nèi)存相對較小的情況,因此它只占用非常小的內(nèi)存。由于基于 Palm OS編寫的應(yīng)用程序占用的空間也非常小,所以,基于Palm OS的掌上電腦可以運行眾多應(yīng)用程序。這種系統(tǒng)對硬件的要求很低,因此在價格上能很好的控制,耗電量也很小。顯著特點是速度遠(yuǎn)遠(yuǎn)快于其他系統(tǒng),操作舒服,典型代表是三星SGH-i
44、500Treo 600。</p><p> 2.2 MTK平臺的Nucleus操作系統(tǒng)</p><p> MTK采用Nucleus實時操作系統(tǒng),Nucleus是美國源代碼操作系統(tǒng)商ATI公司推出的嵌入式操作系統(tǒng)。它是一個搶先式多任務(wù)操作系統(tǒng)內(nèi)核,Kernel Abstraction層為MTK軟件和Nucleus操作系統(tǒng)的接口。它為任務(wù)提供許多系統(tǒng)服務(wù)函數(shù),比如計時器、隊列、內(nèi)存管理、
45、事件等等。</p><p> 2.2.1 Nucleus的特點</p><p> Nucleus是為實時嵌入式應(yīng)用而設(shè)計的一個搶先式多任務(wù)操作系統(tǒng)內(nèi)核,其95%的代碼是用ANSIC寫成的,因此,非常便于移植并能夠支持大多數(shù)類型的處理器。從實現(xiàn)角度來看,Nucleus是一組C函數(shù)庫,應(yīng)用程序代碼與核心函數(shù)庫連接在一起,生成一個目標(biāo)代碼,下載到目標(biāo)板的RAM中或直接燒錄到目標(biāo)板的ROM中
46、執(zhí)行。在典型的目標(biāo)環(huán)境中,Nucleus核心代碼區(qū)一般不超過20K字節(jié)大小。Nucleus采用了軟件組件的方法。每個組件具有單一而明確的目的,通常由幾個C及匯編語言模塊構(gòu)成,提供清晰的外部接口,對組件的引用就是通過這些接口完成的。除了少數(shù)一些特殊情況外,不允許從外部對組件內(nèi)的全局進行訪問。由于采用了軟件組件的方法,Nucleus各個組件非常易于替換和復(fù)用。Nucleus的組件包括任務(wù)控制、內(nèi)存管理、任務(wù)間通信、任務(wù)的同步與互斥、中斷管理
47、、定時器及I/O驅(qū)動等。[12]</p><p> Nucleus具有如下特點:</p><p> 1、提供源代碼。Nucleus提供注釋嚴(yán)格的C源代碼給每一個用戶。這樣,用戶能夠深入地了解底層內(nèi)核的運作方式,并可根據(jù)自己的特殊要求刪減或改動系統(tǒng)軟件,這對軟件的規(guī)范化管理及系統(tǒng)軟件的測試都有極大的幫助。另外,由于提供了RTOS的源代碼,用戶不但可以進行RTOS的學(xué)習(xí)和研究,而且產(chǎn)品在量
48、產(chǎn)時也不必支付License,可以省去大量的費用。對于軍方來說,由于提供了源代碼,用戶完全可以控制內(nèi)核而不必?fù)?dān)心操作系統(tǒng)中可能會存在異常任務(wù)導(dǎo)致系統(tǒng)崩潰。</p><p> 2、性價比高。Nucleus由于采用了先進的微內(nèi)核(Micro-kernel)技術(shù),因而在優(yōu)先級安排、任務(wù)調(diào)度、任務(wù)切換等各個方面都有相當(dāng)大的優(yōu)勢。另外,對C++語言的全面支持使得Nucleus的Kernel成為名副其實的面向?qū)ο蟮膶崟r操作
49、系統(tǒng)內(nèi)核,但其價格卻比較合理,所以容易被廣大的研發(fā)單位接受。</p><p> 3、易學(xué)易用。Nucleus能夠結(jié)合Paradigm,SDS以及ATI自己的多任務(wù)調(diào)試器組成功能強大的集成開發(fā)環(huán)境,配合相應(yīng)的編譯器和動態(tài)聯(lián)結(jié)庫以及各類底層驅(qū)動軟件,用戶可以輕松地進行RTOS的開發(fā)和調(diào)試。另外,由于這些集成開發(fā)環(huán)境(IDE)為所有的開發(fā)工程師所熟悉,因而,容易學(xué)習(xí)和使用。[13]</p><p&
50、gt; 4、功能模塊豐富。Nucleus除提供功能強大的內(nèi)核操作系統(tǒng)外,還提供種類豐富的功能模塊。例如用于通訊系統(tǒng)的局域和廣域網(wǎng)絡(luò)模塊,支持圖形應(yīng)用的實時化Windows模塊,支持Internet網(wǎng)的WEB產(chǎn)品模塊,工控機實時BIOS模塊,圖形化用戶接口以及應(yīng)用軟件性能分析模塊等。用戶可以根據(jù)自己的應(yīng)用來選擇不同的應(yīng)用模塊。</p><p> 2.2.2 Nucleus支持的CPU類型</p>
51、<p> Nucleus的RTOS內(nèi)核可支持如下類型的CPU:x86,68xxx,68HCxx,NECV25,ColdFire,29K,i960,MIPS,SPARClite,TIDSP,ARM6/7,StrongARM,H8/300H,SH1/2/3,PowerPC,V8xx,Tricore,Mcore,PanasonicMN10200,Tricore,Mcore等??梢哉fNUCLEUS是支持CPU類型最豐富的實時多任務(wù)
52、操作系統(tǒng)。</p><p> 針對各種嵌入式應(yīng)用,Nucleus還提供相應(yīng)的網(wǎng)絡(luò)協(xié)議(如TCP/IP,SNMP等),以滿足用戶對通訊系統(tǒng)的開發(fā)要求。另外,可重入的文件系統(tǒng)、可重入的C函數(shù)庫以及圖形化界面等也給開發(fā)者提供了方便。針對不同的CPU類型,Nucleus還提供編譯器、動態(tài)鏈接庫、多任務(wù)調(diào)試器等相應(yīng)的工具來配置用戶的開發(fā)環(huán)境。</p><p> 2.2.3 Nucleus源代碼
53、帶來的優(yōu)勢</p><p> 眾所周知,Nucleus實時多任務(wù)操作系統(tǒng)提供給用戶源代碼。這除商務(wù)上給用戶帶來巨大益處(免交Royalty)外,還在技術(shù)方面給用戶極大的方便,即無需編寫和調(diào)試BSP,從而達(dá)到易學(xué)易用的目的,加速產(chǎn)品上市。</p><p> Nucleus的調(diào)試是基于全新的動態(tài)鏈接庫(DLL),用戶只須通過監(jiān)控程序(Monitor)或者BDM調(diào)試口(或者JTAG調(diào)試口)建
54、立目標(biāo)系統(tǒng)(Target)與主機(Host)之間的通訊,并給主機上的Debugger初始化特性中加入Nucleus的動態(tài)鏈接庫。這時,調(diào)試器就能夠自動地去識別運行在目標(biāo)系統(tǒng)中的Nucleus內(nèi)核和各個應(yīng)用任務(wù),從而完成任務(wù)級調(diào)試。</p><p> 因此,Nucleus的用戶只需要將精力放在基于Nucleus的編程工作中。對于一個新手,只需經(jīng)過一天到兩天的學(xué)習(xí)和培訓(xùn),就可以投入到應(yīng)用程序編制工作中去,無需花大量
55、的時間去研究CPU,特定的硬件等。另外,由于有了源程序,用戶在調(diào)試程序時可以清楚地通過STEPINTO命令,追蹤到RTOS的內(nèi)層中去,觀看和學(xué)習(xí)Kernel對任務(wù)的管理和調(diào)度機制。對于有志研究RTOS深層技術(shù)的工程師來說極為方便。</p><p> 對于Motorola68K和PowerPC,用戶可以利用GreenHill公司的Mutil調(diào)試器或TRACE-ICD來完成Nucleus的調(diào)試;對于ARM和Stro
56、ngARM,用戶可以利用ARM公司的SDT251調(diào)試器或TRACE-ICD來完成Nucleus的調(diào)試;對于Intelx86實模式,用戶可以利用Paradigm公司的調(diào)試器及其DLL來進行任務(wù)級調(diào)試;對于Intelx86保護模式則可以利用SSI公司Softprobe調(diào)試器和SSIDLL來調(diào)試;對于i960,SH3/4,ARM6/7,MIPS等芯片,則可以使用ATI公司自己的UDB調(diào)試器來進行任務(wù)的調(diào)試。</p><p&
57、gt; 總之,動態(tài)鏈接庫是在RTOS工具中新出現(xiàn)的應(yīng)用趨勢,通過這種方式,用戶可以免去BSP帶來的麻煩,靈活方便地進行開發(fā)和調(diào)試,大大加速開發(fā)進度。Nucleus實時操作系統(tǒng)提供源代碼,支持豐富的CPU種類,配合各類動態(tài)鏈接庫,為使用和研究RTOS技術(shù)的工程帶來極大的利益。</p><p> 第三章 MTK手機開發(fā)平臺及其機制研究</p><p> 3.1 平臺軟件架構(gòu)</
58、p><p> 圖3.1為MTK手機開發(fā)平臺的軟件架構(gòu)圖。由圖3.1可知,整個結(jié)構(gòu)圖可分為六個部分:應(yīng)用模塊、UI模塊、本地數(shù)據(jù)模塊、對外接口模塊、輸入事件處理模塊、Nucleus操作系統(tǒng)。應(yīng)用模塊指手機具有的各種功能;UI模塊繪制出各種功能呈現(xiàn)給用戶的視覺效果;本地數(shù)據(jù)模塊是本地資源存儲和應(yīng)用的幾種方式;對外接口模塊是指系統(tǒng)接口、第三方軟件的接口和ADS編譯器的接口;輸入事件處理模塊是指消息、鍵盤、觸摸屏、菜單等輸
59、入事件及對它們的處理;手機軟件中的操作系統(tǒng)主要提供多任務(wù)調(diào)度、通信機制、內(nèi)存管理、文件管理等。這六個部分相互關(guān)聯(lián):操作系統(tǒng)是軟硬件運行的基礎(chǔ),輸入事件處理模塊是消息隊列和事件的管理中心,應(yīng)用模塊和UI模塊體現(xiàn)給用戶的是手機功能的多樣性和炫麗的手機界面,本地數(shù)據(jù)模塊存儲和管理手機需要的資源、保存手機的默認(rèn)設(shè)置值,對外接口模塊方便系統(tǒng)應(yīng)用第三方軟件、系統(tǒng)擴展和調(diào)試。</p><p> 3.2 應(yīng)用模塊的分析<
60、;/p><p> 3.2.1 應(yīng)用模塊的組成</p><p> 如圖3.1所示,應(yīng)用模塊由功能Applications和表現(xiàn)各種功能的Screens組成。</p><p> Applications主要指手機具有的各種功能。隨著手機的發(fā)展,現(xiàn)在手機具有的功能越來越多,從最初的通話、短信、電話本管理等基本功能到現(xiàn)在擁有鬧鐘、備忘錄、日歷、照相機、音樂播放器、收音機
61、、文件管理、游戲機、設(shè)置等,手機逐漸擺脫作為單純通信工具的形象,功能越來越豐富,界面越來越人性化,它已經(jīng)成為一個集娛樂、時尚為一體的電子消費品。從單色屏到彩屏,從彩屏到智能,從MP3到MP4,從拍照到錄像,手機市場顯現(xiàn)出越來越多的多媒體色彩,特別是智能手機的出現(xiàn)使手機功能的可擴展性也越來越強。智能手機一般都是擁有開放性的操作系統(tǒng),系統(tǒng)擴展性強,支持的軟件游戲很多,娛樂性很強,能夠滿足各類不同的愛好者;人機互動性能強大,可以根據(jù)個人喜好設(shè)
62、計主題,擴展菜單,增加功能;網(wǎng)絡(luò)功能強大,幾乎所有的智能手機在網(wǎng)絡(luò)功能上都有著良好的應(yīng)用;智能手機的出現(xiàn)讓手機變得像一臺小型的PC機,強大的手機功能更能滿足用戶的需求。這些功能一般都能在手機的主界面、一級或者二級菜單看到。</p><p> Screens指所看到的一個個手機界面。屏幕有點類似于Windows系統(tǒng)中的窗口概念,即一個應(yīng)用程序在某個狀態(tài)的顯示模式及交互方式,但有一點不同,屏幕是獨占整個顯示系統(tǒng)及交
63、互系統(tǒng)的,也就是說,系統(tǒng)在任何時候只能由一個屏幕來控制。另外,一個程序可能會有多個屏幕組成,這跟Windows中一個程序可能有多個窗口類似。MTK提供幾百個Screens模板供程序員使用,程序員可以使用模板,也可以自己寫Screen。由于MTK的Screens模板很豐富,程序員一般只需調(diào)用合適的Screen就能滿足需求。</p><p> Screens分為四種:Menu、Message box、Public、
64、Private。Menu指各種菜單用到的Screens,有文本列表型、文本矩陣型、圖片文本列表型、圖片文本矩陣型、單選框列表型、復(fù)選框列表型、內(nèi)部編輯列表型等;Message box指手機彈出各種消息提示框時用到的Screens,像短信發(fā)送過程提示框、充電完成提示框等;Public指各種公用的Screens,像密碼的單行輸入框、圖片瀏覽器等所在的屏;Private指對某個功能私有的屏,像Idle屏、撥號屏、通話屏、日歷屏等。</p
65、><p> 3.2.2 屏幕歷史管理機制</p><p> 屏幕歷史管理機制,主要用來管理手機屏幕的進入和退出。</p><p> 在手機程序運行的時候,如果有新的屏幕出現(xiàn),就會強制退出原來的屏幕。比如插上充電器時彈出提示框等,但新屏幕結(jié)束后,發(fā)現(xiàn)系統(tǒng)直接返回Idle界面,顯然這樣用戶操作起來十分不便。所以在MTK系統(tǒng)中,為了解決此問題而建立了一套屏幕歷史管理機
66、制。只要在調(diào)用EntryNewScreen函數(shù)時,傳入手機新進入屏幕的ID及屏幕的入口函數(shù),系統(tǒng)就會在下次調(diào)用EntryNewScreen(也就是進入更新的屏幕)時,自動將手機的屏幕加入到歷史記錄中,當(dāng)新的屏幕退出后,系統(tǒng)也會將原來的屏幕從歷史中彈出并顯示出來。由此可知,屏幕歷史管理機制是通過棧來實現(xiàn)的,當(dāng)加入一個新的歷史記錄時,它就被加到棧頂;當(dāng)這個節(jié)點被刪除時,它就被從棧頂彈出。EntryNewScreen的函數(shù)原型如下:</
67、p><p> U8 EntryNewScreen(U16 newscrnID, FuncPtr newExitHandler, FuncPtr newEntryHandler, void *peerBuf)</p><p> 其中第一個參數(shù)表明新顯示屏幕的ID,每個屏幕都有一個全局唯一的序號,這樣方便系統(tǒng)管理;第二個參數(shù)指明屏幕的退出函數(shù),系統(tǒng)在強制退出手機屏幕時會自動調(diào)用此函數(shù),因此可以
68、在其中做一些資源釋放等方面的工作,如果實在沒事可做就可以將此函數(shù)設(shè)為空;第三個參數(shù)指屏幕的入口函數(shù),只有傳入此函數(shù),系統(tǒng)才會將屏幕自動加入歷史;第四個參數(shù)暫時不使用。</p><p> 圖3.2對屏幕歷史管理機制做了詳細(xì)描述:EntryNewScreen函數(shù)先將上次執(zhí)行EntryNewScreen時所記錄的currExitScrnID,currEntryFuncPtr以history結(jié)構(gòu)為載體記錄入棧;然后執(zhí)行
69、了記錄中的currExitFuncPtr;最后將本窗口的scrnID、exitFuncPtr、entryFuncPtr分別記錄入全局變量currExitScrnID、currExitFuncPtr和currEntryFuncPtr,留待下次調(diào)用EntryNewScreen時使用。在退出本窗口的時候通過GoBackHistory出棧,返回到本窗口的父窗口。[28]</p><p> 3.3 用戶界面設(shè)計的分析&
70、lt;/p><p> 由MTK平臺架構(gòu)圖3.1可知,用戶界面UI模塊分為WGUI、GUI和GDI。WGUI、GUI、GDI為MTK的畫圖核心層,前者是對后者的封裝。</p><p> 窗口圖形用戶界面WGUI包括四部分:Category Screens、Controls、Draw Manager、TouchScreen。</p><p> Category Scr
71、eens:MTK平臺提供幾百個Category Screens供程序員調(diào)用,程序員只需調(diào)用ShowCategoryXXXScreen函數(shù)即可。但是內(nèi)部畫屏機制是個復(fù)雜的過程,一般都用dm_redraw_category_screen函數(shù)畫屏,它根據(jù)獲得的該窗體所包含的組件及它們的屬性,再根據(jù)組件的類型和屬性,調(diào)用不同的接口,逐一繪制各組件,包括屏幕背景、菜單項、狀態(tài)圖標(biāo)、輸入框、左右軟件、Title等各種屏幕中的組成控件。</p&
72、gt;<p> Controls:包括Category的各種組件,包括列表菜單組件、矩陣菜單組件、單行輸入組件、多行輸入組件、撥號輸入框組件、Title組件、左右軟件組件、狀態(tài)欄組件、秒表組件、基本圖形組件等。</p><p> Draw Manager是根據(jù)不同的screen id和category id來確定如何組織各組件,畫出手機需要顯示的屏幕。Draw Manager繪圖機制如圖3.3所
73、示:</p><p> 由圖3.3可知,從Application Layer中的具體功能模塊對應(yīng)的Screen,到Screen里面用到的具體的Category,再到draw_manager來控制繪制Category可以看出:draw_manager是整個WGUI繪圖的控制器。繪制Category實際上可以看作是繪制輪廓和繪制組件兩個部分。首先將窗體的輪廓以及窗體的各個組件的坐標(biāo)、高度、寬度等屬性用變量記錄,結(jié)合
74、提供的資源,通過dm_get_coordinates()這個函數(shù)映射到具體的繪制過程中,最終完成Category的繪制。</p><p> TouchScreen主要根據(jù)觸摸事件管理器繪制手機界面,TouchScreen觸摸事件繪圖機制如圖3.4所示:</p><p> 由圖3.4可知,手機有幾種觸摸事件:觸摸筆按下、抬起、移動、長按、重復(fù)按下等。當(dāng)觸摸筆與屏幕接觸時,Driver E
75、vent Manager會從硬件驅(qū)動判斷出手機有觸摸事件發(fā)生,Touch Event Manager進一步判斷出是觸摸筆的哪種操作,并調(diào)用對應(yīng)的事件處理函數(shù),Draw Manager根據(jù)觸摸點的處理結(jié)果利用Draw Manager resources提供的資源在相應(yīng)的位置上畫圖,做圖方法跟WGUI畫各種組件類似。</p><p> 圖形用戶界面GUI主要畫各種控件,控件依賴于窗口存在,可以完成某種特定功能。GU
76、I提供的控件包括:菜單控件、菜單項控件、按鈕控件、進度條控件、滾動條控件、編輯框控件、文本框控件、圖形控件、標(biāo)點符號控件、軟件盤控件和日歷控件等,還包括手機上的各種字符串和各種填充區(qū)域方式等。MMI的各控件和窗口之間通過回調(diào)函數(shù)實現(xiàn)通信。GUI畫各種控件也是用draw_manager來控制的,因此所有窗口控件的實際繪制過程都是通過dm_redraw_category_screen()這個函數(shù)來實現(xiàn)的。這個函數(shù)可以幫助繪制一些比較特殊的自
77、定義的組件,如果使用的組件已經(jīng)包含在這個函數(shù)里,就直接使用定義好的繪制方法。</p><p> 圖形設(shè)備接口GDI,主要介紹了手機屏幕上圖層的重疊機制;切片顯示機制;繪制點、線、矩形等基本圖形的方法;在屏幕上顯示靜態(tài)、動態(tài)圖片的方法;顯示字符串的方法等。了解這些機制后,根據(jù)所需更靈活的改動代碼,設(shè)計出更美觀的手機界面。GDI中層主要有兩個作用:緩沖和特效。</p><p> 一、緩沖。
78、在某些頻繁更新的界面中,如果某些顯示元素一直不變化,就可以將這些元素提取出來畫到一個模擬的屏幕中,當(dāng)界面需要更新時,只需將要刷新的元素更新到另外一個模擬屏幕,而后將兩個模擬屏幕合并到真正的屏幕上,這樣做就省掉了不變元素的重畫時間,從而減輕了系統(tǒng)負(fù)擔(dān)及加速畫面更新,把這樣的模擬屏幕叫做層,也可以說,層就是屏幕的緩沖空間。</p><p> 二、特效。因為層的格式簡單統(tǒng)一,而且一般的圖形系統(tǒng)中都會用硬件來加速層合并
79、,所以在層合并時加上些特效會很方便并且實現(xiàn)極快。系統(tǒng)中的特效有通透、半透明、剪切等。</p><p> 3.4 本地數(shù)據(jù)模塊</p><p> 由MTK軟件架構(gòu)圖3.1可知,本地數(shù)據(jù)模塊包括三部分:資源、FAT、NVRAM。資源主要用來生成菜單、顯示圖片、顯示字符串;文件系統(tǒng)存儲文件格式為FAT的數(shù)據(jù),在系統(tǒng)運行時從文件系統(tǒng)中動態(tài)獲取數(shù)據(jù);NVRAM用來存儲系統(tǒng)的默認(rèn)值。</p
80、><p> UI的繪制除了各種繪圖技巧和繪圖機制外,離不開資源的支持。UI模塊資源包括以下幾種:圖片資源、字符串資源、菜單資源、字型資源、音頻資源、主題資源、包括音樂播放器、照相機、收音機、錄像器、世界地圖等在內(nèi)的應(yīng)用功能資源、其他資源等,下面分別介紹。</p><p> 圖片資源:手機的每個界面幾乎都由圖片組成,像菜單項前面的小圖標(biāo)、手機狀態(tài)小圖標(biāo)、各種消息彈出框里的圖片、撥號屏、音樂播
81、放器、游戲等,這些顯然都是圖片在手機界面上的顯示。</p><p> 字符串資源:在手機界面上看到的字符串,幾乎都是來自字符串資源,像每個菜單項的文字描述、彈出的文字消息提示等都是字符串。</p><p> 菜單資源:即菜單在資源文件中的添加過程,在進入新屏?xí)r,只需調(diào)用相關(guān)的函數(shù)獲得菜單項數(shù)、菜單圖片和菜單項的文字描述即可畫出菜單,每個菜單項對應(yīng)唯一的ID。在代碼里面用宏ADD_APP
82、LICATION_MENUITEM裝載菜單資源。在MTK平臺中,每個菜單項的行為都由菜單項自己控制,系統(tǒng)所能做的只是在高亮此項時激活菜單事件。在開機初始化時,菜單項被注冊,告知系統(tǒng)將由哪個函數(shù)被激活,SetHiliteHandler就是把菜單項和對應(yīng)的處理函數(shù)關(guān)聯(lián)起來。</p><p> 字型資源:在MTK平臺中定義了幾種型號的字型,有小號字體、中號字體、大號字體、副屏幕字體、撥號屏字體、虛擬鍵盤字體等,但是程
83、序員也可以自定義需要的字體型號。</p><p> 音頻資源:指手機系統(tǒng)中自帶的聲音,像按鍵聲、撥打電話聲、來短信聲、彈出錯誤提示框聲音、來電聲、鬧鈴聲、開關(guān)機鈴聲等,程序員也可以根據(jù)所需添加鈴聲。</p><p> 主題資源:指手機自帶的幾個主題,大部分是以背景為基礎(chǔ),不同的手機背景圖片顯示不同的風(fēng)格。</p><p> 應(yīng)用功能資源:像音樂播放器、照相機、
84、收音機、錄像器、世界地圖等都有單獨的資源文件,記錄各個屏幕圖片的大小和坐標(biāo)等信息,其中有些資源文件可以通過MCT工具生成。</p><p> 3.5 輸入事件處理機制</p><p> 系統(tǒng)的輸入事件包括:消息、鍵盤、觸摸屏、菜單事件等。消息輸入事件分兩種:協(xié)議棧里面已經(jīng)注冊消息事件和中斷消息事件,分別用SetProtocolEventHandler和SetInterruptEven
85、tHandler注冊事件;鍵盤輸入事件指手機鍵盤上每個按鍵對應(yīng)的處理事件,用SetKeyHandler注冊事件;觸摸屏輸入事件指對觸摸屏的按下、抬起、移動、長按、重復(fù)按下等動作注冊的事件,用mmi_pen_register_xxx_handler注冊事件,xxx代表各種動作;菜單輸入事件指高亮該菜單后,按下確認(rèn)鍵后的操作,用SetHiliteHandler和SetHintHandler注冊事件。消息是用戶不可見的系統(tǒng)內(nèi)部機制,而鍵盤、觸
86、摸屏、菜單事件是用戶可見的,所以總體可以分兩類:消息機制和事件處理機制。</p><p> 3.5.1 消息機制</p><p> 由MTK軟件架構(gòu)圖3.1可知,MMI和L4C之間是用消息隊列來實現(xiàn)通信的。下面以打電話為例來說明消息的發(fā)送和響應(yīng)過程。</p><p> 消息的發(fā)送:在代碼中用OslMsgSendExtQueue(&Message)來發(fā)
87、送消息,參數(shù)Message的數(shù)據(jù)結(jié)構(gòu)如圖3.5所示:</p><p> Message的數(shù)據(jù)結(jié)構(gòu)各元素意義為:</p><p> oslSrcId:消息來自哪個模塊,一般為MOD_MMI,如果是AT命令,則為MOD_ATL。</p><p> oslDestId:消息發(fā)送到哪個模塊,一般為MOD_L4C。</p><p> oslSa
88、pId:服務(wù)訪問點。</p><p> oslMsgId:協(xié)議棧里的消息ID,一般是請求消息和響應(yīng)消息成對出現(xiàn),例子中請求消息為PRT_USSDVSS_REQ,響應(yīng)消息為PRT_USSDVSS_RSP;而中斷消息是L4收到信號主動上報的,不是消息的響應(yīng),因此不是成對出現(xiàn),像來電消息為PRT_INCOMINGCALL_EVENT。以PRT開頭的消息為MMI層使用的消息,它們在L4層也都對應(yīng)一個以MSG_ID開頭的
89、消息,且消息ID唯一,主動上報的消息大部分以IND結(jié)尾,消息的上下層對應(yīng)關(guān)系用宏定義實現(xiàn)。MMI層和L4層在各自內(nèi)部都有自己的消息,這樣將軟件系統(tǒng)劃分成模塊,做到了高內(nèi)聚、低耦合,提高了模塊的獨立性,為設(shè)計高質(zhì)量的軟件結(jié)構(gòu)奠定基礎(chǔ)。OslMsgSendExtQueue只管發(fā)送消息,并不關(guān)心目的對象如何接收消息,也不用關(guān)心具體的消息響應(yīng)過程;同樣,消息接收者也不需要考慮消息的來源,而只需要對接收到的消息進行響應(yīng)即可。因此消息產(chǎn)生后,究竟如
90、何傳遞,會引起什么樣的過程來響應(yīng),是由管理消息的部件來決定的,對消息的發(fā)送者和接收者來說都是透明的。這樣,消息的發(fā)送方和響應(yīng)方形成了隱式的調(diào)用關(guān)系,非常有利于具有松散耦合結(jié)構(gòu)特性的系統(tǒng)間</p><p> oslDataPtr:用來存放和消息一起發(fā)送的參數(shù)信息。</p><p> oslPeerBuffPtr:一般為NULL。</p><p> 消息的響應(yīng):M
91、MI_task函數(shù)里面調(diào)用OslReceiveMsgExtQ(qid, &Message)從協(xié)議棧獲得消息,當(dāng)L4里面收到消息時,消息管理機制會傳到MMI,此時執(zhí)行用SetProtocolEventHandler((PsFuncPtr) callBack, PRT_USSDVSS_RSP)注冊的對應(yīng)的回調(diào)函數(shù),callBack是與消息對應(yīng)的回調(diào)函數(shù)。</p><p> 在消息的發(fā)送和響應(yīng)過程中,L4根據(jù)
92、上層各個模塊把消息也分塊管理,由圖3.6可以看出,除了MMI發(fā)送的消息之外,用戶可以用AT命令擴展MMI模塊,定義一套管理SIM2卡的消息,用系統(tǒng)提供的函數(shù)發(fā)送消息。消息響應(yīng)時,也是根據(jù)消息類型分成AT命令模塊和MMI模塊兩種消息處理。圖3.6中各個模塊的意義和作用如下:</p><p> Remote MMI(AT):用AT命令實現(xiàn)與協(xié)議棧通信的MMI。比如在PC機上測試AT命令的收發(fā)和響應(yīng)結(jié)果。</p
93、><p> MMI:人機界面,主要負(fù)責(zé)和用戶的交互。除了通話、短信、電話本等基本功能的界面外,像游戲、音樂播放器、照相機等多彩的界面也都屬于人機界面。程序員一般在MMI層上對代碼的改動最大,以更好的滿足用戶需求。</p><p> ATCI:AT命令解釋程序,根據(jù)AT命令的編碼規(guī)則編寫能完成用戶需求功能的代碼。</p><p> L4:MMI/AT與協(xié)議棧的適配層
94、。在L4上,代碼改動量較小,L4層以下代碼幾乎對程序員是透明的。</p><p> L4A:上層函數(shù)調(diào)用的適配器。</p><p> L4C:L4的控制器,把L4的功能函數(shù)分模塊管理,把接收到的消息也按模塊劃分成如圖3.6所示的模塊。</p><p> UEM:用戶設(shè)備模塊,用于基礎(chǔ)的設(shè)備驅(qū)動程序,像鍵盤,LED,GPIO等。</p><p
95、> PHB:電話本管理模塊,包括電話本的初始化、添加、刪除、查找等功能。</p><p> SMU:SIM卡的安全管理。</p><p> CSM:通話服務(wù)管理,包括電話的接通、掛斷、轉(zhuǎn)接、掛起等基本功能。</p><p> RAC:寄存器訪問控制。</p><p> SMSAL:短信應(yīng)用層,包括短信的存儲、收發(fā)、刪除、小區(qū)廣
96、播等。</p><p> TCM:終端管理,與PPP/TCPIP等的接口。</p><p> ENG:記錄消息的功能模塊。</p><p> Drivers:硬件驅(qū)動,指與手機相關(guān)的外設(shè)驅(qū)動。驅(qū)動程序包括鍵盤、電源管理、LCD、串口、USB、射頻驅(qū)動等,對芯片硬件的某個部分做擴展就要開發(fā)其相應(yīng)的驅(qū)動程序。</p><p> PS:協(xié)議
97、棧是手機軟件最復(fù)雜的部分,它和基帶處理芯片的設(shè)計密切相關(guān)。只有具備芯片設(shè)計能力的公司才能開發(fā)協(xié)議棧,協(xié)議棧會使用基帶處理芯片的所有資源,按照協(xié)議規(guī)則解析消息。</p><p> 3.5.2 事件處理機制</p><p> 手機鍵盤雖然模樣多變,但其按鍵功能基本上固定,手機系統(tǒng)內(nèi)部給每種功能的按鍵定義一個代碼,不管鍵盤外觀及布局如何改變,只要按鍵功能不變,其代碼就不必改變。如果有新功能
98、按鍵出現(xiàn),就為其增加一個新的代碼。按鍵的常用操作方式有:按下、放開、長按、重復(fù)等。一般用SetKeyHandler(FuncPtr funcPtr, U16 keyCode, U16 keyType)函數(shù)為某個按鍵設(shè)置響應(yīng)函數(shù),第一個參數(shù)為響應(yīng)函數(shù)地址,第二個參數(shù)為按鍵代碼,第三個參數(shù)為按鍵操作方式。源代碼中有一張表,用來記錄鍵盤操作和它們對應(yīng)的處理函數(shù),當(dāng)有表中按鍵操作時,就會執(zhí)行按鍵注冊的處理函數(shù)。</p><p
99、> 觸摸屏的操作簡單、自然、方便,更貼近畫面顯示,也更符合用戶的使用習(xí)慣。觸摸屏的基本操作有:點下、放開、移動、長按、重復(fù)等。驅(qū)動收到硬件通知后,先判斷是哪種操作,然后會立即從硬件讀取觸摸筆的當(dāng)前坐標(biāo),并將操作方式與觸摸筆坐標(biāo)一起保存起來,通知MMI盡快處理該操作。一般用mmi_pen_register_xxx_handler注冊觸摸屏事件,xxx表示操作方式。源代碼中有一張表,用來記錄觸摸操作和它們對應(yīng)的處理函數(shù),當(dāng)有表中觸摸
100、操作發(fā)生時,就會執(zhí)行相應(yīng)的處理函數(shù)。</p><p> 手機菜單由菜單項組成,每個菜單項都有對應(yīng)的Hilite和Hint注冊事件。</p><p> 用SetHiliteHandler(U16 itemid, FuncPtr hiliteFuncPtr)設(shè)置菜單項的高亮事件,itemid為菜單ID,hiliteFuncPtr為高亮事件,系統(tǒng)中有記錄菜單和其注冊事件的表,語句maxHil
101、iteInfo[itemid].entryFuncPtr = hiliteFuncPtr完成在表中添加菜單事件的功能,當(dāng)高亮該菜單項時,就會執(zhí)行注冊的處理函數(shù)。</p><p> 用SetHintHandler(U16 itemid, FuncPtrShort hintFuncPtr)設(shè)置菜單項的提示函數(shù),itemid為菜單ID,hintFuncPtr為提示函數(shù),系統(tǒng)中在maxHiliteInfo表中同時注冊提
102、示函數(shù),語句maxHiliteInfo[itemid].hintFuncPtr = hintFuncPtr完成提示函數(shù)的注冊,當(dāng)高亮該菜單項時,會顯示提示信息,比如高亮到收件箱菜單項時,會顯示收件箱的短信條數(shù)。</p><p><b> 3.6 任務(wù)</b></p><p> 在實時系統(tǒng)里,任務(wù)的概念和Windows里的進程是一樣的,每個任務(wù)通過實時操作系統(tǒng)的調(diào)
103、度平均分享處理器。系統(tǒng)任務(wù)是用戶無法干預(yù)的,它的創(chuàng)建和銷毀都由系統(tǒng)來完成,同時,系統(tǒng)也給用戶提供了接口,動態(tài)的創(chuàng)建任務(wù)。MMI_task是所有任務(wù)里,用戶最為關(guān)心的任務(wù),因為Application層的所有手機功能都在MMI_task中運行。在用戶開機后,做完硬件相關(guān)的初始化后,就開始創(chuàng)建MMI_task,MMI_task有著強大的管理能力。[8]</p><p> MMI_task是協(xié)議棧里的入口函數(shù),它從L4
104、或者中斷隊列里收到消息,除了提前處理超時消息、開機主動報告、鬧鐘、USB接口等一些特殊消息之外,其余的都交予ProtocolEventHandler處理,不同的消息ID對應(yīng)不同的處理函數(shù),最終將處理結(jié)果傳給MMI,上層根據(jù)處理結(jié)果執(zhí)行對應(yīng)的處理函數(shù)。</p><p> MMI和L4的通信:通過消息隊列收發(fā)消息實現(xiàn)通信,用OslMsgSendExtQueue發(fā)送消息,用OslReceiveMsgExtQ接收消息,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于mtk平臺通話管理軟件的設(shè)計與實現(xiàn)-畢業(yè)論文
- 畢業(yè)論文——基于mtk平臺通話管理軟件的設(shè)計與實現(xiàn)
- 基于mtk平臺通話管理軟件的設(shè)計與實現(xiàn)——畢業(yè)論文
- 基于mtk平臺通話管理軟件的設(shè)計與實現(xiàn)——畢業(yè)論文
- 基于mtk平臺通話管理軟件的設(shè)計與實現(xiàn)
- 基于mtk平臺通話管理軟件的設(shè)計與實現(xiàn)-畢業(yè)設(shè)計
- 基于MTK平臺通話管理軟件的設(shè)計與實現(xiàn).pdf
- 畢業(yè)論文——基于mtk平臺移動終端應(yīng)用層軟件的設(shè)計與實現(xiàn)
- 基于mtk平臺移動終端應(yīng)用層軟件的設(shè)計與實現(xiàn)——畢業(yè)論文
- 軟件工程畢業(yè)論文-培訓(xùn)學(xué)校管理軟件的設(shè)計與實現(xiàn)---學(xué)籍管理
- 機房自由上機收費管理軟件的設(shè)計與實現(xiàn)——畢業(yè)論文
- 基于bs架構(gòu)下的管理軟件設(shè)計與開發(fā)-畢業(yè)論文
- 基于bs架構(gòu)下的管理軟件設(shè)計與開發(fā)-畢業(yè)論文
- 小型企業(yè)辦公耗材庫存管理軟件的設(shè)計與實現(xiàn)——畢業(yè)論文
- 畢業(yè)論文——小型企業(yè)辦公耗材庫存管理軟件的設(shè)計與實現(xiàn)
- 畢業(yè)論文范文——機房自由上機收費管理軟件的設(shè)計與實現(xiàn)
- 基于mtk平臺移動終端應(yīng)用層軟件的設(shè)計與實現(xiàn)
- 數(shù)據(jù)字典管理軟件設(shè)計與開發(fā)畢業(yè)論文
- 畢業(yè)論文(設(shè)計)基于android平臺的個人理財軟件的設(shè)計與實現(xiàn)
- 基于MTK平臺移動終端應(yīng)用層軟件的設(shè)計與實現(xiàn).pdf
評論
0/150
提交評論