2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩75頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  本文以MTK手機(jī)開發(fā)平臺(tái)為基礎(chǔ),簡(jiǎn)述了MTK平臺(tái)中使用的Nucleus嵌入式操作系統(tǒng),分析了MTK平臺(tái)的軟件架構(gòu),詳細(xì)說明了MTK中的任務(wù)處理和消息管理機(jī)制。</p><p>  基于以上理論基礎(chǔ),對(duì)通話管理模塊軟件進(jìn)行分析,詳細(xì)分析了其中的AT模塊,研究了MTK平臺(tái)中AT命令的類型和格式,分析了通話管

2、理模塊中AT命令的收發(fā)格式。根據(jù)對(duì)通話管理模塊軟件的分析和AT命令收發(fā)格式的研究,設(shè)計(jì)出底層AT命令的發(fā)送和響應(yīng)過程,完成了通話管理軟件中AT模塊的設(shè)計(jì)。然后根據(jù)實(shí)際需求,在原方案的基礎(chǔ)上,針對(duì)AT模塊設(shè)計(jì)的缺陷提出了改進(jìn)方案。利用擴(kuò)展AT命令的實(shí)現(xiàn)原理,完善了對(duì)AT模塊軟件的設(shè)計(jì),并最終實(shí)現(xiàn)了通話管理的主要功能。最后,設(shè)計(jì)測(cè)試用例,對(duì)完成的功能進(jìn)行測(cè)試和驗(yàn)證。</p><p>  關(guān)鍵詞: MTK 手機(jī)

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手機(jī)開發(fā)平臺(tái)的操作系統(tǒng)5</p><p>  2.1 常用的手機(jī)操作系統(tǒng)5</p><p>  2.2 MTK平臺(tái)的Nucleus操作系統(tǒng)6</p><p>  2.2.1 Nucleu

9、s的特點(diǎn)6</p><p>  2.2.2 Nucleus支持的CPU類型7</p><p>  2.2.3 Nucleus源代碼帶來的優(yōu)勢(shì)8</p><p>  第三章 MTK手機(jī)開發(fā)平臺(tái)及其機(jī)制研究9</p><p>  3.1 平臺(tái)軟件架構(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 屏幕歷史管理機(jī)制10</p><p>  3.3 用戶界面設(shè)計(jì)的分析12</p><p>  3.4 本地?cái)?shù)據(jù)模塊14</p><p>  3.5 輸入事件處理機(jī)制15</p><p>  3

11、.5.1 消息機(jī)制15</p><p>  3.5.2 事件處理機(jī)制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è)計(jì)與實(shí)現(xiàn)31</p><p>  5.1 通話管理中AT模塊的設(shè)計(jì)31</p><p>  5.1.1 MMI功能接口層的設(shè)計(jì)31</p><p>  5.1.2 AT任務(wù)功能接口層的設(shè)計(jì)31</p><p>  5.1.3 AT任務(wù)處理層的設(shè)計(jì)32</

14、p><p>  5.1.4 AT模塊設(shè)計(jì)的幾個(gè)關(guān)鍵點(diǎn)36</p><p>  5.2 AT模塊設(shè)計(jì)的改進(jìn)方案39</p><p>  5.2.1 改進(jìn)方案的必要性39</p><p>  5.2.2 擴(kuò)展AT命令的設(shè)計(jì)原理39</p><p>  5.2.3 改進(jìn)方案的軟件設(shè)計(jì)40</p>

15、<p>  5.2.4 改進(jìn)方案AT任務(wù)處理層的設(shè)計(jì)42</p><p>  5.3 通話管理主要功能的實(shí)現(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>  第六章 通話管理模塊軟件的測(cè)試51</p><p>  6.1 軟件測(cè)試的方法

17、和過程51</p><p>  6.2 通話管理軟件測(cè)試用例的設(shè)計(jì)52</p><p>  6.3 通話管理軟件測(cè)試平臺(tái)的搭建53</p><p>  6.3.1 AT命令測(cè)試平臺(tái)的搭建53</p><p>  6.3.2 通話功能測(cè)試平臺(tái)的搭建55</p><p>  6.4 通話管理軟件的測(cè)試

18、56</p><p>  6.4.1 AT命令測(cè)試結(jié)果的分析56</p><p>  6.4.2 通話功能測(cè)試結(jié)果的分析58</p><p><b>  結(jié)束語(yǔ)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)歷了長(zhǎng)達(dá)一個(gè)多世紀(jì)的發(fā)展,如今已走進(jìn)千家萬戶,成為國(guó)家經(jīng)濟(jì)建設(shè)、社會(huì)生活和人們交流信息所不可缺少的重要工具。隨著人們生活水

20、平的提高,手機(jī)已經(jīng)逐漸從奢侈品發(fā)展到了現(xiàn)在十分普及的消費(fèi)電子產(chǎn)品?;仡櫴謾C(jī)發(fā)展的過程,無論從造型還是功能都有了翻天覆地的變化。手機(jī)的發(fā)展也是經(jīng)過了一次次的變革,才形成了如今多樣化的造型,多樣化的功能,而不是單一的通信工具。隨著科技的發(fā)展與進(jìn)步,電話技術(shù)和業(yè)務(wù)發(fā)生了巨大變化,通信的地點(diǎn)由固定方式轉(zhuǎn)向移動(dòng)方式。移動(dòng)通訊的迅猛發(fā)展,使現(xiàn)代生活節(jié)奏越來越快,移動(dòng)通訊產(chǎn)品的更新?lián)Q代和市場(chǎng)爭(zhēng)奪戰(zhàn)也愈演愈烈,眾多國(guó)產(chǎn)手機(jī)品牌群雄逐鹿,移動(dòng)運(yùn)營(yíng)商也做好

21、了一切準(zhǔn)備迎接3G時(shí)代的到來。未來的手機(jī)將偏重于安全和數(shù)據(jù)通訊。一方面加強(qiáng)個(gè)人隱私的保護(hù),另一方面加強(qiáng)數(shù)據(jù)業(yè)務(wù)的研發(fā),更多的多媒體功能被引入進(jìn)來,手機(jī)將會(huì)具有更加強(qiáng)勁的運(yùn)算能力,成為個(gè)人的信息終端,而不是僅僅具有通話和文字消息的功能。手機(jī)會(huì)更加智能化、微型化、安全化、多功能化。</p><p>  現(xiàn)在,手機(jī)開發(fā)模式包括采用芯片供應(yīng)商提供的參考設(shè)計(jì)和完全獨(dú)立自主的研發(fā)兩種。芯片供應(yīng)商參考設(shè)計(jì)就是芯片供應(yīng)商除了負(fù)責(zé)

22、芯片組的設(shè)計(jì)外,還要對(duì)芯片組的核心硬件電路、底層操作系統(tǒng)、第二、三層協(xié)議棧進(jìn)行設(shè)計(jì)。對(duì)于那些較小的終端廠商而言,其實(shí)力不足以承擔(dān)獨(dú)立開發(fā)以上設(shè)計(jì)的財(cái)力及人力,因而只需要購(gòu)進(jìn)某家芯片供應(yīng)商的芯片及其參考設(shè)計(jì),再在此基礎(chǔ)上進(jìn)行驅(qū)動(dòng)程序、功能實(shí)現(xiàn)、應(yīng)用程序、人機(jī)界面等的開發(fā)工作,來完成一款手機(jī)的設(shè)計(jì)與生產(chǎn)。而完全自主設(shè)計(jì)的終端廠家則能自由組合不同廠商的芯片,完全掌握底層操作系統(tǒng)和協(xié)議棧,可以根據(jù)自己的需求設(shè)計(jì)出更個(gè)性化的手機(jī)來?,F(xiàn)階段國(guó)內(nèi)仍以

