版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章緒論1.1介紹1.1.1背景3G最早在1985年國(guó)際電訊聯(lián)盟提出,當(dāng)時(shí)考慮到該系統(tǒng)可能在2000年左右進(jìn)入市場(chǎng),工作頻段在2000MHz,且最高業(yè)務(wù)速率為2000Kbps,故在1996年正式更名為IMT-2000(InternationalMobileTelecommunication-2000)。3G是一種能提供多種類型、高質(zhì)量多媒體業(yè)務(wù)的全球漫游移動(dòng)通信網(wǎng)絡(luò),能實(shí)現(xiàn)靜止2Mbps傳輸速度,中低速384Kbps,高速144Kbps速率的通信網(wǎng);但由于各國(guó)、各廠商的利益差異,產(chǎn)生目前三大主流技術(shù)標(biāo)準(zhǔn)WCDMA、CDMA2000和TD-SCDMA,隨著3GPP和3GPP2的標(biāo)準(zhǔn)化工作逐漸深入和趨向穩(wěn)定,ITU又將目光投向能提供更高無線傳輸速率和統(tǒng)一靈活的全I(xiàn)P網(wǎng)絡(luò)平臺(tái)的下下代移動(dòng)通信標(biāo)準(zhǔn),稱為Beyond3G。2007年3月,備受矚目的中移動(dòng)TD-SCDMA設(shè)備采購(gòu)招標(biāo)正式啟動(dòng)。中國(guó)移動(dòng)、中國(guó)電信和中國(guó)網(wǎng)通在北京、上海、天津、沈陽(yáng)、秦皇島、廈門、廣州、深圳、保定和青島等(含奧運(yùn)六個(gè)城市在內(nèi))十個(gè)城市大規(guī)模建網(wǎng)已經(jīng)拉開序幕,3G時(shí)代已經(jīng)到來了!TD-SCDMA終端市場(chǎng)已經(jīng)越來越清晰,當(dāng)今年10月份TD-SCDMA網(wǎng)絡(luò)建成后,對(duì)TD-SCDMA終端的采購(gòu)也隨即展開。淘這第一桶金,需要終端業(yè)務(wù)集成多,性能比較穩(wěn)定,通過了SMS、MMS、WAP、JAVA、流媒體、VT等多項(xiàng)業(yè)務(wù)功能測(cè)試。雖然語(yǔ)音通信仍然是無線手機(jī)最主要的功能,但消費(fèi)者的需求和3G網(wǎng)絡(luò)的日益成熟,把語(yǔ)音通信和數(shù)據(jù)傳輸兩者結(jié)合起來,用一臺(tái)3G手機(jī)為消費(fèi)者提供無以倫比的網(wǎng)上娛樂活動(dòng),進(jìn)行無中斷的通訊和安全的交易活動(dòng)的。這樣的手機(jī)將會(huì)占很大的市場(chǎng)份額。在這樣的背景下,我實(shí)習(xí)所在公司也正在著手3G手機(jī)的設(shè)計(jì)制造,并針對(duì)目前開發(fā)3G手機(jī)需要解決的問題,根據(jù)大唐移動(dòng)的技術(shù)平臺(tái)提出了一種解決方案,構(gòu)建了基于ANERA平臺(tái)的TD-SCDMA制式3G手機(jī)的軟硬件平臺(tái)。本人的工作主要是負(fù)責(zé)3G手機(jī)數(shù)字基帶部分外設(shè)的電路設(shè)計(jì)以及底層驅(qū)動(dòng)的開發(fā),其他硬件設(shè)計(jì)如RF部分、模擬基帶部分、應(yīng)用軟件有另外的同事們共同完成。因此本文結(jié)合自己的工作,主要介紹了3G手機(jī)的數(shù)字基帶部分外設(shè)電路的設(shè)計(jì)和驅(qū)動(dòng)軟件的設(shè)計(jì),也簡(jiǎn)要地介紹了整個(gè)手機(jī)的軟硬件的總體技術(shù)。1.1.2本文的工作和貢獻(xiàn)本文以設(shè)計(jì)一個(gè)除了能完成高質(zhì)量的日常通信外,還能處理圖像、音樂、視頻流等多種媒體形式,提供包括網(wǎng)頁(yè)瀏覽、電話會(huì)議、電子商務(wù)等多種信息服務(wù)進(jìn)行多媒體通信的3G手機(jī)為目的,采用系統(tǒng)工程和軟件工程的原理,將移動(dòng)通信、嵌入式系統(tǒng)、操作系統(tǒng)、GUI、TD-SCDMA等技術(shù)手段相結(jié)合,進(jìn)行技能新研究,以形成一個(gè)綜合的技術(shù)體現(xiàn),構(gòu)建一個(gè)3G手機(jī)的硬件平臺(tái)和驅(qū)動(dòng)軟件。因此本文主要有以下工作和貢獻(xiàn)。3G手機(jī)的系統(tǒng)設(shè)計(jì):包括系統(tǒng)目標(biāo)、軟件\硬件模塊的規(guī)劃、和功能設(shè)計(jì)等3G手機(jī)數(shù)字信號(hào)基帶處理子系統(tǒng)設(shè)計(jì):存儲(chǔ)系統(tǒng)、人機(jī)接口部分、外設(shè)擴(kuò)展等。驅(qū)動(dòng)軟件平臺(tái)的設(shè)計(jì)與模塊化編程。基于3G手機(jī)的硬件驅(qū)動(dòng)實(shí)例:針對(duì)硬件平臺(tái)實(shí)現(xiàn)了LCD提出了手機(jī)的軟硬件測(cè)試方案,進(jìn)行了系統(tǒng)的軟硬件測(cè)試??偨Y(jié)了實(shí)現(xiàn)情況,以及存在的一些缺陷及今后的改進(jìn)方向。1.2TD-SCDMA的概述TD-SCDMA的中文含義為時(shí)分同步碼分多址接入,該項(xiàng)通信技術(shù)也屬于一種無線通信的技術(shù)標(biāo)準(zhǔn),它是由中國(guó)第一次提出并在此無線傳輸技術(shù)(RTT)的基礎(chǔ)上與國(guó)際合作,完成了TD-SCDMA標(biāo)準(zhǔn),成為CDMATDD標(biāo)準(zhǔn)的一員的,這是中國(guó)移動(dòng)通信界的一次創(chuàng)舉,也是中國(guó)對(duì)第三代移動(dòng)通信發(fā)展的貢獻(xiàn)。在與歐洲、美國(guó)各自提出的3G標(biāo)準(zhǔn)的競(jìng)爭(zhēng)中,中國(guó)提出的TD-SCDMA已正式成為全球3G標(biāo)準(zhǔn)之一,這標(biāo)志著中國(guó)在移動(dòng)通信領(lǐng)域已經(jīng)進(jìn)入世界領(lǐng)先之列。該方案的主要技術(shù)集中在大唐公司手中,它的設(shè)計(jì)參照了TDD(時(shí)分雙工)在不成對(duì)的頻帶上的時(shí)域模式。TD―SCDMA的無線傳輸方案靈活地綜合了FDMA,TDMA和CDMA等基本傳輸方法。通過與聯(lián)合檢測(cè)相結(jié)合,它在傳輸容量方面表現(xiàn)非凡。通過引進(jìn)智能天線,容量還可以進(jìn)一步提高。智能天線憑借其定向性降低了小區(qū)間頻率復(fù)用所產(chǎn)生的干擾,并通過更高的頻率復(fù)用率來提供更高的話務(wù)量?;诟叨鹊臉I(yè)務(wù)靈活性,TD―SCDMA無線網(wǎng)絡(luò)可以通過無線網(wǎng)絡(luò)控制器(RNC)連接到交換網(wǎng)絡(luò),如同三代移動(dòng)通信中對(duì)電路和包交換業(yè)務(wù)所定義的那樣。在最終的版本里,計(jì)劃讓TD―SCDMA無線網(wǎng)絡(luò)與INTERNET直接相連。TD-SCDMA所呈現(xiàn)的先進(jìn)的移動(dòng)無線系統(tǒng)是針對(duì)所有無線環(huán)境下對(duì)稱和非對(duì)稱的3G業(yè)務(wù)所設(shè)計(jì)的,它運(yùn)行在不成對(duì)的射頻頻譜上。TD-SCDMA傳輸方向的時(shí)域自適應(yīng)資源分配可取得獨(dú)立于對(duì)稱業(yè)務(wù)負(fù)載關(guān)系的頻譜分配的最佳利用率。因此,TD-SCDMA通過最佳自適應(yīng)資源的分配和最佳頻譜效率,可支持速率從8kbps到2Mbps的語(yǔ)音、互聯(lián)網(wǎng)等所有的3G業(yè)務(wù)。1.43G手機(jī)的特點(diǎn)及發(fā)展3G手機(jī)就是第三代(TheThirdGeneration)手機(jī)的簡(jiǎn)稱,它與前兩代手機(jī)的區(qū)別在于語(yǔ)音通信和多媒體通信緊密結(jié)合,集成圖像、音樂、網(wǎng)頁(yè)瀏覽、電話會(huì)議以及其它一些信息服務(wù)等增值服務(wù)。3G手機(jī)完全是通信業(yè)和計(jì)算機(jī)工業(yè)相融合的產(chǎn)物,和此前的手機(jī)相比差別實(shí)在是太大了,因此越來越多的人開始稱呼這類新的移動(dòng)通信產(chǎn)品為"個(gè)人通信終端"。即使是對(duì)通信業(yè)最外行的人也可從外形上輕易地判斷出一臺(tái)手機(jī)是否是"第三代":大多數(shù)的3G手機(jī)都有一個(gè)超大的彩色顯示屏——往往還是觸摸式的。3G手機(jī)的名稱繁多,國(guó)際電聯(lián)稱之為"IMT-2000",歐洲的電信業(yè)巨頭們則稱其為"UMTS",3G手機(jī)可能應(yīng)用的技術(shù)標(biāo)準(zhǔn)有WCDMA、CDMA-2000、TD-SCDMA等等。極高的數(shù)據(jù)傳輸速度是3G手機(jī)具備強(qiáng)大功能的基礎(chǔ),目前的GSM移動(dòng)通信網(wǎng)的傳輸速度為每秒9.6K字節(jié),而第三代手機(jī)最終可能達(dá)到的數(shù)據(jù)傳輸速度將高達(dá)每秒2兆字節(jié)。3G手機(jī)除了能完成高質(zhì)量的日常通信外,還能進(jìn)行多媒體通信。用戶可以在3G手機(jī)的觸摸顯示屏上直接寫字、繪圖,并將其傳送給另一臺(tái)手機(jī),而所需時(shí)間可能不到一秒。當(dāng)然,也可以將這些信息傳送給一臺(tái)電腦,或從電腦中下載某些信息;用戶可以用3G手機(jī)直接上網(wǎng),收發(fā)電子郵件、瀏覽網(wǎng)頁(yè)、聯(lián)機(jī)游戲或收看在線視頻;有不少型號(hào)的3G手機(jī)還自帶功能強(qiáng)大的攝像頭,使用戶可以利用手機(jī)進(jìn)行視頻電話會(huì)議。第2章3G手機(jī)平臺(tái)總體概述2.13G手機(jī)系統(tǒng)架構(gòu)開發(fā)原則雖然語(yǔ)音通信仍然是無線手機(jī)最主要的功能,但消費(fèi)者的需求和3G網(wǎng)絡(luò)的日益成熟,為設(shè)計(jì)師們開辟了一條新蹊徑:把無線電子產(chǎn)品和消費(fèi)電子產(chǎn)品結(jié)合起來。具有多媒體功能的高性能產(chǎn)品將利用3G網(wǎng)絡(luò),把語(yǔ)音通信和數(shù)據(jù)傳輸兩者結(jié)合起來,用一臺(tái)無線設(shè)備為消費(fèi)者提供無以倫比的網(wǎng)上娛樂活動(dòng),進(jìn)行無中斷的通訊和安全的交易活動(dòng)。但是,就目前而言,要把功能豐富、無線電子產(chǎn)品和消費(fèi)電子產(chǎn)品兩者結(jié)合起來的手機(jī)推向市場(chǎng),手機(jī)開發(fā)須規(guī)劃良好的系統(tǒng)架構(gòu)來降低設(shè)計(jì)上的復(fù)雜度。為達(dá)成這項(xiàng)要求,已出現(xiàn)不少的晶片架構(gòu)及系統(tǒng)作法,但仍有一些設(shè)計(jì)上的共識(shí),包括專業(yè)分工、開放性、標(biāo)準(zhǔn)化、階層化和提高可再利用性及定制彈性等等原則。以下介紹幾項(xiàng)開發(fā)原則:1.專業(yè)分工在專業(yè)分工上,最明顯的作法即是采取通信與應(yīng)用分離的平行架構(gòu),由基頻處理器專心處理通信數(shù)據(jù),其他的多媒體等應(yīng)用功能則交給應(yīng)用處理器來處理。這是一種獨(dú)立于數(shù)據(jù)機(jī)的處理架構(gòu),一方面讓應(yīng)用處理器能充分發(fā)揮實(shí)時(shí)操作系統(tǒng)的應(yīng)用能力,另一方面也能確保各種服務(wù)與應(yīng)用不會(huì)受到無線技術(shù)的影響,進(jìn)而賦與產(chǎn)品更高的可攜性。在此架構(gòu)下,基頻元件能隨GSM/GPRS/WCDMA/HSDPA等規(guī)格的演進(jìn)而發(fā)展,應(yīng)用元件也能因應(yīng)視頻、音頻、繪圖等需求的改變而擴(kuò)充其功能,例如支持高達(dá)每秒30訊框的VGA解碼和H.264/VC-1視頻編碼、VGA彩色顯示、Q-VGA輔助顯示以及多達(dá)5M畫素的數(shù)字照相機(jī)功能、2D/3D圖形、3D聲音和立體聲喇叭等。2.再利用性就再利用性來說,將通過驗(yàn)證合格、可用于生產(chǎn)的通信處理即時(shí)軟件獨(dú)立出來,就不會(huì)受到應(yīng)用功能的限制,而能重覆且直接的再次被使用。這樣做的好處很明顯,軟件開發(fā)一向是影響手機(jī)上市時(shí)間一大主因,往往為了小部分軟件的更動(dòng),就得對(duì)整個(gè)系統(tǒng)進(jìn)行重新驗(yàn)證和測(cè)試的工作,相當(dāng)耗時(shí)。在獨(dú)立出成熟的程式碼后,可以將設(shè)計(jì)、驗(yàn)證及測(cè)試上的復(fù)雜度降低,大幅縮短開發(fā)的時(shí)間。3.階層化溝通介面但如何做好通信與應(yīng)用兩者之間的溝通,仍是設(shè)計(jì)上的一大挑戰(zhàn)。前面提到開放性架構(gòu)中基于硬件抽象的介面作法,此架構(gòu)同時(shí)提供上層和下層的觀點(diǎn),上層的觀點(diǎn)提供應(yīng)用軟件開發(fā)者一套針對(duì)特定作業(yè)系統(tǒng)的統(tǒng)一軟件介面,并對(duì)底層的處理器設(shè)計(jì)加以抽象化;底層觀點(diǎn)是針對(duì)LCD控制器、影像感測(cè)器或照相機(jī)等一般性應(yīng)用的一組標(biāo)準(zhǔn)硬件介面。此架構(gòu)因採(cǎi)用標(biāo)準(zhǔn)化的介面,因此與系統(tǒng)中個(gè)別單元的技術(shù)或架構(gòu)作法無關(guān),只需透過一組一致性的API來進(jìn)行上層作業(yè)系統(tǒng)與下層硬件的溝通。如此一來,應(yīng)用軟件從底層的平臺(tái)架構(gòu)給分離出來,開發(fā)者只需從上層架構(gòu)的觀點(diǎn)對(duì)應(yīng)用程式做抽象層級(jí)的開發(fā),而不用對(duì)底層的實(shí)體平臺(tái)做直接的呼叫,這讓產(chǎn)品能更快速的開發(fā),在平臺(tái)更新時(shí)也不需犧牲效能或4.硬件平臺(tái)架構(gòu)在智能型手機(jī)的硬件架構(gòu)中,應(yīng)用處理器已是其靈魂的中心。目前市場(chǎng)上接受度最高的應(yīng)用處理器核心,無疑當(dāng)屬ARM核心,它可以說是產(chǎn)業(yè)標(biāo)準(zhǔn)的手持設(shè)備處理器核心。除了採(cǎi)用ARM主處理器外,還搭配采用智能加速器來分擔(dān)應(yīng)付所有在音頻和視頻上的前、后處理任務(wù),讓這顆主處理器能長(zhǎng)期處于省電模式下,并更專注于適合它來發(fā)揮的控制工作。隨著手機(jī)應(yīng)用需求的增加,未來可能有更多的專屬加速器將出現(xiàn)在硬件平臺(tái)中,以滿足3D繪圖、資料加密和生物辨識(shí)等服務(wù)或應(yīng)用功能。此外,由于移動(dòng)設(shè)備內(nèi)部的資料傳輸日趨復(fù)雜而頻繁,移動(dòng)平臺(tái)中的各個(gè)硬件單元也得採(cǎi)用理想的互連技術(shù)來溝通。5.操作系統(tǒng)手機(jī)軟件系統(tǒng)涵蓋了操作系統(tǒng)、通信協(xié)定、多媒體處理、API、Driver、UI等開發(fā),這些在手機(jī)開發(fā)上的重要性不斷提升,對(duì)于手機(jī)來說,更是如此。就核心的操作系統(tǒng)來說,在語(yǔ)音手機(jī)或功能手機(jī)中,仍可到專用的實(shí)時(shí)操作系統(tǒng)(RTOS)。2.2系統(tǒng)的總體結(jié)構(gòu)APP/APP/MMI(應(yīng)用程序、人機(jī)接口開發(fā))PlatformAPIMMIFrameworkMobilesEnableMecoDeviceMangerLocalAPPEnablersDataServicesEnableGUIAOSBSPDriverHardwareDesign圖2-13G手機(jī)總體結(jié)構(gòu)3G手機(jī)系統(tǒng)的總體結(jié)構(gòu)見圖2-1,3G手機(jī)硬件平臺(tái)核心系統(tǒng)是維持3G手機(jī)平臺(tái)平臺(tái)工作的最小系統(tǒng),包括DBB、ABB和RF、存儲(chǔ)器系統(tǒng)以及少量的外圍維系部件〔如復(fù)位、時(shí)鐘電路等)組成。在硬件系統(tǒng)的基礎(chǔ)上,系統(tǒng)軟件通過AOS、GUI、MMIFramework、PlatformAPI構(gòu)成了一個(gè)基本的、穩(wěn)定的應(yīng)用編程框架,向下可以根據(jù)硬件參考設(shè)計(jì)定制BSP和Driver。2.3硬件平臺(tái)功能模塊的規(guī)劃目前電子產(chǎn)業(yè)的設(shè)計(jì)動(dòng)力,無疑將很大的一部分集中在移動(dòng)終端,在應(yīng)用上則帶動(dòng)了VoIP、email、簡(jiǎn)訊、JavaGame甚至是MobileTV等網(wǎng)路、廣播服務(wù)的出現(xiàn)。這對(duì)于移動(dòng)終端的設(shè)計(jì)都是新的挑戰(zhàn),本小節(jié)簡(jiǎn)要說明多媒體3G手機(jī)的硬件規(guī)劃。ABB子系統(tǒng)ABB子系統(tǒng)AUDIO電源管理基帶收發(fā)中斷信號(hào)串行接口DBB子系統(tǒng)數(shù)字基帶處理器AD6901存儲(chǔ)系統(tǒng)128Mbit×2norflash+64MbitSRAMARM7DSP運(yùn)行協(xié)議ARM/DSPJTAG等測(cè)試口KEYPADUSBIrDAVIBRATORCAMERAMIDILUART2UART1SIM外設(shè)接口FM串行通信接口人機(jī)接口提供CSPORT與DBB接口通信。觸發(fā)DBB中斷RF子系統(tǒng)TD-SCDMA模擬基帶上下行信號(hào)控制和時(shí)鐘信號(hào),自動(dòng)頻率校準(zhǔn)和溫度采樣信號(hào)提供系統(tǒng)數(shù)字和模擬電壓復(fù)位電路SD圖2-23G手機(jī)硬件平臺(tái)的總體結(jié)構(gòu)3G手機(jī)硬件平臺(tái)的總體結(jié)構(gòu)見圖2-2,隨著多媒體任務(wù)愈來愈繁重,單單依賴基頻已難以承受所有處理工作,因此應(yīng)用處理器的角色就因應(yīng)而生。將應(yīng)用處理功能從基頻中分離出來,在本系統(tǒng)的硬件設(shè)計(jì)分為DBB(數(shù)字基帶處理)+ABB(模擬基帶處理)+RF系統(tǒng)。DBB部分采用ARM+DSP雙核心架構(gòu),由ARM的RISC核心主要進(jìn)行控制工作,大量的信號(hào)加、解碼工作則交給DSP來執(zhí)行,主要實(shí)現(xiàn)數(shù)字基帶信號(hào)處理、協(xié)議棧、平臺(tái)應(yīng)用、外設(shè)管理等功能;ABB主要實(shí)現(xiàn)模擬基帶信號(hào)處理、PMU、充電、背光、VOICE、電源管理等功能。RF模塊主要包括TD-SCDMA模擬基帶上下行信號(hào),控制和時(shí)鐘信號(hào),自動(dòng)頻率校準(zhǔn)和溫度采樣信號(hào)等。2.4軟件系統(tǒng)模塊劃分如圖2-1,在3G手機(jī)軟件系統(tǒng)內(nèi)部實(shí)現(xiàn)了各種能力集,并且能在不影響3G手機(jī)軟件平臺(tái)編程框架的情況下,持續(xù)不斷的擴(kuò)展和升級(jí)這些能力集。所有能力集向上提供一套編程接口APIs,連同操作系統(tǒng)的接口APIs、GUI提供的接口APIs,共同構(gòu)成完整的PlatformAPI接口層。這使得應(yīng)用開發(fā)無需知道各種能力集的實(shí)現(xiàn)細(xì)節(jié),就可以通過PlatformAPI完成各種應(yīng)用程序的開發(fā)。操作系統(tǒng)模塊(AOS),基于優(yōu)先級(jí)的搶占式系統(tǒng),及一套豐富的系統(tǒng)服務(wù)集,有利于實(shí)時(shí)性需求苛刻的嵌入式應(yīng)用程序開發(fā)。該AOS采用組件式設(shè)計(jì),包括內(nèi)核組件,文件系統(tǒng)組件和網(wǎng)絡(luò)系統(tǒng)組件。形成一個(gè)Kernel、FS、NET的抽象層,保證上層軟件的無縫移植。GUI模塊,主要提供圖形抽象、輸入設(shè)備的管理、通用設(shè)施、窗口管理及消息機(jī)制、GDI函數(shù)、控件集等功能模塊,為應(yīng)用開發(fā)提供豐富GUI接口。MMIFramework模塊負(fù)責(zé)MMI框架的實(shí)現(xiàn),主要提供一種應(yīng)用管理機(jī)制和應(yīng)用執(zhí)行環(huán)境。包括了任務(wù)管理、消息分發(fā)機(jī)制、UI框架、國(guó)際化支持、主題管理、輸入法管理等功能。移動(dòng)業(yè)務(wù)能力集(MobileEnables)實(shí)現(xiàn)對(duì)高層協(xié)議棧的接口封裝,提供基本的電信業(yè)務(wù)、補(bǔ)充業(yè)務(wù)和承載業(yè)務(wù)能力。為MMI/APP應(yīng)用軟件、MeCo軟件以及各種系統(tǒng)維護(hù)應(yīng)用軟件(Daemons)提供實(shí)現(xiàn)的接口。本地應(yīng)用能力集(LocalEnables)負(fù)責(zé)提供各種終端本地應(yīng)用需要的能力,包括電話本、PIM、輸入法引擎、本地游戲等應(yīng)用的支撐能力,并向這類應(yīng)用提供開放的接口API。設(shè)備管理能力集(DeviceManagerEnables)實(shí)現(xiàn)對(duì)終端上各種設(shè)備的管理,并向應(yīng)用層提供統(tǒng)一的接口API,包括背光管理、電池電量管理、震動(dòng)管理、本地通信接口管理、多媒體設(shè)備管理等。數(shù)據(jù)業(yè)務(wù)能力集(DataServiceEnables)軟件平臺(tái)提供靈活的擴(kuò)展機(jī)制,可以方便地增加新的能力集(例如WAP、MMS、EMS、JAVA等)。第3章DBB子系統(tǒng)總體設(shè)計(jì)DBB子系統(tǒng)主要負(fù)責(zé)承載手機(jī)系統(tǒng)所有的軟件,包括整個(gè)通信協(xié)議軟件,操作系統(tǒng)和應(yīng)用軟件平臺(tái)。3.1需求分析主要實(shí)現(xiàn)數(shù)字基帶信號(hào)處理、協(xié)議棧、平臺(tái)應(yīng)用、外設(shè)管理等功能。一、數(shù)據(jù)處理功能系統(tǒng)對(duì)傳輸?shù)臄?shù)據(jù)需要進(jìn)行處理,如圖像、音頻的采集與解壓和壓縮,以及DSP數(shù)字基帶信號(hào)的處理、協(xié)議棧等。圖象輸出格式為JPEG格式,大小支持160×120、320×240、640×480等可調(diào);視頻格式為視頻上針對(duì)MPEG-4的編解碼提供30fps的CIF畫質(zhì)、24fps的VGA畫質(zhì)和384Kbit/s的傳輸率。二、數(shù)據(jù)存儲(chǔ)功能手機(jī)系統(tǒng)應(yīng)具有數(shù)據(jù)存儲(chǔ)的功能,如將拍照、攝像的保存等。三、數(shù)據(jù)通信功能包括系統(tǒng)與上位機(jī)之間的通信,以及系統(tǒng)與ABB、RF等子系統(tǒng)之間的數(shù)據(jù)傳輸。四、調(diào)試功能上位軟件可以對(duì)DBB子系統(tǒng)進(jìn)行在線調(diào)試功能。五、人機(jī)接口功能如鍵盤輸入、LCD輸出等。六、軟件驅(qū)動(dòng)等實(shí)現(xiàn)模塊化驅(qū)動(dòng),便于驅(qū)動(dòng)的移植。3.2DBB子系統(tǒng)總體設(shè)計(jì)DBB的總體結(jié)構(gòu)如下圖3-2所示,MONACOLCR數(shù)字基帶處理器AD6901包括ARM7TDMI處理器和BlackfinDSP處理器。兩個(gè)處理器共同分享外設(shè)和內(nèi)存等系統(tǒng)資源。靈活的中斷控制器允許大多數(shù)中斷映射到兩個(gè)處理器。AD6901的系統(tǒng)資源都映射到32位的地址空間,基本尋址單元為字節(jié)。整個(gè)地址空間包括四個(gè)子系統(tǒng):MCU子系統(tǒng),DSP子系統(tǒng),內(nèi)部存儲(chǔ)器子系統(tǒng)和外部存儲(chǔ)器子系統(tǒng)。DSP有自己專用的DMA控制器,系統(tǒng)DMA被兩個(gè)處理器共享。兩個(gè)處理器都有自己的中斷控制器,JTAGTAP控制器和本地的控制/狀態(tài)寄存器。芯片內(nèi)部邏輯,模擬PLL,RTC和外圍I/O都單獨(dú)供電,便于電源管理。提供動(dòng)態(tài)的內(nèi)核電壓和頻率管理,當(dāng)內(nèi)核電壓提高時(shí),可以提高M(jìn)CU和DSP的運(yùn)行頻率來提高兩個(gè)處理器的處理能力。MCU的最高運(yùn)行頻率為75MHz,DSP的最高運(yùn)行頻率為300MHz。其中DSP主要是用來運(yùn)行協(xié)議算法,MCU子系統(tǒng)構(gòu)成3G手機(jī)工作的最小系統(tǒng)。AARMJTAGABBARMJTAGKEYPADUSBSIMeGSPbRTCUSEeGSPaARMJTAGARMJTAGKEYPADUSBSIMUART232.768KHSLUART1IrDAVibratorVIBeGSPbeGSPfAPPintfaceFMVBATLDOBATEBUSRFAD6091DBBMCPMV3118MIDILCAMERA圖3-2DBB的總體結(jié)構(gòu)圖MCU子系統(tǒng):主要包括ARM7TDMI處理器,BOOTROM和MCUJTAG。DSP子系統(tǒng):主要包括BlackfinDSP處理器、SRAM、DSP總線接口單元、DSPJTAGTAP控制器和DPBUS上的各種外設(shè)。DSP總線接口單元負(fù)責(zé)各種總線資源的仲裁和管理,維護(hù)從MASTER(DSP、DSP、DMA、MCU和MCUDMA)向SLAVE(包括DPBUS上的外設(shè),L1RAM,L2RAM和通過DSPBUS訪問的系統(tǒng)資源)的訪問請(qǐng)求。兩個(gè)子系統(tǒng)內(nèi)部溝通、資源共享以及對(duì)外部資源的控制是通過芯片內(nèi)部七條總線實(shí)現(xiàn)的。其中PBUS是外部接口總線,包含三個(gè)主要的組:MMI組、HouseKeeping組和Communication組。EBUS用于地址、數(shù)據(jù)控制以及擴(kuò)展,部數(shù)據(jù)總線寬度為16位,地址總線為25位。外部存儲(chǔ)器子系統(tǒng)MCP:AD6901外接2x128MbitNORFLASH和64MbitPSRAM。FLASH存放系統(tǒng)所有的軟件的代碼和相關(guān)需存儲(chǔ)的數(shù)據(jù);PSRAM作為各軟件運(yùn)行時(shí)的內(nèi)存。視頻方面:搭配手機(jī)圖象壓縮芯片影像控制處理器MV3018來控制sensor和LCD并進(jìn)行圖象的編解碼,滿足游戲的臨場(chǎng)感,視頻上針對(duì)MPEG-4的編解碼提供30fps的CIF畫質(zhì)、24fps的VGA畫質(zhì)和384Kbit/s的傳輸率,也具備圖像前/后處理的能力。音頻方面:中星微電子公司的MIDI芯片VC0937,具有SPEAKER功放和聲音均衡電路,支持立體聲40合弦和MP3硬件解碼。以8Bit并行數(shù)據(jù)線形式與CPU進(jìn)行數(shù)據(jù)交互。3.3驅(qū)動(dòng)總體設(shè)計(jì)如前所述,驅(qū)動(dòng)軟件運(yùn)行在AD6901上,同時(shí)通過CSPORT口控制AD6857的AUDIO部分。各個(gè)驅(qū)動(dòng)模塊主要對(duì)應(yīng)如圖3-2手機(jī)硬件系統(tǒng)中AD6901上面的各種外設(shè)資源,如LCD,Camera,Keypad,USB,MMC,SDCARD,SIM等,還包括AD6857上面的Receiver,Speaker,Headset和在ARM核上運(yùn)行的操作系統(tǒng)是ThreadX,使用ADS集成開發(fā)環(huán)境,還需要使用TRACE32JTAG仿真器同目標(biāo)板相連。DSP側(cè)代碼運(yùn)行于AD6901的DSP核中,DSP側(cè)代碼主要運(yùn)行的是協(xié)議算法類。Driver的主要功能是對(duì)Manager提供統(tǒng)一的驅(qū)動(dòng)接口,Manager借助于這些接口能夠?qū)崿F(xiàn)其所有的功能。驅(qū)動(dòng)的軟件框架如圖3-3所示:ManagerLayerManagerLayerDriverAbstractLayer(DAL)DriverLayerPeripheralAccesslib(PAL)圖3-3驅(qū)動(dòng)架構(gòu)圖從Manager層向下看到的是DriverLayer,該層中的所有驅(qū)動(dòng)都會(huì)包含由DriverAbstractLayer定義的統(tǒng)一接口,驅(qū)動(dòng)層下面還有一個(gè)底層庫(kù)PAL,這個(gè)PAL的主要功能是對(duì)芯片硬件體系的抽象,作為資源提供給Driver層,下面分別對(duì)DAL,Driver和PAL做一說明。DAL作為Driver的抽象接口主要提供以下函數(shù)接口,open,release,read,write,control。Driver是實(shí)現(xiàn)對(duì)應(yīng)Manager中所有需求的功能單元,該層中的各個(gè)模塊間具有相對(duì)的獨(dú)立性,實(shí)現(xiàn)特定的功能,應(yīng)體現(xiàn)一定的粒度和松散性,如Camera,LCD,Audio,IrDA,USB,I2C,SPI等??赡苡卸鄠€(gè)Driver的功能組合來實(shí)現(xiàn)Manager的某個(gè)具體功能。同時(shí),多個(gè)Driver之間可能也會(huì)有一定的依賴關(guān)系,比如SPI可以作為獨(dú)立的驅(qū)動(dòng)模塊收發(fā)數(shù)據(jù),也可以被LCDPAL庫(kù)的主要功能是對(duì)芯片硬件資源的抽象,比如中斷的注冊(cè),驅(qū)動(dòng)對(duì)DMA資源的共享,對(duì)GPIO資源的申請(qǐng)等。PAL庫(kù)從功能上講不需要實(shí)現(xiàn)驅(qū)動(dòng)的接口,只要提供對(duì)驅(qū)動(dòng)需要使用到的公共資源的抽象,以安全和合理的方式使用片上和片內(nèi)外設(shè)。3.3.1DRIVER功能描述Driver實(shí)現(xiàn)對(duì)應(yīng)Manager中的所有需求功能,各個(gè)驅(qū)動(dòng)模塊間具有相對(duì)的獨(dú)立性,實(shí)現(xiàn)特定的功能。驅(qū)動(dòng)模塊以實(shí)現(xiàn)最小功能需求為目的,會(huì)存在有調(diào)用多個(gè)PAL庫(kù)的情況。有關(guān)驅(qū)動(dòng)對(duì)PAL庫(kù)調(diào)用的具體關(guān)系與實(shí)現(xiàn)有關(guān),也與具體的芯片體系有關(guān),這里只舉例描述幾個(gè)驅(qū)動(dòng)實(shí)現(xiàn)的功能。LCDDriver:主要實(shí)現(xiàn)上層應(yīng)用對(duì)LCD的寫屏功能,需要達(dá)到盡量少的拷貝,減少對(duì)系統(tǒng)處理器資源和內(nèi)存資源的消耗。其控制模塊主要實(shí)現(xiàn)對(duì)LCameraDriver:主要是對(duì)將攝像頭采集到的數(shù)據(jù)送往上層,并且提供控制接口,達(dá)到設(shè)置幀率,圖象大小格式,明亮度,圖象反轉(zhuǎn)等基本功能。另外,現(xiàn)在許多方案采用外掛圖像處理器(MobileGraphicEngine)連接Camera,并能提供硬件的JPEG/MJPEG編解碼、畫中畫、翻轉(zhuǎn)、色彩渲染等各種特效功能,能最大程度的減少CPU的負(fù)擔(dān),依據(jù)具體的器件選型可以增添這些控制接口。UartDriver:主要提供通用串口功能,可以用于主機(jī)同終端的通信以及調(diào)試接口,在其控制接口中實(shí)現(xiàn)對(duì)串口速率的調(diào)整。USIMDriver:主要實(shí)現(xiàn)同SIM卡之間的數(shù)據(jù)收發(fā)功能,可以提供控制接口實(shí)現(xiàn)激活/去活SIM,查詢SIM卡狀態(tài)等功能。FLASHDriver:本驅(qū)動(dòng)負(fù)責(zé)完成FLASH的讀、寫和擦除功能,提供擦除一個(gè)FLASHblock和整塊FLASH擦除功能。KeypadDriver:主要用來識(shí)別鍵盤的按鍵輸入,并將掃描結(jié)果上傳給KeypadManger。存在兩個(gè)中斷處理過程,一個(gè)是按鍵中斷,反應(yīng)當(dāng)前的一個(gè)按鍵動(dòng)作;還有一個(gè)時(shí)鐘中斷,表示當(dāng)前一段時(shí)間內(nèi)得到的所有按鍵值。AudioDrive:實(shí)現(xiàn)音頻解碼后的數(shù)字信號(hào)發(fā)送給放音模塊,實(shí)現(xiàn)音頻播放。采用一個(gè)DMA通道實(shí)現(xiàn)數(shù)據(jù)發(fā)送,提供控制功能實(shí)現(xiàn)音頻到speaker,Receiver和Headset的數(shù)據(jù)通道,以及音量的調(diào)整。MidiDriver:實(shí)現(xiàn)播放應(yīng)用層所需要的和弦鈴聲,midi等各種音效,并提供控制功能,包括進(jìn)行播放、停止各種音效,是否進(jìn)行漸進(jìn),是否播放midi格式文件等。SDDriver:通過對(duì)SD控制器的操作,實(shí)現(xiàn)對(duì)SD卡的初始化,關(guān)閉,讀、寫操作。本驅(qū)動(dòng)的讀、寫和信息模塊按照FileX的I/ODriver架構(gòu)來實(shí)現(xiàn),主要目的是為I/ODriver提供操作SD卡的接口。3.3.2PAL功能描述這部分內(nèi)容描述各個(gè)PAL庫(kù)實(shí)現(xiàn)的主要功能,存在PAL被多個(gè)驅(qū)動(dòng)調(diào)用的情況,PAL應(yīng)能滿足對(duì)外設(shè)的安全操作,不會(huì)因?yàn)椴僮鬟^程被打斷而導(dǎo)致數(shù)據(jù)讀寫出錯(cuò)。ASPLIB:提供對(duì)ASPORT的配置和數(shù)據(jù)收發(fā)功能。ABBINTLIB提供ABB上外設(shè)的中斷注冊(cè)和響應(yīng)機(jī)制,包括耳機(jī),receiver和speaker,充電模塊等。BSDLIB:提供的功能包括將SBUS,EBUS或者RBUS映射到MCU地址0和得知當(dāng)前映射到地址0的是哪個(gè)總線,SBUS,EBUS還是RBUS。CACHELIB:提供CACHE的操作功能,包括invalidatecacheline等,提供給驅(qū)動(dòng)層使用。CDNLIB:提供對(duì)整個(gè)系統(tǒng)時(shí)鐘活動(dòng)的集中控制,可以配置MCU和DSP的工作頻率,控制時(shí)鐘源的分布。DAILIB:提供了對(duì)DAI接口的配置和數(shù)據(jù)收發(fā)功能。DMALIB:提供了對(duì)DMA外設(shè)和DMA中斷的配置功能。EGCLIB:提供對(duì)GSP和eGSP的訪問控制,并抽象出GSP和eGSP的實(shí)例,可以使應(yīng)用初始化和釋放對(duì)象,提供對(duì)GSP的寄存器操作,可以發(fā)送和接收數(shù)據(jù),并提供中斷操作接口。EMCLIB提供中斷的使能和禁止功能。GPPLIB:配置GPIO進(jìn)行數(shù)字的輸入和輸出通道,并提供讀寫功能。同時(shí),也可以設(shè)置特定GPIO為edge/level方式出發(fā)IRQ中斷,并將中斷送往MCU或DSP。GPTLIB:用來提供時(shí)刻敏感性應(yīng)用,如配置timer以規(guī)定的時(shí)刻,啟動(dòng)和停止timer,以及毫秒級(jí)延時(shí)。MCMLIB:配置不同EBUS地址段的cache功能。MSSLIB:提供對(duì)AD6531引腳的配置功能,配置為GPIO,或者eGSP;以及eGSP映射到GPIO和USC的功能。SBCLIB:提供對(duì)EBUS配置功能。SDSLIB:允許MCU控制DSP的運(yùn)行,包括復(fù)位/釋放DSPReset,進(jìn)入/退出DSP的powerdown模式,以及讀/寫DSP內(nèi)存。SICLIB:提供使能/禁止MCU中斷,注冊(cè)一個(gè)中斷服務(wù)程序;觸發(fā)MCU和DSP核的軟中斷;使能/禁止中斷嵌套;選擇ARM中斷源;選擇中斷處理表,以及將fiqhandler放入ItcTWSLIB:是一個(gè)串行通信協(xié)議棧,用于MCU同LCD,外部I/O端口,RAM,EEPROM,或者DAC。TWS也支持IUSCLIB:提供配置USC的接口,包括配置USC的極性,方向和輸入端口等。YAMLIB:提供給TONE和MIDI驅(qū)動(dòng)使用YAMAHA芯片發(fā)聲的功能。3.3.3接口說明DAL接口ManagerLayer通過DAL調(diào)用驅(qū)動(dòng)設(shè)備,完成驅(qū)動(dòng)設(shè)備讀寫和控制操作。具體調(diào)用過程通過以下外部API函數(shù)實(shí)現(xiàn)。DAL為驅(qū)動(dòng)的統(tǒng)一接口,包括以下函數(shù):1.os_open,對(duì)驅(qū)動(dòng)的軟硬件資源初始化功能。2.os_release,與Open功能相對(duì),執(zhí)行資源的釋放。3.os_read:從硬件通道返回?cái)?shù)據(jù)給上層。4.os_write:上層數(shù)據(jù)寫到硬件底層。5.os_control:對(duì)驅(qū)動(dòng)相關(guān)的外設(shè)的各種控制選項(xiàng),包括電源管理部分相關(guān)的suspend和resume。基于會(huì)存在一個(gè)驅(qū)動(dòng)被多個(gè)Manager調(diào)用的原因,每個(gè)Manager在使用驅(qū)動(dòng)前都需要調(diào)用其open函數(shù)先行打開,驅(qū)動(dòng)的open函數(shù)中應(yīng)設(shè)置打開次數(shù)計(jì)數(shù),當(dāng)打開次數(shù)為零時(shí),表明為第一次打開操作,進(jìn)行初始化操作,并將打開計(jì)數(shù)加1。當(dāng)驅(qū)動(dòng)允許多個(gè)線程同時(shí)調(diào)用時(shí),在被其他線程繼續(xù)調(diào)用打開函數(shù)時(shí),返回成功并增加打開計(jì)數(shù)值;對(duì)于不允許多線程調(diào)用的驅(qū)動(dòng),返回錯(cuò)誤代碼。Manager不使用驅(qū)動(dòng)時(shí),要調(diào)用其close函數(shù)。驅(qū)動(dòng)的close函數(shù)對(duì)計(jì)數(shù)值減1,只有在打開次數(shù)零時(shí),表明已經(jīng)沒有任何Manager需要其操作功能時(shí),才可以釋放所有軟硬件資源。Driver與DAL接口描述DAL接口函數(shù)中的OS_FDfd參數(shù)為設(shè)備操作符,其他參數(shù)包括user_buf,count和op_flag與Driver函數(shù)接口一一對(duì)應(yīng)。這些函數(shù)我們把它稱為驅(qū)動(dòng)內(nèi)部API、驅(qū)動(dòng)內(nèi)部API是由各個(gè)驅(qū)動(dòng)實(shí)現(xiàn),并注冊(cè)到DAL的接口,包括以下函數(shù):(1)SINT32DRV_open(UINT32op_flag),對(duì)驅(qū)動(dòng)的軟硬件資源初始化功能。對(duì)于需要在初始化時(shí)指定啟動(dòng)參數(shù)的應(yīng)用,如mp3等,需要在open函數(shù)后調(diào)用Control實(shí)現(xiàn)。(2)SINT32DRV_release(),與Open功能相對(duì),執(zhí)行資源的釋放。(3)SINT32DRV_read(CHAR*user_buf,UINT32count,UINT32op_flag):從硬件通道返回?cái)?shù)據(jù)給上層。(4)SINT32DRV_write(CHAR*user_buf,UINT32count,UINT32op_flag):上層數(shù)據(jù)寫到硬件底層。(5)SINT32DRV_control(UINT32cmd,VOID*):支持帶參數(shù)的控制選項(xiàng)。(6)SINT32g_DRV_init(VOID),驅(qū)動(dòng)模塊加載時(shí)執(zhí)行的操作。(7)VOIDg_DRV_exit(VOID),驅(qū)動(dòng)模塊卸載時(shí)執(zhí)行的操作。Driver與PAL接口一個(gè)Driver會(huì)調(diào)用多個(gè)PAL庫(kù)實(shí)現(xiàn)硬件訪問,比如IrDA驅(qū)動(dòng)需要使用EGCLIB配置特定eGSP為IrDA接口,調(diào)用DMALIB來申請(qǐng)DMA通道進(jìn)行數(shù)據(jù)收發(fā)和DMA中斷處理,調(diào)用SICLIB來使能中斷和注冊(cè)中斷處理函數(shù),使用GPPLIB配置GPIO為輸入輸出端口。也會(huì)存在多個(gè)Driver調(diào)用同一個(gè)PAL庫(kù)的情況,但不會(huì)同時(shí)調(diào)用。比如DMALIB會(huì)被許多驅(qū)動(dòng)使用,還有GPPLIB,SICLIB等。Driver內(nèi)部接口原則上驅(qū)動(dòng)之間不存在依賴關(guān)系,即驅(qū)動(dòng)之間不會(huì)相互調(diào)用。如果出現(xiàn)一些功能需要調(diào)用另外的驅(qū)動(dòng)實(shí)現(xiàn)的情況,需要將那個(gè)驅(qū)動(dòng)對(duì)應(yīng)函數(shù)接口聲明為全局函數(shù)。PAL內(nèi)部接口PAL庫(kù)內(nèi)部存在相互調(diào)用關(guān)系以實(shí)現(xiàn)稍高層次的功能,比如USCLIB對(duì)EGCLIB調(diào)用實(shí)現(xiàn)DAI接口到USC的路由。會(huì)存在一個(gè)PAL被多個(gè)驅(qū)動(dòng)調(diào)用的情況,PAL庫(kù)的初始化部分需要在BSP中完成。3.4驅(qū)動(dòng)模型編程驅(qū)動(dòng)軟件從范疇上講應(yīng)該包括如前面講的驅(qū)動(dòng)軟件的總體架構(gòu)上的與驅(qū)動(dòng)部分相關(guān)的Manager部分功能,DriverAbstractLayer,Driver層,以及Driver下面的PAL庫(kù)。ManagerLayer的功能主要是向上提供業(yè)務(wù)控制接口,對(duì)下進(jìn)行驅(qū)動(dòng)的管理功能。對(duì)于驅(qū)動(dòng)編程模型而言,重要包括驅(qū)動(dòng)軟件架構(gòu)的DAL,DD,PAL三個(gè)部分。這里只從驅(qū)動(dòng)模塊注冊(cè)對(duì)驅(qū)動(dòng)模型加以描述。所有外設(shè)都必須進(jìn)行注冊(cè),注冊(cè)包括兩種:中斷處理程序注冊(cè)和設(shè)備注冊(cè)。其中中斷處理程序注冊(cè)是為了能根據(jù)預(yù)先設(shè)定處理入口及時(shí)響應(yīng)相應(yīng)的中斷事件。而設(shè)備注冊(cè)是為了能夠?qū)崟r(shí)跟蹤各設(shè)備的狀態(tài)。對(duì)于設(shè)備注冊(cè)而言,注冊(cè)機(jī)制必須提供一種驅(qū)動(dòng)外部接口到驅(qū)動(dòng)內(nèi)部接口的映射。(1)中斷注冊(cè)中斷注冊(cè)涉及兩張表:中斷登記表和中斷向量表;其中,前者是一張邏輯表,可以根據(jù)需要擴(kuò)充其中的表項(xiàng),同時(shí)在中斷登記表中,支持一個(gè)設(shè)備的多個(gè)ISR登記的情況暫不考慮后者是實(shí)際的中斷向量表,只包括中斷組號(hào)Group,中斷等級(jí)Level及中斷處理程序入口,如下表所示:GroupLevel設(shè)備名稱中斷處理程序入口11122122中斷登記表數(shù)據(jù)結(jié)構(gòu)typedefstruct{UINT32dev_no;VOID(*handler)();}irq_register_struct;irq_register_structg_os_irq_register_tbl[OS_MAX_IRQ_GROUP_NUM][OS_MAX_IRQ_LEVEL_NUM];(1.2)中斷向量表GroupLevel中斷處理程序入口11122122數(shù)據(jù)結(jié)構(gòu)typedefstruct{VOID(*handler)();}irq_vector_struct;irq_vector_structirq_vector_tbl[OS_MAX_IRQ_GROUP_NUM][OS_MAX_IRQ_LEVEL_NUM];(2)設(shè)備注冊(cè)依然存在兩種表:設(shè)備登記表和設(shè)備注冊(cè)表。其中前者記錄驅(qū)動(dòng)設(shè)備的初始化入口,這些驅(qū)動(dòng)設(shè)備必須在系統(tǒng)初始化時(shí)進(jìn)行初始化。后者包括設(shè)備號(hào),設(shè)備名稱,設(shè)備狀態(tài),設(shè)備處理程序入口等。(2.1)設(shè)備登記表設(shè)備號(hào)設(shè)備初始化函數(shù)12數(shù)據(jù)結(jié)構(gòu)typedefstruct{VOID(*init)();VOID(*exit)();}dev_register_struct;dev_register_structg_os_dev_register_tbl[OS_MAX_DEV_NUM];驅(qū)動(dòng)程序通過OS_MODULE_INIT(dev_no,dev_init)完成設(shè)備登記表的注冊(cè)。#defineOS_MODULE_INIT(dev_no,dev_init)g_os_dev_register_tbl[dev_no].init=dev_init.驅(qū)動(dòng)程序通過OS_MODULE_EXIT(dev_no,dev_exit)完成設(shè)備登記表的注銷。#defineOS_MODULE_EXIT(dev_no,dev_exit)g_os_dev_register_tbl[dev_no].exit=dev_exit;(2.2)設(shè)備注冊(cè)表設(shè)備號(hào)設(shè)備名稱設(shè)備狀態(tài)設(shè)備操作函數(shù)指針1234為了在驅(qū)動(dòng)程序初始化時(shí)完成注冊(cè),需要提供設(shè)備注冊(cè)和注銷接口供驅(qū)動(dòng)g_DRV_init()和g_DRV_exit()調(diào)用。第4章DBB子系統(tǒng)硬件設(shè)計(jì)如圖4-1所示,DBB可通過EBUS管理/訪問Memory、MIDI、LCD&CAMER控制器。通過GPIO控制FM、Vibrator。另外,DBB集成了許多外設(shè)控制器,包括:Keypad、IrDA、USB、SIM、RTC等,外設(shè)控制器接口均與GPIO復(fù)用。DBB的GPIO分類于不同的電源域,EBUS總線隸屬VMEM電源域,SIM總線隸屬VSIM電源域,DBB與ABB接口隸屬VINT電源域,MMC總線隸屬VMMC電源域,其它GPIO多數(shù)隸屬VEXT電源域。在使有GPIO圖4-1DBB系統(tǒng)原理圖4.1外部存儲(chǔ)系統(tǒng)MCP的原理圖設(shè)計(jì)本設(shè)計(jì)選用intel公司的38F3350LLZDQ1(128MbitFLASH+128MbitFLASH+64MbitPSRAM),異步訪問速度分別為85ns和65ns。FLASHIO電壓2.8V,核電壓1.8V.工作電流需求50mA.;PSRAM輸入電壓為2.7V~3.1V。下圖4-2為DBB與MCP的接口原理圖。圖4-2DBB與MCP的接口原理圖兩個(gè)FLASHDIE分別接到AD6901的ROMCS1和ROMCS2兩個(gè)區(qū),把兩個(gè)FLASH帶看成統(tǒng)一編址,第一個(gè)帶的起始地址看成虛擬地址0(物理地址是0x01000000),然后地址向后加,加1表示加1字節(jié),第一個(gè)帶的大小是16M,所以第二個(gè)帶的起始地址(虛擬地址)是16M=0x01000000,第二個(gè)帶的起始地址是0x1C000000。兩片F(xiàn)LASH地址空間分別為0x01000000~0x01FFFFFF和0x1C000000~0x1CFFFFFF;PSRAM地址空間為0x04000000~0x047FFFFF。圖4-3所示為DBB和MCP連接電路圖,DBB和MCP接口信號(hào)定義如表4-1所示。VCC_IO&&VCC_coreVCC_IO&&VCC_coreADD[0..24]DATA[0..15]/R-WE/R-OE/R-CS/R-UB/R-LB/F-CE1/F-CE2/F-WE1/F-OE1/F-OE2/F-CLK/F-ADVF-WAITF-RSTR-MODEGNDGPIO47AD6901EBUSDBB_ADD[1..25]DBB_DATA[0..15]DBB_WEDBB_RDDBB_MCP_RAMCS1DBB_UBSDBB_LBSDBB_MCP_ROMCS1DBB_MCP_ROMCS2DBB_WEDBB_RDDBB_BURSTCLKDBB_ADVDBB_WAITDBB_RESETDDB_MCP_P_MODE3.0V1.8V圖4-3所示為DBB和MCP連接電路圖信號(hào)名描述特殊要求DBB_ADD[0..25]地址線DBB_WE寫信號(hào)DBB_RD讀信號(hào)DBB_MCP_RAMCS1P-RAMDIE1片選DBB_UBSRAM高字節(jié)片選信號(hào)DBB_LBSRAM低字節(jié)片選信號(hào)DBB_MCP_P_MODEP-SRAM刷新信號(hào)此信號(hào)低,低功耗模式此信號(hào)高,運(yùn)行代碼GPIO54DBB_MCP_WP寫保護(hù)GPIO47DBB_MCP_ROMCS1FLASHDIE1片選DBB_MCP_ROMCS2FLASHDIE2片選DBB_BURSTCLKBurst時(shí)鐘DBB_ADV地址有效信號(hào)DBB_WAIT等待信號(hào)DBB_RESETMCP復(fù)位信號(hào)ABB2DBB_RESET表4-1MCP信號(hào)表4.2LCD和CAMERA接口的原理圖設(shè)計(jì)為了提高圖象質(zhì)量,減輕cpu負(fù)擔(dān),我們采用外掛手機(jī)圖象壓縮芯片影像控制處理器(CCP)MV3018來控制LCD和CAMERA,Camera,并能提供硬件的JPEG/MJPEG編解碼、畫中畫、翻轉(zhuǎn)、色彩渲染等各種特效功能,能最大程度的減少CPU的負(fù)擔(dān)。當(dāng)不用CAMERA時(shí),M3018應(yīng)工作在BYPASS模式以降低功耗;當(dāng)處于CAMERAPREVIEW模式下,M3018用CAMERA提供的PCLK作為時(shí)鐘,圖像首先被壓縮成JPEG存入buffer,然后解壓縮顯示,從camera捕獲到lcd顯示可達(dá)30fps。CAMERA的I2C總線的速率為400Kbps,也可調(diào)整時(shí)鐘到小于100kbps。LCMV3018的引腳說明見表4-2。引腳功能描述備注HOSTINTERFACEMA[0..1]HOSTaddress生成四個(gè)地址用于4個(gè)bank選擇MWEN寫使能MREN讀使能MCS片選信號(hào)MINT中斷信號(hào)MD[0..15]數(shù)據(jù)總線MCU與MV3018的數(shù)據(jù)輸入輸出MD16/GPIO0多功能口MD17/GPIO1多功能口LINTERFACELRSLCLWENLCLRENLCLCS1LCLCS2LCLD[0..17]數(shù)據(jù)總線LCSENSORINTERFACEHREF行同步時(shí)鐘VSYNS場(chǎng)同步時(shí)鐘DI[0..7]數(shù)據(jù)總線Sensor和MV3018數(shù)據(jù)的輸入輸出SCLI2C時(shí)鐘SDAI2C數(shù)據(jù)PCLKSensor輸入像素時(shí)鐘SMCKO時(shí)鐘Sensor接口工作的系統(tǒng)時(shí)鐘CLOCKINTERFACECLK1時(shí)鐘輸入CLK0時(shí)鐘輸出RESET復(fù)位STROBE/GPIO2GPIO[3..4]通用IOPOWERMVDDMCUI/O電壓供應(yīng)SVDDSensorI/O電壓供應(yīng)LVDDLCRVDD寄存器電壓供應(yīng)VE0(CVDD)內(nèi)部電路電源DVSS地表4-2MV3018的引腳說明LCD采用巨浪公司的單屏:CAMERA采用OV公司的OV7725芯片,OV7725需要2.8VPVDD(模擬電源)、2.8VIOVDD(接口數(shù)字電源),1.5VDVDD(數(shù)字核電壓)。MV3018與LCD、SENSOR、MCU連接原理如圖4-圖4-4MV3018連接原理圖4.3鍵盤接口原理圖設(shè)計(jì)AD6901通過其鍵盤接口可以提供8*8的矩陣式鍵盤。矩陣式鍵盤掃描由軟件來控制。硬件電路沒有去抖,需要進(jìn)行軟件去抖。根據(jù)需求,共有下列的按鍵:數(shù)字鍵0~9,*,#,BACK,SELECT,OK,四向鍵,Power鍵。除了Power鍵,其它的按鍵(共16鍵加四向鍵)按矩陣式鍵盤來實(shí)現(xiàn)。鍵盤單獨(dú)定制為鍵盤FPCB,目前的設(shè)計(jì)中采用的是五行行輸入和四行列輸入,共20個(gè)鍵。其中,POWER鍵和掛機(jī)鍵復(fù)用,采用AD6857的KEYON資源,利用長(zhǎng)按和短按方法區(qū)分實(shí)現(xiàn)。剩余19個(gè)鍵利用鍵盤矩陣掃描方式實(shí)現(xiàn)。鍵盤背光信號(hào)采用AD6857的兩組PWM背光信號(hào),四個(gè)背光燈共用一組背光信號(hào),由于每個(gè)背光燈的標(biāo)準(zhǔn)額定電流為5mA,選用限流電阻值68歐姆。每組背光信號(hào)的驅(qū)動(dòng)電流為30mA,4個(gè)背光燈需要20mA,在背光信號(hào)驅(qū)動(dòng)能力之內(nèi)。鍵盤背光電路如圖4-6所示:圖4-6鍵盤背光電路鍵盤矩陣連接電路如圖4-7所示圖4-7:鍵盤矩陣連接電路鍵盤信號(hào)接口信號(hào)定義見表4-3:信號(hào)名描述ABB_KBL1PWM信號(hào),驅(qū)動(dòng)能力30mAABB_KBL2PWM信號(hào),驅(qū)動(dòng)能力30mADBB_KEYPAD_ROW[0…4]鍵盤行輸入信號(hào)DBB_KEYPAD_COL[0…3]鍵盤列輸出信號(hào)KEYONABB按鍵開機(jī)輸入信號(hào)表4-3鍵盤信號(hào)表4.4MIDI接口原理圖設(shè)計(jì)我們選用中星微電子公司的MIDI芯片VC0937,支持立體聲40合弦和MP3硬件解碼。以8Bit并行數(shù)據(jù)線形式與CPU進(jìn)行數(shù)據(jù)交互。工作時(shí)鐘最高達(dá)36MHz,電路設(shè)計(jì)中由AD6901輸出的13Mhz時(shí)鐘提供。該芯片具有SPEAKER功放和聲音均衡電路,提供背光和振動(dòng)器接口,芯片具有POWERDOWN省電模式。圖4-8為VC0937的電路連接圖,VC0937有兩個(gè)輸出通道,一個(gè)是耳機(jī)左、右聲道,一個(gè)是SPERKER差分通道。二者各有優(yōu)缺,耳機(jī)左、右聲道輸出信號(hào)是由其內(nèi)部左、右聲道碼流D/A變換后直接輸出,沒有進(jìn)行濾波,音質(zhì)略差,而SPERKER差分通道輸出信號(hào)經(jīng)過了二階濾波器濾波,音質(zhì)很好,但由于其是差分信號(hào),因此不能產(chǎn)生立體聲。為了充為利用二者之長(zhǎng),將二通道通過外部交流耦合后輸出。使用時(shí),如需要使用耳機(jī)聽立體聲,則通過軟件配置使信號(hào)通過耳機(jī)左、右聲道輸出,如需要使用SPEAKER播放優(yōu)質(zhì)MIDI新音樂,則通過軟件配置使信號(hào)通過SPEAKER差分通道輸出。DATA[0..DATA[0..7/CS/RD/WRHPOUT_L/A0HPOUT_R/IRQ/RESRT/CLK/IOVDDSO1/SPVDDS02GPIO86AD6901EBUSDBB_DATA[0..7]DBB_MELODY_CSDBB_RDDBB_WEDBB_ADD0DBB_MELODY_INTDBB_MELODY_RESETDBB2ABB_CLKOUTVextVbatGPIO5MCLKGPIO47MELODY_LMELODY_RMELODY_SO1MELODY_SO2圖4-8VC0937的電路連接圖4.5SIM卡接口原理圖設(shè)計(jì)SIM卡接口用于手機(jī)與運(yùn)行商提供的SIM的通信接口,SIM卡座尺寸為30.1×17.2mm,6觸點(diǎn)的標(biāo)準(zhǔn)結(jié)構(gòu),。SIM接口信號(hào)串入SIM卡專用的ESD和EMI防護(hù)器件。其電路連接信號(hào)如表4-4信號(hào)名稱功能描述方向引腳VSIM電源供電管腳輸入C1SIM_RESETSIM卡復(fù)位管腳輸入,低電平復(fù)位C2SIM_CLK時(shí)鐘管腳輸入C3GND地管腳輸入C5SIM_DATA數(shù)據(jù)管腳雙向C7表4-4電路連接信號(hào)SIM卡接口電路如圖4-9所示。圖4-9SIM卡接口電路圖第5章驅(qū)動(dòng)的具體實(shí)現(xiàn)本人在3G手機(jī)的設(shè)計(jì)中主要負(fù)責(zé)DBB側(cè)也就是ARM側(cè)的人機(jī)接口外設(shè)的電路設(shè)計(jì)及驅(qū)動(dòng)開發(fā)。本章節(jié)將主要介紹構(gòu)成DBB子系統(tǒng)外設(shè)部分的驅(qū)動(dòng)程序的開發(fā)實(shí)例。人機(jī)接口部分主要有LC5.1MV3018的芯片驅(qū)動(dòng)5.1.1MV3018的簡(jiǎn)介MV3018是一款由MtekVision公司設(shè)計(jì)的用于控制LCD和Camera手機(jī)圖象壓縮芯片影像控制處理器(CCP)。采用81腳BGA(8mmX81個(gè)LCD控制器,2路L1個(gè)HOST控制器內(nèi)建CMOS/CCD接口,可支持VGA/CIF、VGA圖像旋轉(zhuǎn)90/180/270度、8倍數(shù)字鏡頭變焦、連續(xù)拍攝達(dá)30張/秒,可實(shí)時(shí)播放1個(gè)I2C總線接口PLL時(shí)鐘發(fā)生器兩級(jí)預(yù)處理系統(tǒng)JPEG編解碼器(并能提供硬件的JPEG/MJPEG編解碼、畫中畫、翻轉(zhuǎn)、色彩渲染等各種特效功能)PEG編碼支持YUV422到VGA;JPEG解碼支持YUV444/422/420/411到VGA。內(nèi)嵌16K*64=1Mbit的RAMSensorSensorPRE_CONI2CPLL/CLKGENMVControllerHostCtrlBaseBandProcessorSecondaryScalerPrimaryScalerEmbeddedMemory(16k*64=1Mbit)TDScalerJPEG(Enc,Dec)sensorLCLMV3018如圖5-1MV3018結(jié)構(gòu)框圖MV3018的內(nèi)部有3個(gè)bus構(gòu)成,其中emb_bus用于存儲(chǔ)通道,hs_bus和內(nèi)部bus用于內(nèi)部各個(gè)模塊之間的通信。如圖5-1所示的MV3018結(jié)構(gòu)框圖,MV3018的SensorPRE_CON控制器將Sensor輸入的數(shù)據(jù)送入到預(yù)處理器PrimaryScaler和SecondaryScaler進(jìn)行預(yù)處理,再將鏡像數(shù)據(jù)通過TDScaler保存到EmbeddedMemory中用于輸出到LCD中。JPEG(Enc,Dec)主要是將sensor輸出的數(shù)據(jù)壓縮成JPEG存入buffer中以及將JPEG格式的數(shù)據(jù)解壓輸輸出到LCD。BDD系統(tǒng)通過MV3018的I2C另外采用MV3018影像控制處理器相比直接由ARM控制由如下優(yōu)點(diǎn):用硬件處理圖象比軟件實(shí)現(xiàn)提高了處理速度和圖象質(zhì)量,減輕CPU負(fù)擔(dān)。在沒有sensor時(shí),采用bypass模式來控制LCD特效功能豐富:自動(dòng)色彩補(bǔ)償,合并圖象、畫中畫顯示、字幕顯示;馬賽克、灰白、副片、油畫、素描等,降低軟件開發(fā)難度。5.1.2MV3018的驅(qū)動(dòng)實(shí)現(xiàn)因?yàn)镸V3018主要用于控制Sensor和LCD的,所以對(duì)MV3018的驅(qū)動(dòng)編程主要是編寫關(guān)于控制Sensor和LC其信號(hào)列表如表5-1所示:信號(hào)名描述備注與AD6901相連部分DBB_ADD1MA0,片選MV3018內(nèi)部BANKDBB_ADD2MA1,片選MV3018內(nèi)部BANKDBB_WEMWEN,寫使能DBB_RDMREN,讀使能DBB_LC_RSMCS,片選信號(hào)DBB_DATA[0..15]MD0~MD15,數(shù)據(jù)線DBB2ABB_CLKOUTCLK1時(shí)鐘輸入DBB_LC_INTMINTMV3018中斷源有中斷功能GPIO管腳DBB_LC_RESETMV3018復(fù)位GPIODBB_LCD_BLCGPIODBB_CAMERA_PDcamerapowerdownGPIO與AD6857相連ABB_LIGHTLCPWM信號(hào)MV3018與L接口DBB_LCLRS數(shù)據(jù)/命令DBB_LCLREN,讀使能DBB_LCD_LWEN,寫使能DBB_LCD_LCS1主屏片選LCS2副屏片選DBB_LCLCGPIODBB_LCLD01~LD15,數(shù)據(jù)線MV3018與CAMERA接口DBB_CAMERA_HREFHREF行同步DBB_CAMERA_VSYNCVSYNC,幀同步DBB_CAMERA_SCLSCL,I2C時(shí)鐘線DBB_CAMERA_SDASDA,I2C數(shù)據(jù)線DBB_CAMERA_PCLKPCLK像素時(shí)鐘DBB_CAMERA_SMCKOsensor輸出時(shí)鐘DBB_CAMERA_D[0..7]D01~D7,數(shù)據(jù)線DBB_CAMERA_RESETcamera復(fù)位GPIOMV3018的其它管腳DBB_LC_CLKOUTclk0,晶振的輸出DBB_LC_GPIO[0..4]可連接LC表5-1信號(hào)表MV3018的存儲(chǔ)映射有四個(gè)地址板塊每一個(gè)板塊具有三個(gè)功能,這寫功能的實(shí)現(xiàn)是有外部的bank選擇地址來控制的,而每個(gè)bank的選擇是由地址為3h單元的值來決定的。表5-2列出了地址各個(gè)bank的功能。地址Bank0Bank1Bank2Bank30h對(duì)LC存buffer區(qū)操作時(shí)高地址寄存器索引電源控制1h對(duì)主LC存buffer區(qū)操作時(shí)低地址寄存器高指針對(duì)GPIO口讀寫數(shù)據(jù)2h對(duì)副LC讀寫buffer的數(shù)據(jù)寄存器低指針GPIO方向控制3h00h為bank0,01h為bank1,02h為bank2,03h為bank3表5-2各個(gè)bank的功能提供LC函數(shù)名功能函數(shù)名功能mv3JpegInquiryJpeg品質(zhì)開關(guān)mv3CaptureWorkCapture啟動(dòng)mv3ProcessYuv411Yuv圖象處理mv3IsCaptureSuccessCapture成功mv3MemoryWrite1word讀一個(gè)字mv3EncodePropSet編碼參數(shù)設(shè)置mv3MemoryRead1word寫一個(gè)字mv3EncodePropGet讀編碼參數(shù)mv3LcLcmv3EncodeWork編碼啟動(dòng)mv3InitDeviceMV3018初始化mv3SnapshotPropSetSnapshot數(shù)據(jù)mv3DevicePropSet設(shè)備端口配置mv3SnapshotPropGet讀Snapshot參數(shù)mv3MemoryWrite內(nèi)存寫mv3SnapshotWork啟動(dòng)Snapshotmv3MemoryRead內(nèi)存讀mv3DecodePropSet解碼參數(shù)設(shè)置mv3LcLcmv3DecodePropGet讀解碼參數(shù)mv3GammaWrite讀Gamma值mv3DecodeWork啟動(dòng)解碼mv3I2CWriteI2C寫接口mv3JpegInfoGet獲取Jpeg信息mv3I2CReadI2C讀接口mv3PreviewZoomMaxFindPreview縮放設(shè)置mv3PreviewPropSetPreview參數(shù)設(shè)置mv3GpioSetDirGpio配置mv3PreviewPropGet讀Preview數(shù)據(jù)mv3GpioGetDirGpio方向設(shè)置mv3PreviewWorkPreview啟動(dòng)mv3GpioSetDataGpio寫數(shù)據(jù)mv3CapturePropSetCapture數(shù)設(shè)置mv3CheckPowerON電源檢測(cè)mv3CapturePropGet讀Capture數(shù)據(jù)mv3GetMemSize讀內(nèi)存大小5.2LCD的驅(qū)動(dòng)實(shí)現(xiàn)具體描述了LCD圖5-3LCD硬件接口圖LCD驅(qū)動(dòng)軟件完成硬件上LCD與AD6901之間的數(shù)據(jù)傳輸,以及軟件上的驅(qū)動(dòng)層與應(yīng)用層的顯示功能的實(shí)現(xiàn)。由于AD6901沒有內(nèi)置的LCDController,為了后續(xù)擴(kuò)展Camera采用Mtekvision的圖像處理接口芯片MV3018,硬件接口圖如圖5-3所示。從圖中可看到AD6901通過EBUS連接MV3018,MV3018連接CPU接口的LCD模塊,當(dāng)僅僅為了在LCD上顯示可以選擇MV3018的bypass模式相當(dāng)于AD6901直接控制LCD,這樣能最大程度的提高寫屏速度及降低MV3018功耗。硬件上需要使用的資源有LCD5.2.1LCD驅(qū)動(dòng)軟件的功能描述和性能要求本系統(tǒng)主要完成上層應(yīng)用與底層硬件的的接口關(guān)系,完成各種顯示功能的實(shí)現(xiàn),以及底層的硬件驅(qū)動(dòng),與電源管理之間的接口關(guān)系,實(shí)現(xiàn)LCD的動(dòng)態(tài)電源管理。在與應(yīng)用層的接口中,主要提供OPEN、WRITE、CONTROL、RELEASE等接口函數(shù),上層應(yīng)用通過調(diào)用相關(guān)接口函數(shù)實(shí)現(xiàn)開啟LCD,寫屏,區(qū)域?qū)懫?,設(shè)置背光,設(shè)置LCDstanby模式等功能。在與底層硬件的接口中,主要是在OPEN函數(shù)中完成對(duì)MV3018及LCD的初始化過程,包括配置AD6532相關(guān)EBUS時(shí)序控制器、相關(guān)GPIO配置成LCD片選信號(hào),BACKLIGHT等,使得WRITE上層應(yīng)用上層應(yīng)用初始化模塊open模塊WRITE模塊COTROLRELEASE模塊卸載模塊LCD圖5-4LCD驅(qū)動(dòng)結(jié)構(gòu)框圖5.2.2硬件驅(qū)動(dòng)與硬件配置寄存器配置:需要配置寄存器的硬件有EBUS線配置寄存器CSB2CR0、CSB2CR1,GPIO相關(guān)寄存器,BACKLIGHT相關(guān)寄存器以及LCI/O口配置:GPIO50配置成ALT1--DISPLAYCS1;GPIO33配置成ALT0—BACKLIGHT;GPIO12配置成ALT0—MVRESET。5.2.3子系統(tǒng)軟件功能設(shè)計(jì)LCD驅(qū)動(dòng)主要包括初始化模塊、卸載模塊、OPEN模塊、WRITE模塊、CONTROL模塊、RELEASE模塊,其中WRITE模塊主要實(shí)現(xiàn)對(duì)LCD接口中的數(shù)據(jù)結(jié)構(gòu)和宏//lcd#defineLCD_IOC#defineLCD_IOC#defineLCD_IOC#defineLCD_IOC#defineLCD_IOC#defineLCD_IOC//lcd_control函數(shù)的各命令所相關(guān)的參數(shù),參數(shù)的數(shù)據(jù)結(jié)構(gòu)如下:typedefstruct_LCD_CO{UINT8startXPixel;/*LCD顯示區(qū)域的寬度起始象素值,0UINT8startYPixel;/*LCD顯示區(qū)域的高度起始象素值,0UINT8width;/*需要LCD顯示區(qū)域的寬度象素值,1UINT8height;/*需要LCD顯示區(qū)域的高度象素值,1UINT16pwm;/*背光強(qiáng)度,0~256逐步加強(qiáng)*/}LCD_CO//lcd#defineLC#defineLC初始化模塊:初始化模塊主要向操作系統(tǒng)注冊(cè)設(shè)備初始化模塊主要向操作系統(tǒng)注冊(cè)設(shè)備函數(shù)原型SINT32g_lc功能描述注冊(cè)設(shè)備參數(shù)描述無返回值SUCCESS成功SINT32g_lc{ os_register_dev(LCD,"LCD_DRV",&lcdreturnSUCCESS;}卸載模塊:主要向操作系統(tǒng)注銷設(shè)備函數(shù)原型SINT32g_lc功能描述注銷LC參數(shù)描述無返回值SUCCESS成功SINT32g_lc{ os_remask_irq((GROUP_t)7,(PRIO_t)10);/*RemaskHallInterrupt*/ os_unregister_dev(LCD);/*Unregister returnSUCCESS;}OPEN模塊:包括相關(guān)GPIO的配置、EBUS總線寄存器的配置、及MV3018和LCD函數(shù)原型SINT32lc功能描述配置GPIO,EBUS總線寄存器以及LCD參數(shù)描述無返回值SUCCESS成功LCD控制器的功能是輸出顯示驅(qū)動(dòng)信號(hào),驅(qū)動(dòng)LCD顯示內(nèi)容。用戶只需要通過讀寫一系列的寄存器,完成配置和顯示驅(qū)動(dòng)。對(duì)LCD芯片的硬件初始化比較簡(jiǎn)單主要是通過MV3018的LCMV_InitMV_Init=0?1開始申請(qǐng)GPIO50,GPIO33,GPIO12配置GPIO50為L(zhǎng)T1-DISPLAYCS1,OUTPUT配置GPIO33為L(zhǎng)T0-BACKLIGHT,OUTPUT設(shè)置默認(rèn)背光亮度并關(guān)閉背光配置EBUS總線寄存器配置總線時(shí)序復(fù)位MV3118調(diào)用LCinitMainLC打開預(yù)覽電源模式配置預(yù)覽時(shí)鐘MV3018初始化函數(shù)mv3InitDevice()MV_Init=0MV_Init=1MV_Init=0MV_Init=1結(jié)束WRITE模塊:主要包括對(duì)不同的開發(fā)環(huán)境執(zhí)行不同的LCD函數(shù)原型SINT32lcUINT32op_flag)功能描述主要實(shí)現(xiàn)對(duì)LCD參數(shù)描述User_buf寫到LCDCount數(shù)據(jù)長(zhǎng)度Op_flag操作標(biāo)志位返回值SUCCESS成功LCDLCDSINT32lc{ intx; inty; intcn; UINT16*frambuffer; if(user_buf==NULLPTR)returnERR_GPP; frambuffer=(UINT16*)user_buf; cn=count/2; if(count>WIDTH*HEIGHT*2) returnLCD_ERR_AREA;/*設(shè)置為L(zhǎng)/*對(duì)LCD相應(yīng)mv3Lcd mv3Lcmv3WriteDataToMainLcd((lcd_startYPixel_GRAM<<+lcd_startXPixel_GRAM+2 mv3Lc for(y=lcd_startYPixel;y<lcd_startY { for(x=lcd_startXPixel;x<lcd {/*寫RGB數(shù)據(jù)到GRAM*/ mv3WriteDataToMainLc cn--; } } if(cn)returnLCD_ERR_WRITE;/* returnSUCCESS;/*FinishallLC}CONTROL模塊:實(shí)現(xiàn)對(duì)背光的調(diào)節(jié),關(guān)閉以及區(qū)域?qū)懫恋脑O(shè)置(包括對(duì)起始X,Y及截至X,Y的設(shè)置),Standby及全速模式函數(shù)原型SINT32lcd_control(UINT32功能描述實(shí)現(xiàn)清屏、背光控制、區(qū)域?qū)懫習(xí)r對(duì)LCDX、Y的配置、Standby及參數(shù)描述Cmd上層應(yīng)用所需特殊命令Parm區(qū)域顯示相關(guān)數(shù)據(jù)結(jié)構(gòu)返回值SUCCESS成功SINT32lcd_control(UINT32{switch(cmd){caseLCD_IOC /*區(qū)域?qū)懫?,?duì)屏幕設(shè)置x,y及heigh.width*/lcd_display_setup(*((LC lcd_startXPixel_GRAM=((LC lcd_startYPixel_GRAM=((LCD_CO lcd_startXPixel=((LC lcd_startYPixel=((LCD_CO lcd_width=((LC lcd_height=((LC break;caseLCD_IOC clearMainLCD(0x0000);/* break;caseLCD_IOCTL_BACKLIGHT_SETUP:/*設(shè)置背光 pin.id=33; GPP_ReadPin(&pin); if(pin.state==GPP_LOW) {pin.state=GPP_HIGH; GPP_WritePin(&pin); } CSP_TransmitData(0x30,(255-(((LCD_CO break;caseLCD_IOCTL_BACKLIGHT_DISABLE:/*關(guān)閉背光 pin.id=33; pin.state=GPP_LOW; GPP_WritePin(&pin);/*disableBacklight*/ break;caseLCD_IOC MainLCD_Standby();/*LCD break;caseLCD_IOC MainLCD_CancelStandby();/*取消Standby模式進(jìn)入FULL break; } returnSUCCESS;}RELEASE模塊:主要是對(duì)GPIO資源的釋放背光的關(guān)閉以及關(guān)閉LCD以及函數(shù)原型SINT32lc功能描述對(duì)硬件資源的釋放,對(duì)LCD參數(shù)描述無返回值SUCCESS成功SINT32lc{ MainLCD_Standby();/*LCD pin.id=33; pin.state=GPP_LOW; GPP_WritePin(&pin);/*關(guān)閉背光*/ returnSUCCESS;}5.3CAMERA的驅(qū)動(dòng)實(shí)現(xiàn)通過MV3018的I2C控制接口向Camera模塊發(fā)送I2C控制字,AD6532通過系統(tǒng)總線控制MV3018,實(shí)現(xiàn)MV3018關(guān)于圖像攝取處理方面的各項(xiàng)功能。Camera驅(qū)動(dòng)提供給上層打開和關(guān)閉模塊、控制模塊,可以實(shí)現(xiàn)Preview,Capture,渲染特效、翻轉(zhuǎn)、鏡像、縮放、JPEG編解碼、相框、snapshot(直接將Capture的圖片壓縮成JPEG格式)、MJPEG功能。5.3.1CAMERA驅(qū)動(dòng)軟件的功能描述和性能要求本系統(tǒng)主要完成上層應(yīng)用與底層硬件的的接口關(guān)系,完成圖像攝取和處理功能的實(shí)現(xiàn),以及底層的硬件驅(qū)動(dòng)。在與應(yīng)用層的接口中,主要提供OPEN、CONTROL、RELEASE等接口函數(shù),上層應(yīng)用通過調(diào)用相關(guān)接口函數(shù)實(shí)現(xiàn)開啟CAMERA,預(yù)覽、拍照、特效等功能。在與底層硬件的接口中,主要是在OPEN、CONTROL、RELEASE函數(shù)中完成對(duì)MV3018的控制,再通過MV3018來驅(qū)動(dòng)sensor模組,使得再更換sensor是只需要修改相應(yīng)的sensor寄存器的值。5.3.2子系統(tǒng)軟件功能設(shè)計(jì)CAMERA驅(qū)動(dòng)主要包括初始化模塊、卸載模塊、OPEN模塊、CONTROL模塊、RELEASE模塊,其中CONTROL主要包含一些上層應(yīng)用需要的一些特殊命令以及讀底層芯片的設(shè)置函數(shù)的調(diào)用。驅(qū)動(dòng)模塊功能結(jié)構(gòu)如圖5-5所示。上層應(yīng)用上層應(yīng)用初始化模塊open模塊COTROLRELEASE模塊卸載模塊MV3018SensorMODULE模塊圖5-5SENSOR驅(qū)動(dòng)模塊功能結(jié)構(gòu)打開模塊和關(guān)閉模塊:上層應(yīng)用通過驅(qū)動(dòng)程序的打開模塊拉高CameraPowerDown,打開給Camera的1.5V核電壓供電的LDO,即給Camera正常供電。SINT32cam_open(UINT32op_flag){ GPP_PIN_INSTANCEpin; /*申請(qǐng)DBB的GPIO34用于給camera供電*/pin.id=34; pin.function=GPP_OUTPUT; pin.state=GPP_HIGH; pin.altMode=GPP_ALT_MODE0; GPP_ReleasePin(&pin); GPP_AcquirePin(&pin); pin.state=GPP_HIGH; GPP_WritePin(&pin);/*EnableGPIO34tosupplyvoltagetocamera*/returnSUCCESS;}上層應(yīng)用通過驅(qū)動(dòng)程序的關(guān)閉模塊拉低CameraPowerDown,關(guān)閉給Camera的1.5V核電壓供電的LDO,即切斷Camera供電。SINT32cam_release(VOID){ mvUint8sensorData1[][2]={{0x03,0x40},{0x1f,0x80},{0x0d,0x80},{0x1e,0x18},{0x59,0x03}}; /*對(duì)sensor寫值,停止sensor工作*/mv3I2CW
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- QC/T 674-2024汽車用壓縮天然氣電磁閥
- GB/T 18281.3-2024醫(yī)療保健產(chǎn)品滅菌生物指示物第3部分:濕熱滅菌用生物指示物
- 工作總結(jié)之餐飲實(shí)習(xí)總結(jié)報(bào)告
- 銀行合規(guī)管理制度創(chuàng)新
- 采購(gòu)團(tuán)隊(duì)培訓(xùn)與發(fā)展制度
- 《使用繪圖工具》課件
- 老同學(xué)聚會(huì)感言匯編(35篇)
- SZSD07 0002-2024數(shù)據(jù)要素技術(shù)與管理規(guī)范
- 案例三 夢(mèng)得利服裝
- 《高分子材料的聚合》課件
- 安徽德隆泰化工有限公司年產(chǎn)3000噸246-三甲基苯甲酰氯、20000噸羥基乙酸項(xiàng)(18000噸70%的羥基乙酸產(chǎn)品和2000噸99%的羥基乙酸產(chǎn)品)環(huán)境影響報(bào)告書
- 幼兒園大班春季周計(jì)劃表(整學(xué)期)
- 直燃機(jī)機(jī)組維護(hù)保養(yǎng)規(guī)程
- 《走遍法國(guó)》Reflets課文
- 土地增值稅清算管理規(guī)程
- 【標(biāo)準(zhǔn)格式】有限空間告知牌(罐區(qū)儲(chǔ)罐)
- 中國(guó),全圖及各省,地圖透明,模版
- 2023吉首大學(xué)EDA試題
- 大學(xué)生心理健康教育-大學(xué)生心理健康導(dǎo)論
- 課程設(shè)計(jì)液溴儲(chǔ)罐的設(shè)計(jì)
- 某車間梁模板扣件鋼管高支撐架計(jì)算
評(píng)論
0/150
提交評(píng)論