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