23、采用參考設(shè)計(jì)的方式為主。[17] [20]</p><p>  MTK是臺(tái)灣聯(lián)發(fā)科技多媒體芯片提供商的簡(jiǎn)稱。MTK公司是國(guó)內(nèi)的專業(yè)手機(jī)平臺(tái)提供商,該公司成立至今發(fā)展迅猛,如今,MTK已成為全球光存儲(chǔ)IC芯片的領(lǐng)航者。該公司的產(chǎn)品因?yàn)榧奢^多的多媒體功能和較低的價(jià)格在大陸手機(jī)公司和手機(jī)設(shè)計(jì)公司得到廣泛的應(yīng)用。MTK手機(jī)開發(fā)平臺(tái)就是目前國(guó)內(nèi)向客戶提供整套手機(jī)開發(fā)方案支持的平臺(tái),并以其完善的服務(wù),全面細(xì)致、穩(wěn)定的方案,

24、迅速占領(lǐng)著國(guó)內(nèi)市場(chǎng)。該平臺(tái)的兩個(gè)最大的優(yōu)點(diǎn)是:產(chǎn)品研發(fā)周期短,方案成本低。隨著MTK芯片能力和系統(tǒng)的穩(wěn)定性不斷提高,手機(jī)的計(jì)算、存儲(chǔ)能力大幅提升,功能持續(xù)拓展。該平臺(tái)在市場(chǎng)上的占有率逐年遞增,基于MTK手機(jī)平臺(tái)的開發(fā)也逐漸受到業(yè)界的普遍關(guān)注。[7]</p><p>  國(guó)外一些經(jīng)濟(jì)和技術(shù)實(shí)力很強(qiáng)的公司,像摩托羅拉、諾基亞、索愛、三星等都有自己的開發(fā)平臺(tái)[26],他們?cè)诟髯缘钠脚_(tái)上已經(jīng)開發(fā)出了不少雙卡雙待機(jī),三星在

25、雙模手機(jī)領(lǐng)域一直處于領(lǐng)先地位,并且只走高端路線,基本壟斷了高端商務(wù)型雙模手機(jī)市場(chǎng)。三星最新推出一款雙GSM雙待手機(jī)SGH-D888,這款三星D888擁有雙卡雙待功能,還有著不俗的外觀設(shè)計(jì)以及三星強(qiáng)大的品牌號(hào)召力,尤其是它對(duì)通話管理的創(chuàng)新設(shè)計(jì),使得D888成為高端用戶所關(guān)注的焦點(diǎn)。</p><p>  目前國(guó)內(nèi)的手機(jī)開發(fā)商,開始致力于開發(fā)雙卡雙待手機(jī)。在MTK平臺(tái)上做底層開發(fā)主要是AT命令的解析和串口通信的實(shí)現(xiàn),目

26、前很多小公司都是基于MTK平臺(tái)開發(fā)手機(jī),但是對(duì)通話的管理功能也非常類似,突破很小,這主要是由于MTK軟件很多都是封閉的,無法了解他們的深層機(jī)制。而時(shí)間和精力也不允許這些公司開發(fā)自己的研發(fā)平臺(tái),只能最大限度的在所用的平臺(tái)上開發(fā)出最優(yōu)的手機(jī)軟件。所以本文研究的基于MTK平臺(tái)通話管理軟件的設(shè)計(jì)與實(shí)現(xiàn)具有很大的實(shí)用性和創(chuàng)新性。</p><p>  1.2 課題研究的意義</p><p>  伴隨

27、著人們生活品質(zhì)的不斷提高,許多人因?yàn)楣ぷ骱蜕畹脑蛐枰瑫r(shí)使用兩部不同的手機(jī),擁有兩個(gè)手機(jī)號(hào)碼的用戶越來越多,人們對(duì)雙卡雙待手機(jī)的需求也越來越迫切。市場(chǎng)上出現(xiàn)雙模雙卡雙待手機(jī)、GSM網(wǎng)雙卡雙待手機(jī)、雙卡單待手機(jī)等多種不同的產(chǎn)品,以滿足消費(fèi)者多種不同的需求。隨著移動(dòng)網(wǎng)絡(luò)單向收費(fèi)業(yè)務(wù)的逐步開通、資費(fèi)標(biāo)準(zhǔn)不斷下調(diào),雙卡雙待手機(jī)有很好的市場(chǎng)前景。因此,雙卡雙待手機(jī)功能的研發(fā)不僅為用戶的使用帶來了方便,也將給生產(chǎn)廠家?guī)砗艽蟮慕?jīng)濟(jì)效益。[22]

28、</p><p>  通常所說的手機(jī)大部分是指單SIM卡手機(jī),雙卡雙待手機(jī)指的是在一部手機(jī)使用一個(gè)界面管理兩張SIM卡,可以同時(shí)處于移動(dòng)網(wǎng)絡(luò)中待機(jī)狀態(tài)(雙卡雙待機(jī))。這兩張SIM卡可以都是GSM網(wǎng)絡(luò)的SIM卡,也可以分別是一張GSM網(wǎng)絡(luò)和CDMA網(wǎng)絡(luò)的SIM卡(稱為雙模雙待機(jī))。兩個(gè)號(hào)碼可以同時(shí)待機(jī),同時(shí)在線。電話、短信、通訊錄等功能都可以分別正常使用,彼此不受影響。這實(shí)際上是在同一部手機(jī)中同時(shí)運(yùn)行兩套系統(tǒng)、兩套

29、基帶,兩套射頻同時(shí)協(xié)調(diào)工作,一個(gè)系統(tǒng)負(fù)責(zé)一個(gè)號(hào)碼的通信控制,使得兩張卡都能相對(duì)獨(dú)立的同時(shí)工作。其中,MMI界面是由其中的主處理器負(fù)責(zé)。由于具備一機(jī)多卡、多網(wǎng)在線等功能,雙卡雙待手機(jī)上市之后迅速贏得了商務(wù)人士的青睞,并被業(yè)界認(rèn)為是2G向3G手機(jī)進(jìn)行平滑過渡的首選。[5]</p><p>  本文依據(jù)本人在實(shí)習(xí)公司從事的PW888項(xiàng)目,以本人負(fù)責(zé)的通話管理模塊為基礎(chǔ),詳細(xì)闡述了在MTK手機(jī)開發(fā)平臺(tái)上,通過UART串口

30、實(shí)現(xiàn)兩卡間通信,利用AT命令完成對(duì)SIM2卡的操作和管理,最終完成了對(duì)雙卡雙待手機(jī)中通話管理模塊的分析、設(shè)計(jì)和實(shí)現(xiàn)。從開發(fā)者的角度來看,新功能手機(jī)的開發(fā)是技術(shù)能力的一個(gè)挑戰(zhàn);對(duì)生產(chǎn)廠家來說,新功能吸引了眾多消費(fèi)者,增強(qiáng)了他們的市場(chǎng)競(jìng)爭(zhēng)力;對(duì)用戶來說,新功能使人們的生活舒適,工作方便快捷。</p><p>  從技術(shù)的角度講,項(xiàng)目的實(shí)現(xiàn)具有很好的移植性,便于代碼的二次開發(fā)。不僅在理論上是對(duì)嵌入式移動(dòng)終端平臺(tái)的深入挖

31、掘,更是在實(shí)踐上解決了不同平臺(tái)間實(shí)現(xiàn)相同功能的技術(shù)難題。并根據(jù)需求,提出了最優(yōu)化的設(shè)計(jì)方案,驗(yàn)證了優(yōu)化方案的可行性。本文對(duì)雙卡雙待手機(jī)技術(shù)的研究具有很好的參考價(jià)值。</p><p>  從市場(chǎng)效益的角度來說,不僅給公司帶來了可觀的經(jīng)濟(jì)價(jià)值,同時(shí)又為消費(fèi)者購(gòu)買移動(dòng)終端產(chǎn)品提供了一個(gè)更有競(jìng)爭(zhēng)力的選擇。</p><p>  1.3 論文的章節(jié)安排</p><p>  本

32、文在研究MTK平臺(tái)開發(fā)技術(shù)的基礎(chǔ)上,設(shè)計(jì)了一套如何在其上實(shí)現(xiàn)雙卡雙待功能的解決方案。主要包括以下幾個(gè)部分:</p><p>  第一章介紹課題背景、研究意義和論文的章節(jié)安排。</p><p>  第二章簡(jiǎn)述MTK手機(jī)開發(fā)平臺(tái)中Nucleus嵌入式實(shí)時(shí)操作系統(tǒng)。</p><p>  第三章主要研究MTK手機(jī)軟件開發(fā)平臺(tái)的架構(gòu),詳細(xì)分析了消息隊(duì)列、任務(wù)、屏幕歷史管理機(jī)制

33、等。</p><p>  第四章對(duì)通話管理模塊軟件進(jìn)行分析,重點(diǎn)分析了其中的AT模塊和通話管理中用到的AT命令。</p><p>  第五章對(duì)AT模塊進(jìn)行設(shè)計(jì),根據(jù)實(shí)際需求,對(duì)AT模塊的設(shè)計(jì)方案提出改進(jìn),并完成改進(jìn)方案的AT模塊設(shè)計(jì),最后用擴(kuò)展的AT命令實(shí)現(xiàn)了通話管理的主要功能。</p><p>  第六章根據(jù)軟件測(cè)試的方法和過程,設(shè)計(jì)通話管理軟件的測(cè)試用例,搭建測(cè)

34、試平臺(tái),測(cè)試軟件功能,并對(duì)測(cè)試結(jié)果進(jìn)行分析。</p><p>  結(jié)束語(yǔ)中提出本文所解決的實(shí)際問題,以及存在的問題,提出了下一步的研究和開發(fā)任務(wù)。</p><p>  第二章 MTK手機(jī)開發(fā)平臺(tái)的操作系統(tǒng)</p><p>  2.1 常用的手機(jī)操作系統(tǒng)</p><p>  手機(jī)開發(fā)是典型的嵌入式實(shí)時(shí)操作系統(tǒng)的應(yīng)用。手機(jī)操作系統(tǒng)是承載手機(jī)信

35、息服務(wù)的平臺(tái),地位十分重要。手機(jī)客戶端軟件開發(fā)最大的困難就是平臺(tái)不統(tǒng)一,手機(jī)開發(fā)平臺(tái)太多。目前應(yīng)用于手機(jī)中的一種是像Symbian、Windows Mobile、Palm、linux四個(gè)操作系統(tǒng)屬于智能手機(jī)操作系統(tǒng),這種操作系統(tǒng)不僅提供操作系統(tǒng)的核心功能,還提供諸如多線程調(diào)度,高級(jí)API等其它附加功能。支持智能手機(jī)操作系統(tǒng)的手機(jī)稱為智能手機(jī),也被稱為結(jié)合手機(jī)與網(wǎng)絡(luò)化的PDA。[9]</p><p><b&g

36、t;  Symbian</b></p><p>  在智能手機(jī)操作系統(tǒng)中,Symbian搶得了先機(jī),索愛、諾基亞、摩托羅拉以及松下等公司基本上都采用了Symbian為主的操作系統(tǒng)。Symbian目前設(shè)計(jì)合理,穩(wěn)定,而且有眾多廠商支持,前景看好。現(xiàn)在它的網(wǎng)絡(luò)應(yīng)用非常強(qiáng),9鍵的單手操作非常舒服,缺點(diǎn)就是慢。Symbian很像是Windows和Linux的結(jié)合體,有著良好的界面,采用內(nèi)核與界面分離技術(shù),對(duì)硬

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的一大特點(diǎn)。Linux在通信和網(wǎng)絡(luò)功能方面優(yōu)于其

38、他操作系統(tǒng)。其他操作系統(tǒng)不包含如此緊密地和內(nèi)核結(jié)合在一起的連接網(wǎng)絡(luò)的能力,也沒有內(nèi)置這些聯(lián)網(wǎng)特性的靈活性。而Linux為用戶提供了完善的、強(qiáng)大的網(wǎng)絡(luò)功能。支持Internet是其網(wǎng)絡(luò)功能之一。Linux免費(fèi)提供了大量支持Internet的軟件,Internet是在Unix領(lǐng)域中建立并繁榮起來的,在這方面使用Linux是相當(dāng)方便的,用戶能用Linux與世界上的其他人通過Internet網(wǎng)絡(luò)進(jìn)行通信。 文件傳輸是其網(wǎng)絡(luò)功能之二。用戶能通過一

39、些Linux命令完成內(nèi)部信息或文件的傳輸。 遠(yuǎn)程訪問是其網(wǎng)絡(luò)功能之三。Linux不僅允許進(jìn)行文件和程序的傳輸,它還為系統(tǒng)管理員和技術(shù)人員提供了訪問其他系統(tǒng)的窗口。通過這種遠(yuǎn)程訪問的功能,一位技術(shù)人員能夠有效地為多個(gè)系統(tǒng)服務(wù),即使那些系統(tǒng)位于相距很遠(yuǎn)的地方。</p><p>  Windows CE</p><p>  Windows CE是針對(duì)有限資源的平臺(tái)而設(shè)計(jì)的多線程、完整優(yōu)先權(quán)、多任

40、務(wù)的操作系統(tǒng),但它不是一個(gè)硬實(shí)時(shí)操作系統(tǒng)。高度模塊化是Windows CE的一個(gè)鮮為人知的特性,這一特性有利于它對(duì)從掌上電腦到專用的工業(yè)控制器的用戶電子設(shè)備進(jìn)行定制。Windows CE支持Win32 API子集、多種用戶界面硬件、多種串行和網(wǎng)絡(luò)通信技術(shù)。Windows CE嵌入式操作系統(tǒng)最大的特點(diǎn)是能提供與PC機(jī)類似的圖形界面和主要的應(yīng)用程序。Windows CE的設(shè)計(jì)目標(biāo)是:模塊化及可伸縮性、實(shí)時(shí)性能好,通信能力強(qiáng)大,支持多種CPU

41、。它的設(shè)計(jì)可以滿足多種設(shè)備的需要,這些設(shè)備包括了工業(yè)控制器、通信集線器以及銷售終端之類的企業(yè)設(shè)備,還有像照相機(jī)、電話和家用娛樂器材之類的消費(fèi)產(chǎn)品。一個(gè)典型的基于Windows CE的嵌入系統(tǒng)通常為某個(gè)特定用途而設(shè)計(jì),并在不聯(lián)機(jī)的情況下工作。它要求所使用的操作系統(tǒng)體積較小,內(nèi)建有對(duì)中斷的響應(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ù)強(qiáng)、開放性的系統(tǒng),現(xiàn)在有大約數(shù)千種專為Palm OS編寫的應(yīng)用程序,從程序內(nèi)容上看,小到個(gè)人管理、游戲,大到行業(yè)解決方案,Palm OS無所不包。在豐富的軟

43、件支持下,基于Palm OS的掌上電腦功能得以不斷擴(kuò)展。Palm OS是一套專門為掌上電腦開發(fā)的OS。在編寫程序時(shí),Palm OS充分考慮了掌上電腦內(nèi)存相對(duì)較小的情況,因此它只占用非常小的內(nèi)存。由于基于 Palm OS編寫的應(yīng)用程序占用的空間也非常小,所以,基于Palm OS的掌上電腦可以運(yùn)行眾多應(yīng)用程序。這種系統(tǒng)對(duì)硬件的要求很低,因此在價(jià)格上能很好的控制,耗電量也很小。顯著特點(diǎn)是速度遠(yuǎn)遠(yuǎn)快于其他系統(tǒng),操作舒服,典型代表是三星SGH-i

44、500Treo 600。</p><p>  2.2 MTK平臺(tái)的Nucleus操作系統(tǒng)</p><p>  MTK采用Nucleus實(shí)時(shí)操作系統(tǒng),Nucleus是美國(guó)源代碼操作系統(tǒng)商ATI公司推出的嵌入式操作系統(tǒng)。它是一個(gè)搶先式多任務(wù)操作系統(tǒng)內(nèi)核,Kernel Abstraction層為MTK軟件和Nucleus操作系統(tǒng)的接口。它為任務(wù)提供許多系統(tǒng)服務(wù)函數(shù),比如計(jì)時(shí)器、隊(duì)列、內(nèi)存管理、

45、事件等等。</p><p>  2.2.1 Nucleus的特點(diǎn)</p><p>  Nucleus是為實(shí)時(shí)嵌入式應(yīng)用而設(shè)計(jì)的一個(gè)搶先式多任務(wù)操作系統(tǒng)內(nèi)核,其95%的代碼是用ANSIC寫成的,因此,非常便于移植并能夠支持大多數(shù)類型的處理器。從實(shí)現(xiàn)角度來看,Nucleus是一組C函數(shù)庫(kù),應(yīng)用程序代碼與核心函數(shù)庫(kù)連接在一起,生成一個(gè)目標(biāo)代碼,下載到目標(biāo)板的RAM中或直接燒錄到目標(biāo)板的ROM中

46、執(zhí)行。在典型的目標(biāo)環(huán)境中,Nucleus核心代碼區(qū)一般不超過20K字節(jié)大小。Nucleus采用了軟件組件的方法。每個(gè)組件具有單一而明確的目的,通常由幾個(gè)C及匯編語(yǔ)言模塊構(gòu)成,提供清晰的外部接口,對(duì)組件的引用就是通過這些接口完成的。除了少數(shù)一些特殊情況外,不允許從外部對(duì)組件內(nèi)的全局進(jìn)行訪問。由于采用了軟件組件的方法,Nucleus各個(gè)組件非常易于替換和復(fù)用。Nucleus的組件包括任務(wù)控制、內(nèi)存管理、任務(wù)間通信、任務(wù)的同步與互斥、中斷管理

47、、定時(shí)器及I/O驅(qū)動(dòng)等。[12]</p><p>  Nucleus具有如下特點(diǎn):</p><p>  1、提供源代碼。Nucleus提供注釋嚴(yán)格的C源代碼給每一個(gè)用戶。這樣,用戶能夠深入地了解底層內(nèi)核的運(yùn)作方式,并可根據(jù)自己的特殊要求刪減或改動(dòng)系統(tǒng)軟件,這對(duì)軟件的規(guī)范化管理及系統(tǒng)軟件的測(cè)試都有極大的幫助。另外,由于提供了RTOS的源代碼,用戶不但可以進(jìn)行RTOS的學(xué)習(xí)和研究,而且產(chǎn)品在量

48、產(chǎn)時(shí)也不必支付License,可以省去大量的費(fèi)用。對(duì)于軍方來說,由于提供了源代碼,用戶完全可以控制內(nèi)核而不必?fù)?dān)心操作系統(tǒng)中可能會(huì)存在異常任務(wù)導(dǎo)致系統(tǒng)崩潰。</p><p>  2、性價(jià)比高。Nucleus由于采用了先進(jìn)的微內(nèi)核(Micro-kernel)技術(shù),因而在優(yōu)先級(jí)安排、任務(wù)調(diào)度、任務(wù)切換等各個(gè)方面都有相當(dāng)大的優(yōu)勢(shì)。另外,對(duì)C++語(yǔ)言的全面支持使得Nucleus的Kernel成為名副其實(shí)的面向?qū)ο蟮膶?shí)時(shí)操作

49、系統(tǒng)內(nèi)核,但其價(jià)格卻比較合理,所以容易被廣大的研發(fā)單位接受。</p><p>  3、易學(xué)易用。Nucleus能夠結(jié)合Paradigm,SDS以及ATI自己的多任務(wù)調(diào)試器組成功能強(qiáng)大的集成開發(fā)環(huán)境,配合相應(yīng)的編譯器和動(dòng)態(tài)聯(lián)結(jié)庫(kù)以及各類底層驅(qū)動(dòng)軟件,用戶可以輕松地進(jìn)行RTOS的開發(fā)和調(diào)試。另外,由于這些集成開發(fā)環(huán)境(IDE)為所有的開發(fā)工程師所熟悉,因而,容易學(xué)習(xí)和使用。[13]</p><p&

50、gt;  4、功能模塊豐富。Nucleus除提供功能強(qiáng)大的內(nèi)核操作系統(tǒng)外,還提供種類豐富的功能模塊。例如用于通訊系統(tǒng)的局域和廣域網(wǎng)絡(luò)模塊,支持圖形應(yīng)用的實(shí)時(shí)化Windows模塊,支持Internet網(wǎng)的WEB產(chǎn)品模塊,工控機(jī)實(shí)時(shí)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類型最豐富的實(shí)時(shí)多任務(wù)

52、操作系統(tǒng)。</p><p>  針對(duì)各種嵌入式應(yīng)用,Nucleus還提供相應(yīng)的網(wǎng)絡(luò)協(xié)議(如TCP/IP,SNMP等),以滿足用戶對(duì)通訊系統(tǒng)的開發(fā)要求。另外,可重入的文件系統(tǒng)、可重入的C函數(shù)庫(kù)以及圖形化界面等也給開發(fā)者提供了方便。針對(duì)不同的CPU類型,Nucleus還提供編譯器、動(dòng)態(tài)鏈接庫(kù)、多任務(wù)調(diào)試器等相應(yīng)的工具來配置用戶的開發(fā)環(huán)境。</p><p>  2.2.3 Nucleus源代碼

53、帶來的優(yōu)勢(shì)</p><p>  眾所周知,Nucleus實(shí)時(shí)多任務(wù)操作系統(tǒng)提供給用戶源代碼。這除商務(wù)上給用戶帶來巨大益處(免交Royalty)外,還在技術(shù)方面給用戶極大的方便,即無需編寫和調(diào)試BSP,從而達(dá)到易學(xué)易用的目的,加速產(chǎn)品上市。</p><p>  Nucleus的調(diào)試是基于全新的動(dòng)態(tài)鏈接庫(kù)(DLL),用戶只須通過監(jiān)控程序(Monitor)或者BDM調(diào)試口(或者JTAG調(diào)試口)建

54、立目標(biāo)系統(tǒng)(Target)與主機(jī)(Host)之間的通訊,并給主機(jī)上的Debugger初始化特性中加入Nucleus的動(dòng)態(tài)鏈接庫(kù)。這時(shí),調(diào)試器就能夠自動(dòng)地去識(shí)別運(yùn)行在目標(biāo)系統(tǒng)中的Nucleus內(nèi)核和各個(gè)應(yīng)用任務(wù),從而完成任務(wù)級(jí)調(diào)試。</p><p>  因此,Nucleus的用戶只需要將精力放在基于Nucleus的編程工作中。對(duì)于一個(gè)新手,只需經(jīng)過一天到兩天的學(xué)習(xí)和培訓(xùn),就可以投入到應(yīng)用程序編制工作中去,無需花大量

55、的時(shí)間去研究CPU,特定的硬件等。另外,由于有了源程序,用戶在調(diào)試程序時(shí)可以清楚地通過STEPINTO命令,追蹤到RTOS的內(nèi)層中去,觀看和學(xué)習(xí)Kernel對(duì)任務(wù)的管理和調(diào)度機(jī)制。對(duì)于有志研究RTOS深層技術(shù)的工程師來說極為方便。</p><p>  對(duì)于Motorola68K和PowerPC,用戶可以利用GreenHill公司的Mutil調(diào)試器或TRACE-ICD來完成Nucleus的調(diào)試;對(duì)于ARM和Stro

56、ngARM,用戶可以利用ARM公司的SDT251調(diào)試器或TRACE-ICD來完成Nucleus的調(diào)試;對(duì)于Intelx86實(shí)模式,用戶可以利用Paradigm公司的調(diào)試器及其DLL來進(jìn)行任務(wù)級(jí)調(diào)試;對(duì)于Intelx86保護(hù)模式則可以利用SSI公司Softprobe調(diào)試器和SSIDLL來調(diào)試;對(duì)于i960,SH3/4,ARM6/7,MIPS等芯片,則可以使用ATI公司自己的UDB調(diào)試器來進(jìn)行任務(wù)的調(diào)試。</p><p&

57、gt;  總之,動(dòng)態(tài)鏈接庫(kù)是在RTOS工具中新出現(xiàn)的應(yīng)用趨勢(shì),通過這種方式,用戶可以免去BSP帶來的麻煩,靈活方便地進(jìn)行開發(fā)和調(diào)試,大大加速開發(fā)進(jìn)度。Nucleus實(shí)時(shí)操作系統(tǒng)提供源代碼,支持豐富的CPU種類,配合各類動(dòng)態(tài)鏈接庫(kù),為使用和研究RTOS技術(shù)的工程帶來極大的利益。</p><p>  第三章 MTK手機(jī)開發(fā)平臺(tái)及其機(jī)制研究</p><p>  3.1 平臺(tái)軟件架構(gòu)</

58、p><p>  圖3.1為MTK手機(jī)開發(fā)平臺(tái)的軟件架構(gòu)圖。由圖3.1可知,整個(gè)結(jié)構(gòu)圖可分為六個(gè)部分:應(yīng)用模塊、UI模塊、本地?cái)?shù)據(jù)模塊、對(duì)外接口模塊、輸入事件處理模塊、Nucleus操作系統(tǒng)。應(yīng)用模塊指手機(jī)具有的各種功能;UI模塊繪制出各種功能呈現(xiàn)給用戶的視覺效果;本地?cái)?shù)據(jù)模塊是本地資源存儲(chǔ)和應(yīng)用的幾種方式;對(duì)外接口模塊是指系統(tǒng)接口、第三方軟件的接口和ADS編譯器的接口;輸入事件處理模塊是指消息、鍵盤、觸摸屏、菜單等輸

59、入事件及對(duì)它們的處理;手機(jī)軟件中的操作系統(tǒng)主要提供多任務(wù)調(diào)度、通信機(jī)制、內(nèi)存管理、文件管理等。這六個(gè)部分相互關(guān)聯(lián):操作系統(tǒng)是軟硬件運(yùn)行的基礎(chǔ),輸入事件處理模塊是消息隊(duì)列和事件的管理中心,應(yīng)用模塊和UI模塊體現(xiàn)給用戶的是手機(jī)功能的多樣性和炫麗的手機(jī)界面,本地?cái)?shù)據(jù)模塊存儲(chǔ)和管理手機(jī)需要的資源、保存手機(jī)的默認(rèn)設(shè)置值,對(duì)外接口模塊方便系統(tǒng)應(yīng)用第三方軟件、系統(tǒng)擴(kuò)展和調(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主要指手機(jī)具有的各種功能。隨著手機(jī)的發(fā)展,現(xiàn)在手機(jī)具有的功能越來越多,從最初的通話、短信、電話本管理等基本功能到現(xiàn)在擁有鬧鐘、備忘錄、日歷、照相機(jī)、音樂播放器、收音機(jī)

61、、文件管理、游戲機(jī)、設(shè)置等,手機(jī)逐漸擺脫作為單純通信工具的形象,功能越來越豐富,界面越來越人性化,它已經(jīng)成為一個(gè)集娛樂、時(shí)尚為一體的電子消費(fèi)品。從單色屏到彩屏,從彩屏到智能,從MP3到MP4,從拍照到錄像,手機(jī)市場(chǎng)顯現(xiàn)出越來越多的多媒體色彩,特別是智能手機(jī)的出現(xiàn)使手機(jī)功能的可擴(kuò)展性也越來越強(qiáng)。智能手機(jī)一般都是擁有開放性的操作系統(tǒng),系統(tǒng)擴(kuò)展性強(qiáng),支持的軟件游戲很多,娛樂性很強(qiáng),能夠滿足各類不同的愛好者;人機(jī)互動(dòng)性能強(qiáng)大,可以根據(jù)個(gè)人喜好設(shè)

62、計(jì)主題,擴(kuò)展菜單,增加功能;網(wǎng)絡(luò)功能強(qiáng)大,幾乎所有的智能手機(jī)在網(wǎng)絡(luò)功能上都有著良好的應(yīng)用;智能手機(jī)的出現(xiàn)讓手機(jī)變得像一臺(tái)小型的PC機(jī),強(qiáng)大的手機(jī)功能更能滿足用戶的需求。這些功能一般都能在手機(jī)的主界面、一級(jí)或者二級(jí)菜單看到。</p><p>  Screens指所看到的一個(gè)個(gè)手機(jī)界面。屏幕有點(diǎn)類似于Windows系統(tǒng)中的窗口概念,即一個(gè)應(yīng)用程序在某個(gè)狀態(tài)的顯示模式及交互方式,但有一點(diǎn)不同,屏幕是獨(dú)占整個(gè)顯示系統(tǒng)及交

63、互系統(tǒng)的,也就是說,系統(tǒng)在任何時(shí)候只能由一個(gè)屏幕來控制。另外,一個(gè)程序可能會(huì)有多個(gè)屏幕組成,這跟Windows中一個(gè)程序可能有多個(gè)窗口類似。MTK提供幾百個(gè)Screens模板供程序員使用,程序員可以使用模板,也可以自己寫Screen。由于MTK的Screens模板很豐富,程序員一般只需調(diào)用合適的Screen就能滿足需求。</p><p>  Screens分為四種:Menu、Message box、Public、

64、Private。Menu指各種菜單用到的Screens,有文本列表型、文本矩陣型、圖片文本列表型、圖片文本矩陣型、單選框列表型、復(fù)選框列表型、內(nèi)部編輯列表型等;Message box指手機(jī)彈出各種消息提示框時(shí)用到的Screens,像短信發(fā)送過程提示框、充電完成提示框等;Public指各種公用的Screens,像密碼的單行輸入框、圖片瀏覽器等所在的屏;Private指對(duì)某個(gè)功能私有的屏,像Idle屏、撥號(hào)屏、通話屏、日歷屏等。</p

65、><p>  3.2.2 屏幕歷史管理機(jī)制</p><p>  屏幕歷史管理機(jī)制,主要用來管理手機(jī)屏幕的進(jìn)入和退出。</p><p>  在手機(jī)程序運(yùn)行的時(shí)候,如果有新的屏幕出現(xiàn),就會(huì)強(qiáng)制退出原來的屏幕。比如插上充電器時(shí)彈出提示框等,但新屏幕結(jié)束后,發(fā)現(xiàn)系統(tǒng)直接返回Idle界面,顯然這樣用戶操作起來十分不便。所以在MTK系統(tǒng)中,為了解決此問題而建立了一套屏幕歷史管理機(jī)

66、制。只要在調(diào)用EntryNewScreen函數(shù)時(shí),傳入手機(jī)新進(jìn)入屏幕的ID及屏幕的入口函數(shù),系統(tǒng)就會(huì)在下次調(diào)用EntryNewScreen(也就是進(jìn)入更新的屏幕)時(shí),自動(dòng)將手機(jī)的屏幕加入到歷史記錄中,當(dāng)新的屏幕退出后,系統(tǒng)也會(huì)將原來的屏幕從歷史中彈出并顯示出來。由此可知,屏幕歷史管理機(jī)制是通過棧來實(shí)現(xiàn)的,當(dāng)加入一個(gè)新的歷史記錄時(shí),它就被加到棧頂;當(dāng)這個(gè)節(jié)點(diǎn)被刪除時(shí),它就被從棧頂彈出。EntryNewScreen的函數(shù)原型如下:</

67、p><p>  U8 EntryNewScreen(U16 newscrnID, FuncPtr newExitHandler, FuncPtr newEntryHandler, void *peerBuf)</p><p>  其中第一個(gè)參數(shù)表明新顯示屏幕的ID,每個(gè)屏幕都有一個(gè)全局唯一的序號(hào),這樣方便系統(tǒng)管理;第二個(gè)參數(shù)指明屏幕的退出函數(shù),系統(tǒng)在強(qiáng)制退出手機(jī)屏幕時(shí)會(huì)自動(dòng)調(diào)用此函數(shù),因此可以

68、在其中做一些資源釋放等方面的工作,如果實(shí)在沒事可做就可以將此函數(shù)設(shè)為空;第三個(gè)參數(shù)指屏幕的入口函數(shù),只有傳入此函數(shù),系統(tǒng)才會(huì)將屏幕自動(dòng)加入歷史;第四個(gè)參數(shù)暫時(shí)不使用。</p><p>  圖3.2對(duì)屏幕歷史管理機(jī)制做了詳細(xì)描述:EntryNewScreen函數(shù)先將上次執(zhí)行EntryNewScreen時(shí)所記錄的currExitScrnID,currEntryFuncPtr以history結(jié)構(gòu)為載體記錄入棧;然后執(zhí)行

69、了記錄中的currExitFuncPtr;最后將本窗口的scrnID、exitFuncPtr、entryFuncPtr分別記錄入全局變量currExitScrnID、currExitFuncPtr和currEntryFuncPtr,留待下次調(diào)用EntryNewScreen時(shí)使用。在退出本窗口的時(shí)候通過GoBackHistory出棧,返回到本窗口的父窗口。[28]</p><p>  3.3 用戶界面設(shè)計(jì)的分析&

70、lt;/p><p>  由MTK平臺(tái)架構(gòu)圖3.1可知,用戶界面UI模塊分為WGUI、GUI和GDI。WGUI、GUI、GDI為MTK的畫圖核心層,前者是對(duì)后者的封裝。</p><p>  窗口圖形用戶界面WGUI包括四部分:Category Screens、Controls、Draw Manager、TouchScreen。</p><p>  Category Scr

71、eens:MTK平臺(tái)提供幾百個(gè)Category Screens供程序員調(diào)用,程序員只需調(diào)用ShowCategoryXXXScreen函數(shù)即可。但是內(nèi)部畫屏機(jī)制是個(gè)復(fù)雜的過程,一般都用dm_redraw_category_screen函數(shù)畫屏,它根據(jù)獲得的該窗體所包含的組件及它們的屬性,再根據(jù)組件的類型和屬性,調(diào)用不同的接口,逐一繪制各組件,包括屏幕背景、菜單項(xiàng)、狀態(tài)圖標(biāo)、輸入框、左右軟件、Title等各種屏幕中的組成控件。</p&

72、gt;<p>  Controls:包括Category的各種組件,包括列表菜單組件、矩陣菜單組件、單行輸入組件、多行輸入組件、撥號(hào)輸入框組件、Title組件、左右軟件組件、狀態(tài)欄組件、秒表組件、基本圖形組件等。</p><p>  Draw Manager是根據(jù)不同的screen id和category id來確定如何組織各組件,畫出手機(jī)需要顯示的屏幕。Draw Manager繪圖機(jī)制如圖3.3所

73、示:</p><p>  由圖3.3可知,從Application Layer中的具體功能模塊對(duì)應(yīng)的Screen,到Screen里面用到的具體的Category,再到draw_manager來控制繪制Category可以看出:draw_manager是整個(gè)WGUI繪圖的控制器。繪制Category實(shí)際上可以看作是繪制輪廓和繪制組件兩個(gè)部分。首先將窗體的輪廓以及窗體的各個(gè)組件的坐標(biāo)、高度、寬度等屬性用變量記錄,結(jié)合

74、提供的資源,通過dm_get_coordinates()這個(gè)函數(shù)映射到具體的繪制過程中,最終完成Category的繪制。</p><p>  TouchScreen主要根據(jù)觸摸事件管理器繪制手機(jī)界面,TouchScreen觸摸事件繪圖機(jī)制如圖3.4所示:</p><p>  由圖3.4可知,手機(jī)有幾種觸摸事件:觸摸筆按下、抬起、移動(dòng)、長(zhǎng)按、重復(fù)按下等。當(dāng)觸摸筆與屏幕接觸時(shí),Driver E

75、vent Manager會(huì)從硬件驅(qū)動(dòng)判斷出手機(jī)有觸摸事件發(fā)生,Touch Event Manager進(jìn)一步判斷出是觸摸筆的哪種操作,并調(diào)用對(duì)應(yīng)的事件處理函數(shù),Draw Manager根據(jù)觸摸點(diǎn)的處理結(jié)果利用Draw Manager resources提供的資源在相應(yīng)的位置上畫圖,做圖方法跟WGUI畫各種組件類似。</p><p>  圖形用戶界面GUI主要畫各種控件,控件依賴于窗口存在,可以完成某種特定功能。GU

76、I提供的控件包括:菜單控件、菜單項(xiàng)控件、按鈕控件、進(jìn)度條控件、滾動(dòng)條控件、編輯框控件、文本框控件、圖形控件、標(biāo)點(diǎn)符號(hào)控件、軟件盤控件和日歷控件等,還包括手機(jī)上的各種字符串和各種填充區(qū)域方式等。MMI的各控件和窗口之間通過回調(diào)函數(shù)實(shí)現(xiàn)通信。GUI畫各種控件也是用draw_manager來控制的,因此所有窗口控件的實(shí)際繪制過程都是通過dm_redraw_category_screen()這個(gè)函數(shù)來實(shí)現(xiàn)的。這個(gè)函數(shù)可以幫助繪制一些比較特殊的自

77、定義的組件,如果使用的組件已經(jīng)包含在這個(gè)函數(shù)里,就直接使用定義好的繪制方法。</p><p>  圖形設(shè)備接口GDI,主要介紹了手機(jī)屏幕上圖層的重疊機(jī)制;切片顯示機(jī)制;繪制點(diǎn)、線、矩形等基本圖形的方法;在屏幕上顯示靜態(tài)、動(dòng)態(tài)圖片的方法;顯示字符串的方法等。了解這些機(jī)制后,根據(jù)所需更靈活的改動(dòng)代碼,設(shè)計(jì)出更美觀的手機(jī)界面。GDI中層主要有兩個(gè)作用:緩沖和特效。</p><p>  一、緩沖。

78、在某些頻繁更新的界面中,如果某些顯示元素一直不變化,就可以將這些元素提取出來畫到一個(gè)模擬的屏幕中,當(dāng)界面需要更新時(shí),只需將要刷新的元素更新到另外一個(gè)模擬屏幕,而后將兩個(gè)模擬屏幕合并到真正的屏幕上,這樣做就省掉了不變?cè)氐闹禺嫊r(shí)間,從而減輕了系統(tǒng)負(fù)擔(dān)及加速畫面更新,把這樣的模擬屏幕叫做層,也可以說,層就是屏幕的緩沖空間。</p><p>  二、特效。因?yàn)閷拥母袷胶?jiǎn)單統(tǒng)一,而且一般的圖形系統(tǒng)中都會(huì)用硬件來加速層合并

79、,所以在層合并時(shí)加上些特效會(huì)很方便并且實(shí)現(xiàn)極快。系統(tǒng)中的特效有通透、半透明、剪切等。</p><p>  3.4 本地?cái)?shù)據(jù)模塊</p><p>  由MTK軟件架構(gòu)圖3.1可知,本地?cái)?shù)據(jù)模塊包括三部分:資源、FAT、NVRAM。資源主要用來生成菜單、顯示圖片、顯示字符串;文件系統(tǒng)存儲(chǔ)文件格式為FAT的數(shù)據(jù),在系統(tǒng)運(yùn)行時(shí)從文件系統(tǒng)中動(dòng)態(tài)獲取數(shù)據(jù);NVRAM用來存儲(chǔ)系統(tǒng)的默認(rèn)值。</p

80、><p>  UI的繪制除了各種繪圖技巧和繪圖機(jī)制外,離不開資源的支持。UI模塊資源包括以下幾種:圖片資源、字符串資源、菜單資源、字型資源、音頻資源、主題資源、包括音樂播放器、照相機(jī)、收音機(jī)、錄像器、世界地圖等在內(nèi)的應(yīng)用功能資源、其他資源等,下面分別介紹。</p><p>  圖片資源:手機(jī)的每個(gè)界面幾乎都由圖片組成,像菜單項(xiàng)前面的小圖標(biāo)、手機(jī)狀態(tài)小圖標(biāo)、各種消息彈出框里的圖片、撥號(hào)屏、音樂播

81、放器、游戲等,這些顯然都是圖片在手機(jī)界面上的顯示。</p><p>  字符串資源:在手機(jī)界面上看到的字符串,幾乎都是來自字符串資源,像每個(gè)菜單項(xiàng)的文字描述、彈出的文字消息提示等都是字符串。</p><p>  菜單資源:即菜單在資源文件中的添加過程,在進(jìn)入新屏?xí)r,只需調(diào)用相關(guān)的函數(shù)獲得菜單項(xiàng)數(shù)、菜單圖片和菜單項(xiàng)的文字描述即可畫出菜單,每個(gè)菜單項(xiàng)對(duì)應(yīng)唯一的ID。在代碼里面用宏ADD_APP

82、LICATION_MENUITEM裝載菜單資源。在MTK平臺(tái)中,每個(gè)菜單項(xiàng)的行為都由菜單項(xiàng)自己控制,系統(tǒng)所能做的只是在高亮此項(xiàng)時(shí)激活菜單事件。在開機(jī)初始化時(shí),菜單項(xiàng)被注冊(cè),告知系統(tǒng)將由哪個(gè)函數(shù)被激活,SetHiliteHandler就是把菜單項(xiàng)和對(duì)應(yīng)的處理函數(shù)關(guān)聯(lián)起來。</p><p>  字型資源:在MTK平臺(tái)中定義了幾種型號(hào)的字型,有小號(hào)字體、中號(hào)字體、大號(hào)字體、副屏幕字體、撥號(hào)屏字體、虛擬鍵盤字體等,但是程

83、序員也可以自定義需要的字體型號(hào)。</p><p>  音頻資源:指手機(jī)系統(tǒng)中自帶的聲音,像按鍵聲、撥打電話聲、來短信聲、彈出錯(cuò)誤提示框聲音、來電聲、鬧鈴聲、開關(guān)機(jī)鈴聲等,程序員也可以根據(jù)所需添加鈴聲。</p><p>  主題資源:指手機(jī)自帶的幾個(gè)主題,大部分是以背景為基礎(chǔ),不同的手機(jī)背景圖片顯示不同的風(fēng)格。</p><p>  應(yīng)用功能資源:像音樂播放器、照相機(jī)、

84、收音機(jī)、錄像器、世界地圖等都有單獨(dú)的資源文件,記錄各個(gè)屏幕圖片的大小和坐標(biāo)等信息,其中有些資源文件可以通過MCT工具生成。</p><p>  3.5 輸入事件處理機(jī)制</p><p>  系統(tǒng)的輸入事件包括:消息、鍵盤、觸摸屏、菜單事件等。消息輸入事件分兩種:協(xié)議棧里面已經(jīng)注冊(cè)消息事件和中斷消息事件,分別用SetProtocolEventHandler和SetInterruptEven

85、tHandler注冊(cè)事件;鍵盤輸入事件指手機(jī)鍵盤上每個(gè)按鍵對(duì)應(yīng)的處理事件,用SetKeyHandler注冊(cè)事件;觸摸屏輸入事件指對(duì)觸摸屏的按下、抬起、移動(dòng)、長(zhǎng)按、重復(fù)按下等動(dòng)作注冊(cè)的事件,用mmi_pen_register_xxx_handler注冊(cè)事件,xxx代表各種動(dòng)作;菜單輸入事件指高亮該菜單后,按下確認(rèn)鍵后的操作,用SetHiliteHandler和SetHintHandler注冊(cè)事件。消息是用戶不可見的系統(tǒng)內(nèi)部機(jī)制,而鍵盤、觸

86、摸屏、菜單事件是用戶可見的,所以總體可以分兩類:消息機(jī)制和事件處理機(jī)制。</p><p>  3.5.1 消息機(jī)制</p><p>  由MTK軟件架構(gòu)圖3.1可知,MMI和L4C之間是用消息隊(duì)列來實(shí)現(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:消息來自哪個(gè)模塊,一般為MOD_MMI,如果是AT命令,則為MOD_ATL。</p><p>  oslDestId:消息發(fā)送到哪個(gè)模塊,一般為MOD_L4C。</p><p>  oslSa

88、pId:服務(wù)訪問點(diǎn)。</p><p>  oslMsgId:協(xié)議棧里的消息ID,一般是請(qǐng)求消息和響應(yīng)消息成對(duì)出現(xiàn),例子中請(qǐng)求消息為PRT_USSDVSS_REQ,響應(yīng)消息為PRT_USSDVSS_RSP;而中斷消息是L4收到信號(hào)主動(dòng)上報(bào)的,不是消息的響應(yīng),因此不是成對(duì)出現(xiàn),像來電消息為PRT_INCOMINGCALL_EVENT。以PRT開頭的消息為MMI層使用的消息,它們?cè)贚4層也都對(duì)應(yīng)一個(gè)以MSG_ID開頭的

89、消息,且消息ID唯一,主動(dòng)上報(bào)的消息大部分以IND結(jié)尾,消息的上下層對(duì)應(yīng)關(guān)系用宏定義實(shí)現(xiàn)。MMI層和L4層在各自內(nèi)部都有自己的消息,這樣將軟件系統(tǒng)劃分成模塊,做到了高內(nèi)聚、低耦合,提高了模塊的獨(dú)立性,為設(shè)計(jì)高質(zhì)量的軟件結(jié)構(gòu)奠定基礎(chǔ)。OslMsgSendExtQueue只管發(fā)送消息,并不關(guān)心目的對(duì)象如何接收消息,也不用關(guān)心具體的消息響應(yīng)過程;同樣,消息接收者也不需要考慮消息的來源,而只需要對(duì)接收到的消息進(jìn)行響應(yīng)即可。因此消息產(chǎn)生后,究竟如

90、何傳遞,會(huì)引起什么樣的過程來響應(yīng),是由管理消息的部件來決定的,對(duì)消息的發(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里面收到消息時(shí),消息管理機(jī)制會(huì)傳到MMI,此時(shí)執(zhí)行用SetProtocolEventHandler((PsFuncPtr) callBack, PRT_USSDVSS_RSP)注冊(cè)的對(duì)應(yīng)的回調(diào)函數(shù),callBack是與消息對(duì)應(yīng)的回調(diào)函數(shù)。</p><p>  在消息的發(fā)送和響應(yīng)過程中,L4根據(jù)

92、上層各個(gè)模塊把消息也分塊管理,由圖3.6可以看出,除了MMI發(fā)送的消息之外,用戶可以用AT命令擴(kuò)展MMI模塊,定義一套管理SIM2卡的消息,用系統(tǒng)提供的函數(shù)發(fā)送消息。消息響應(yīng)時(shí),也是根據(jù)消息類型分成AT命令模塊和MMI模塊兩種消息處理。圖3.6中各個(gè)模塊的意義和作用如下:</p><p>  Remote MMI(AT):用AT命令實(shí)現(xiàn)與協(xié)議棧通信的MMI。比如在PC機(jī)上測(cè)試AT命令的收發(fā)和響應(yīng)結(jié)果。</p

93、><p>  MMI:人機(jī)界面,主要負(fù)責(zé)和用戶的交互。除了通話、短信、電話本等基本功能的界面外,像游戲、音樂播放器、照相機(jī)等多彩的界面也都屬于人機(jī)界面。程序員一般在MMI層上對(duì)代碼的改動(dòng)最大,以更好的滿足用戶需求。</p><p>  ATCI:AT命令解釋程序,根據(jù)AT命令的編碼規(guī)則編寫能完成用戶需求功能的代碼。</p><p>  L4:MMI/AT與協(xié)議棧的適配層

94、。在L4上,代碼改動(dòng)量較小,L4層以下代碼幾乎對(duì)程序員是透明的。</p><p>  L4A:上層函數(shù)調(diào)用的適配器。</p><p>  L4C:L4的控制器,把L4的功能函數(shù)分模塊管理,把接收到的消息也按模塊劃分成如圖3.6所示的模塊。</p><p>  UEM:用戶設(shè)備模塊,用于基礎(chǔ)的設(shè)備驅(qū)動(dòng)程序,像鍵盤,LED,GPIO等。</p><p

95、>  PHB:電話本管理模塊,包括電話本的初始化、添加、刪除、查找等功能。</p><p>  SMU:SIM卡的安全管理。</p><p>  CSM:通話服務(wù)管理,包括電話的接通、掛斷、轉(zhuǎn)接、掛起等基本功能。</p><p>  RAC:寄存器訪問控制。</p><p>  SMSAL:短信應(yīng)用層,包括短信的存儲(chǔ)、收發(fā)、刪除、小區(qū)廣

96、播等。</p><p>  TCM:終端管理,與PPP/TCPIP等的接口。</p><p>  ENG:記錄消息的功能模塊。</p><p>  Drivers:硬件驅(qū)動(dòng),指與手機(jī)相關(guān)的外設(shè)驅(qū)動(dòng)。驅(qū)動(dòng)程序包括鍵盤、電源管理、LCD、串口、USB、射頻驅(qū)動(dòng)等,對(duì)芯片硬件的某個(gè)部分做擴(kuò)展就要開發(fā)其相應(yīng)的驅(qū)動(dòng)程序。</p><p>  PS:協(xié)議

97、棧是手機(jī)軟件最復(fù)雜的部分,它和基帶處理芯片的設(shè)計(jì)密切相關(guān)。只有具備芯片設(shè)計(jì)能力的公司才能開發(fā)協(xié)議棧,協(xié)議棧會(huì)使用基帶處理芯片的所有資源,按照協(xié)議規(guī)則解析消息。</p><p>  3.5.2 事件處理機(jī)制</p><p>  手機(jī)鍵盤雖然模樣多變,但其按鍵功能基本上固定,手機(jī)系統(tǒng)內(nèi)部給每種功能的按鍵定義一個(gè)代碼,不管鍵盤外觀及布局如何改變,只要按鍵功能不變,其代碼就不必改變。如果有新功能

98、按鍵出現(xiàn),就為其增加一個(gè)新的代碼。按鍵的常用操作方式有:按下、放開、長(zhǎng)按、重復(fù)等。一般用SetKeyHandler(FuncPtr funcPtr, U16 keyCode, U16 keyType)函數(shù)為某個(gè)按鍵設(shè)置響應(yīng)函數(shù),第一個(gè)參數(shù)為響應(yīng)函數(shù)地址,第二個(gè)參數(shù)為按鍵代碼,第三個(gè)參數(shù)為按鍵操作方式。源代碼中有一張表,用來記錄鍵盤操作和它們對(duì)應(yīng)的處理函數(shù),當(dāng)有表中按鍵操作時(shí),就會(huì)執(zhí)行按鍵注冊(cè)的處理函數(shù)。</p><p

99、>  觸摸屏的操作簡(jiǎn)單、自然、方便,更貼近畫面顯示,也更符合用戶的使用習(xí)慣。觸摸屏的基本操作有:點(diǎn)下、放開、移動(dòng)、長(zhǎng)按、重復(fù)等。驅(qū)動(dòng)收到硬件通知后,先判斷是哪種操作,然后會(huì)立即從硬件讀取觸摸筆的當(dāng)前坐標(biāo),并將操作方式與觸摸筆坐標(biāo)一起保存起來,通知MMI盡快處理該操作。一般用mmi_pen_register_xxx_handler注冊(cè)觸摸屏事件,xxx表示操作方式。源代碼中有一張表,用來記錄觸摸操作和它們對(duì)應(yīng)的處理函數(shù),當(dāng)有表中觸摸

100、操作發(fā)生時(shí),就會(huì)執(zhí)行相應(yīng)的處理函數(shù)。</p><p>  手機(jī)菜單由菜單項(xiàng)組成,每個(gè)菜單項(xiàng)都有對(duì)應(yīng)的Hilite和Hint注冊(cè)事件。</p><p>  用SetHiliteHandler(U16 itemid, FuncPtr hiliteFuncPtr)設(shè)置菜單項(xiàng)的高亮事件,itemid為菜單ID,hiliteFuncPtr為高亮事件,系統(tǒng)中有記錄菜單和其注冊(cè)事件的表,語(yǔ)句maxHil

101、iteInfo[itemid].entryFuncPtr = hiliteFuncPtr完成在表中添加菜單事件的功能,當(dāng)高亮該菜單項(xiàng)時(shí),就會(huì)執(zhí)行注冊(cè)的處理函數(shù)。</p><p>  用SetHintHandler(U16 itemid, FuncPtrShort hintFuncPtr)設(shè)置菜單項(xiàng)的提示函數(shù),itemid為菜單ID,hintFuncPtr為提示函數(shù),系統(tǒng)中在maxHiliteInfo表中同時(shí)注冊(cè)提

102、示函數(shù),語(yǔ)句maxHiliteInfo[itemid].hintFuncPtr = hintFuncPtr完成提示函數(shù)的注冊(cè),當(dāng)高亮該菜單項(xiàng)時(shí),會(huì)顯示提示信息,比如高亮到收件箱菜單項(xiàng)時(shí),會(huì)顯示收件箱的短信條數(shù)。</p><p><b>  3.6 任務(wù)</b></p><p>  在實(shí)時(shí)系統(tǒng)里,任務(wù)的概念和Windows里的進(jìn)程是一樣的,每個(gè)任務(wù)通過實(shí)時(shí)操作系統(tǒng)的調(diào)

103、度平均分享處理器。系統(tǒng)任務(wù)是用戶無法干預(yù)的,它的創(chuàng)建和銷毀都由系統(tǒng)來完成,同時(shí),系統(tǒng)也給用戶提供了接口,動(dòng)態(tài)的創(chuàng)建任務(wù)。MMI_task是所有任務(wù)里,用戶最為關(guān)心的任務(wù),因?yàn)锳pplication層的所有手機(jī)功能都在MMI_task中運(yùn)行。在用戶開機(jī)后,做完硬件相關(guān)的初始化后,就開始創(chuàng)建MMI_task,MMI_task有著強(qiáng)大的管理能力。[8]</p><p>  MMI_task是協(xié)議棧里的入口函數(shù),它從L4

104、或者中斷隊(duì)列里收到消息,除了提前處理超時(shí)消息、開機(jī)主動(dòng)報(bào)告、鬧鐘、USB接口等一些特殊消息之外,其余的都交予ProtocolEventHandler處理,不同的消息ID對(duì)應(yīng)不同的處理函數(shù),最終將處理結(jié)果傳給MMI,上層根據(jù)處理結(jié)果執(zhí)行對(duì)應(yīng)的處理函數(shù)。</p><p>  MMI和L4的通信:通過消息隊(duì)列收發(fā)消息實(shí)現(xiàn)通信,用OslMsgSendExtQueue發(fā)送消息,用OslReceiveMsgExtQ接收消息,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論