國立中央大學(xué)資訊工程學(xué)系大學(xué)部專題報(bào)告(doc52)_第1頁
國立中央大學(xué)資訊工程學(xué)系大學(xué)部專題報(bào)告(doc52)_第2頁
國立中央大學(xué)資訊工程學(xué)系大學(xué)部專題報(bào)告(doc52)_第3頁
國立中央大學(xué)資訊工程學(xué)系大學(xué)部專題報(bào)告(doc52)_第4頁
國立中央大學(xué)資訊工程學(xué)系大學(xué)部專題報(bào)告(doc52)_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.:.;國立中央大學(xué)資訊工程學(xué)系大學(xué)部專題報(bào)告Embedded Application MP3 Player on Dual-Processor Platform OMAP1510指導(dǎo)教授 : 吳曉光 老師學(xué)生 : 資工4A 侯凱元 資工4A 黃致遠(yuǎn)中華民國92年10月目錄序論61- 1 研討動(dòng)機(jī).71- 2 專題目標(biāo).81- 3 任務(wù)流程.91- 4 開發(fā)環(huán)境與設(shè)備10德州儀器OMAP 開發(fā)套件102- 1 OMAP介紹10 2-1.1 OMAP是什麼?.10 2-1.2 DSP的優(yōu)點(diǎn).112- 2 OMAP Architecture介紹.12 2-2-1 OMAP1510 硬體架構(gòu).12

2、2-2.2 OMAP1510軟體架構(gòu).12 2-2.3 DSP / BIOS Bridge簡述.132- 3 TI Innovator套件 - OMAP1510.14 2-2.1 General Purpose processor - ARM925T.14 2-2.2 DSP processor - TMS320C55x 15 2-2.3 IDE Tool CCS 15 2-2.4 Peripheral .16在OMAP1510上建構(gòu)Embedded Linux System.173- 1 嵌入式工具173-1.1 嵌入式程式開發(fā)與普通程式開發(fā)之不同.173-1.2 Cross Compili

3、ng的GNU工具程式183-1.3 建立ARM-Linux Cross-Compiling 工具程式.193-1.4 Serial Communication Program.203- 2 Porting kernel.213-2.1 Setup CCS .213-2.2 編譯及上傳Loader.23 3-2.3 編譯及上傳Kernel.243- 3 建構(gòu)Root File System.263-3.1 Flash ROM.263-3.2 NFS mounting.273-3.3 援助NFS Mounting 的kernel.273-3.4 提供NFS Mounting Service293-

4、3.5 DHCP Server313-3.6 Linux root 檔案系統(tǒng).323- 4 啟動(dòng)及測試Innovator音效裝置.333- 5 建構(gòu)援助DSP processor的環(huán)境.343-5.1 Solution - DSP Gateway簡介.343-5.2 DSP Gateway運(yùn)作架構(gòu).353- 6 架設(shè)DSP Gateway.363-6.1 重編kernel.363-6.2 DEVFS driver.363-6.3 編譯DSP tool和API.373-6.4 測試.37MP3 Player.384- 1 MP3 介紹.384- 2 MP3 壓縮原理.394- 3 Linux M

5、P3 player splay.414.3-1 splay介紹.414.3-2 splay 編譯.414.3-3 splay 的運(yùn)用說明.41程式改寫.425-1 程式評(píng)估與改寫.425-1.1 Inter-Processor Communication Scheme.425-1.2 ARM part programming.425-1.3 DSP part programming.425-2 程式碼.435-3 雙處理器程式開發(fā)留意事項(xiàng).47第六章 效能評(píng)估與討論486-1 速度.486-2 CPU負(fù)載.496-3 討論.496-3.1分工處理的經(jīng)濟(jì)效益.496-3.2音質(zhì)v.s 浮點(diǎn)與定點(diǎn)

6、運(yùn)算.496-3.3 DSP Gateway架構(gòu)的限制.506-3.4減少IO溝通.506-3.5網(wǎng)路掛載File System的Delay.51第七章 結(jié)論心得.52序論1- 1研討動(dòng)機(jī)近年來PDA、手機(jī)等無線裝置上發(fā)展的趨勢、對(duì)複雜的多媒體應(yīng)用發(fā)展越來越多,最新的2.5G和3G手機(jī)就是一個(gè)很好的例子,它們整合了MP3音訊和MPEG4視訊等多媒體功能。也因此在2001年,德州儀器公司推出開放式多媒體應(yīng)用平臺(tái)Open Multimedia Application Platform;簡稱OMAP之設(shè)計(jì)。OMAP 是一套先進(jìn)的架構(gòu) ;它最大的特征是整合了一顆 ARM RISC 處理器 、 一顆低功

7、率耗費(fèi)的高效能TMS320C55x 數(shù)位信號(hào)處理器 ( DSP )。把運(yùn)算任務(wù)平均分配給 RISC 以 及 DSP處理器,使系統(tǒng)發(fā)揮最大的運(yùn)算能 , 而不會(huì)浪費(fèi)電池的電力。無疑的,這個(gè)新架構(gòu)OMAP的推出,在多媒體功能等傳統(tǒng)處理器不易實(shí)現(xiàn)的應(yīng)用開發(fā)上,有很大的潛力且值得嘗試。我們可以發(fā)現(xiàn)到,目前網(wǎng)路上有很多可以跑在RISC處理器的應(yīng)用程式可下載,但是卻沒有RISC與DSP整合的程式-我們?cè)诖讼确Q之DSP enhanced applications。畢竟,OMAP這個(gè)架構(gòu)算近兩年才推出,發(fā)展的時(shí)間不算長,有很多值得嘗試的地方,因此我們才會(huì)想在德州儀器的OMAP1510 硬體平臺(tái)上發(fā)展嵌入式系統(tǒng)應(yīng)

8、用,並嘗試開發(fā)DSP enhanced applications。1-2 專題目標(biāo)我們手邊有的硬體是:德州儀器的OMAP1510硬體平臺(tái),它最大的特征是雙處理器,它整合一顆General purpose 處理器ARM與一顆DSP處理器。我們的專題就是針對(duì)這硬體平臺(tái),來建構(gòu)嵌入式系統(tǒng)環(huán)境,並期望能嘗試開發(fā)運(yùn)用到兩顆處理器的應(yīng)用程式。我們這次專題的目標(biāo)為:移植(Porting) Linux到新的硬體平臺(tái)OMAP1510建構(gòu)完好的嵌入式Linux環(huán)境使ARM與DSP兩個(gè)處理器能夠順利溝通。撰寫雙處理器間溝通的程式。嘗試將applicationLinux MP3 Player,改寫成 DSP-enha

9、nced application,使兩個(gè)處理器分工運(yùn)算執(zhí)行。1-3 任務(wù)流程認(rèn)識(shí)OMAP Architecture認(rèn)識(shí)OMAP Architecture熟習(xí)我們的硬體OMAP Innovator建立嵌入式系統(tǒng)工具熟習(xí)DSP程式建立嵌入式系統(tǒng)工具熟習(xí)DSP程式開發(fā)工具CCS運(yùn)用、評(píng)估CCS提供的DSP函式庫移植OMAP Linux Kernel運(yùn)用、評(píng)估CCS提供的DSP函式庫移植OMAP Linux Kernel閱讀MP3 ISO標(biāo)準(zhǔn)文件學(xué)習(xí)寫DSP程式閱讀MP3 ISO標(biāo)準(zhǔn)文件學(xué)習(xí)寫DSP程式(運(yùn)用C語言)建立並掛載Root檔案系統(tǒng) Trace MP3 player splay程式碼Trac

10、e MP3 player splay程式碼建立嵌入式系統(tǒng)環(huán)境瞭解MP3 decode,trace解碼部分的程式碼啟動(dòng)OMAP音效並測試瞭解MP3 decode,trace解碼部分的程式碼啟動(dòng)OMAP音效並測試決定邀由DSP分擔(dān)MP3解碼的程式部分架設(shè)ARM與DSP 溝通環(huán)境決定邀由DSP分擔(dān)MP3解碼的程式部分架設(shè)ARM與DSP 溝通環(huán)境訂好Inter-processor communication scheme練習(xí)雙處理器間訂好Inter-processor communication scheme練習(xí)雙處理器間的溝通程式寫MP3 player的DSP端程式改寫MP3 player的ARM端

11、程式寫MP3 player的DSP端程式改寫MP3 player的ARM端程式測試與debug測試與debugDSP enhancedMP3 playerDSP enhancedMP3 player效能評(píng)估分析效能評(píng)估分析1-4 開發(fā)環(huán)境與設(shè)備硬體:(1) TI OMAP1510 Innovator (2) ACE USB emulator (3) 2臺(tái)PC軟體:(1) Linux與Windows2000 (2) CCS 2.0(Code Composer Studio),在Windows端 (3) 嵌入式系統(tǒng)工具組(如:cross compiler等),在Linux端第二章 德州儀器OMAP

12、開發(fā)套件2-1 OMAP介紹為何OMAP能夠因應(yīng)時(shí)代的需求,以下我們將簡單說明OMAP的優(yōu)勢,與傳統(tǒng)的單中心的差異。2-1.1 OMAP是什麼?OMAP是一套先進(jìn)的架構(gòu),為無線市場提供了一套系統(tǒng)解決方案,OMAP可以在一顆晶片上,將許多軟硬體組件完美整合在一同,包括:一套軟體基礎(chǔ)架構(gòu)、一顆ARM RISC處理器、一顆低功率耗費(fèi)的高效能TMS320C55x數(shù)位信號(hào)處理器(DSP)以及一套分享式的記憶體架構(gòu)。透過一組標(biāo)準(zhǔn)的應(yīng)用程式界面,OMAP 軟體架構(gòu)也可援助先進(jìn)的作業(yè)系統(tǒng)和應(yīng)用軟體;此外,TI還發(fā)展出一套獨(dú)特的DSP/BIOS Bridge架構(gòu)(2.2.3會(huì)介紹),讓設(shè)計(jì)人員利用最好的方式,把

13、運(yùn)算任務(wù)平均分配給RISC以及DSP處理器,使系統(tǒng)發(fā)揮最大的運(yùn)算效能,而不會(huì)浪費(fèi)電池的電力。OMAP是一種開放式的架構(gòu),並提供了一套標(biāo)準(zhǔn)界面,因此可幫助協(xié)力廠商發(fā)展新的應(yīng)用軟體或是添加新的功能。OMAP架構(gòu)可移植到任何一種無線裝置作業(yè)系統(tǒng),而它的應(yīng)用軟體也相容於絕大多數(shù)的作業(yè)系統(tǒng)。OMAP架構(gòu)擁有一種獨(dú)特才干,可以在無線網(wǎng)路家電上,同時(shí)提供極高的任務(wù)效能以及非常省電的特性,因此,OMAP架構(gòu)已逐漸成為產(chǎn)業(yè)的實(shí)質(zhì)標(biāo)準(zhǔn)。 2-1.2 DSP的優(yōu)點(diǎn)為了援助多媒體內(nèi)容和廣告、視訊會(huì)議、語音辨識(shí)以及其它的應(yīng)用,許多無線家電已開始提供全動(dòng)畫視訊的播放功能,使DSP技術(shù)更顯得重要。DSP確實(shí)可提供更好的電力

14、耗費(fèi)運(yùn)算效能特性,因?yàn)樵诟旧希曈嵟c音訊的播放都是一種信號(hào)處理任務(wù),而DSP的主要設(shè)計(jì)目標(biāo),就是為了援助信號(hào)處理運(yùn)算。相較於RISC處理器,DSP元件在每個(gè)時(shí)脈週期內(nèi)只會(huì)耗費(fèi)更少的電力。而且DSP元件只需用更少的指令,就可完成一個(gè)重複大量數(shù)學(xué)運(yùn)算的演算法,並可以在一個(gè)時(shí)脈週期內(nèi)執(zhí)行更多的指令。只憑一顆RISC處理器,那麼第二個(gè)應(yīng)用例如視訊的執(zhí)行就會(huì)遭到影響,由於受限於RISC CPU本身信號(hào)處理才干的限制,RISC處理器必須中斷目前的任務(wù),以便處明智慧型電話的要求。相較之下,OMAP架構(gòu)卻能讓DSP與RISC處理器並行任務(wù),讓OEM在運(yùn)用DSP功能的同時(shí),讓RISC執(zhí)行擅長的命令與控制功能。

15、 2- 2 OMAP1510 Architecture介紹我們所運(yùn)用的OMAP型號(hào)為OMAP1510,它包含是一個(gè)雙處理器的架構(gòu),其中一顆是常用在當(dāng)行動(dòng)裝置上的RISC Processor - TI925T ARM9TDMI Core,另一顆是用來做訊號(hào)處理的DSP- TMS320C55x DSP Core。2-2-1 OMAP1510 硬體架構(gòu)OMAP1510平臺(tái)由一個(gè)微處理器子系統(tǒng)(ARM),一個(gè)DSP子系統(tǒng),一個(gè)記憶體介面流量控制器、一些專用的多媒體應(yīng)用週邊設(shè)備(MWA)和一個(gè)多工介面構(gòu)成。流量控制器(TC)用於控制對(duì)外部記憶體的存取,其最高任務(wù)頻率為75MHz,OMAP內(nèi)還有192K的

16、內(nèi)部記憶體,由ARM和DSP共享。但只需ARM才干配置DSP中的MMU(記憶體映射單元),因此決定DSP應(yīng)以怎樣的方式存取這些資源。2-2.2 OMAP1510軟體架構(gòu)基於ARM的用戶並不需求知道元件中還有DSP。他們能夠希望開發(fā)環(huán)境仍與單中心處理器時(shí)的開發(fā)環(huán)境一樣。換句話說,他們希望將DSP完全抽離出來。於是,為了使元件中DSP的存在變得透明,TI導(dǎo)入了DSP橋和多媒體引擎(多媒體網(wǎng)路閘道)的概念。DSP橋?yàn)锳RM和DSP設(shè)立連接,可將其看作同時(shí)存在於兩個(gè)中心中的軟體層,DSP橋主要用來向ARM上執(zhí)行的多媒體引擎導(dǎo)出一組API,以便其存取DSP資源。而多媒體引擎則向應(yīng)用軟體導(dǎo)出一組標(biāo)準(zhǔn)API

17、,這些API正是應(yīng)用軟體開發(fā)商所熟習(xí)的。以下為OMAP1510架構(gòu)圖: General-purpose processor General-purpose processorGPP OSDSP managerOS adaptorGPP OSDSP managerOS adaptor DSP/BIOS Bridge DSP task and I/O controlDSP OSOS adaptorDSP task and I/O controlDSP OSOS adaptorTMS320 DSPTMS320 DSP2-2.3 DSP / BIOS Bridge簡述OMAP架構(gòu)擁有強(qiáng)大的功能以及易於

18、運(yùn)用的特性,其中關(guān)鍵就在於DSP/BIOS Bridge,它提供了一個(gè)整合完美、易於運(yùn)用的DSP界面給應(yīng)用軟體發(fā)展人員,讓廠商在發(fā)展RISC應(yīng)用程式的時(shí)候,可透過一組標(biāo)準(zhǔn)的應(yīng)用程式界面來運(yùn)用與控制DSP的執(zhí)行環(huán)境。運(yùn)用了OMAP平臺(tái)之後RISC,作業(yè)系統(tǒng)中心仍會(huì)負(fù)擔(dān)一樣的職責(zé),就像系統(tǒng)只包含了一顆RISC處理器,但只需透過DSP/BIOS Bridge的協(xié)助,軟體發(fā)展人員就可以把需求大量運(yùn)算的功能交給DSP元件,讓DSP以非同步的方式來執(zhí)行這些功能,並且不會(huì)佔(zhàn)用RISC處理器中心的排程資源。2-3 TI Innovator套件 - OMAP1510TI Innovator 套件提供我們能夠輕鬆

19、的發(fā)展應(yīng)用程式,套件包含OMAP1510開發(fā)平臺(tái)以及CCS(Code Composer Studio),CCS能夠使我們能夠更容易、更迅速的去發(fā)展DSP程式。OMAP中每個(gè)中心的最高執(zhí)行速度都可達(dá)到150MHz,並且都可以隨作業(yè)頻率的降低而作出相應(yīng)變動(dòng)以節(jié)約功耗。2-3.1 General Purpose processor - ARM925 ARM既援助32位元也援助16位元(Thumb方式)指令集,ARM925用於執(zhí)行作業(yè)系統(tǒng)(OS)。以下為ARM925的介紹:Up to 175 MHz (maximum frequency) Voltage: 1.5v nominal 16KB I-ca

20、che; 8KB D-cache 192-KB of shared internal SRAM - frame buffer Support for 32-bit and 16-bit (Thumb mode) instruction sets Data and program MMUs Two 64-entry translation look-aside buffers (TLBs) for MMUs 2-3.2 DSP processor - TMS320C55xC55x DSP內(nèi)有5組數(shù)據(jù)匯流排,在一個(gè)周期內(nèi)允許三次讀取作業(yè)和兩次寫入作業(yè)。C55x最獨(dú)特的一點(diǎn)就是它具備雙MAC結(jié)構(gòu),並

21、且其內(nèi)部具有一個(gè)硬體圖形加速器。綜上所述,C55x DSP是一款高度複雜但功能強(qiáng)大的,專為基於多媒體的即時(shí)應(yīng)用而設(shè)計(jì)低功耗元件。DSP用於處理一切多媒體應(yīng)用。以下為TMS320C55x介紹:Up to200 MHz (maximum frequency)Voltage: 1.5v nominal One/two instructions executed per cycle 32K x 16-bit on-chip dual-access RAM (DARAM) (64 KB) 48K x 16-bit on-chip single-access RAM (SARAM) (96 KB) 16

22、KB I-cache, 8 KB D-cache Video hardware accelerators for DCT, iDCT, pixel interpolation, and motion estimation for video compression 2-3.3 IDE Tool CCS CCS(Code Composer Studio)是由德州儀器所提供用來開發(fā)DSP程式的套裝軟體,它提供一個(gè)完好的IDE(Integrated Development Environment) ,對(duì)於多處理器、多運(yùn)用者的專案,並且是第一個(gè)提供DSP(TMS320C2000、TMS320C5000

23、、 TMS320C6000) 與OMAP應(yīng)用程式開發(fā)的環(huán)境。CCS以一致的環(huán)境來整合一切host與target工具,包括TI的DSP/BIOS kernel、code-generation tools、fast simulators、debugger、與Real-Time Data Exchange (RTDX) 技術(shù),簡化應(yīng)用程式的開發(fā)。2-4 PeripheralOMAP元件中有品種豐富的片上週邊設(shè)備,這些週邊設(shè)備可分為DSP專用週邊設(shè)備、DSP公共週邊設(shè)備、MPU/DSP共享週邊設(shè)備、MPU公共週邊設(shè)備和MPU專用週邊設(shè)備,其中有些週邊設(shè)備只能用於DSP或ARM,其他的則可由二者共享。O

24、MAP中的兩個(gè)中心透過幾組週邊設(shè)備匯流排存取周邊元件。下圖是OMAP1510的架構(gòu)圖OMAP1510 System Diagram第三章 在OMAP1510上建構(gòu)嵌入式Linux系統(tǒng)一開始是從無到有,整個(gè)嵌入式系統(tǒng)環(huán)境一點(diǎn)一滴的建構(gòu)起來,從事前工具的準(zhǔn)備,到Loader、Kernel到Root檔案系統(tǒng)建構(gòu)等過程,都會(huì)在前4節(jié)詳細(xì)介紹。而OMAP1510包含了一個(gè)ARM處理器和一個(gè)DSP處理器。ARM處理器角色定位為General Purpose Processors (GPP),Linux作業(yè)系統(tǒng)就是跑在這上面。DSP處理器相較於GPP,它適合做複雜的運(yùn)算任務(wù),執(zhí)行起來會(huì)比GPP快。假設(shè)要能同

25、時(shí)運(yùn)用ARM和DSP處理器,我們的Linux還要能援助這兩個(gè)之間溝通的機(jī)制。這也會(huì)在最後兩節(jié)介紹。3- 1 嵌入式工具3-1.1 嵌入式程式開發(fā)與普通程式開發(fā)之不同我們先簡單瞭解一下,在嵌入式系統(tǒng)中程式的開發(fā)與普通PC下最大的不同是程式編譯與程式執(zhí)行是在不同的平臺(tái)。普通而言,因?yàn)榍度胧降挠搀w平臺(tái)空間資源以及編輯環(huán)境等限制。我們會(huì)在桌上型電腦這邊,也是host端來編譯開發(fā)程式,這樣會(huì)比較方便;而target端是他的目的平臺(tái),是真正執(zhí)行程式的平臺(tái)。Host端通常和Target端是不同處理器架構(gòu)的硬體。這裡需求Cross-Compling,Cross-Compiling 就是在某個(gè)類型的處理器平臺(tái)中

26、產(chǎn)生其他類型處理器可執(zhí)行檔的編譯過程。以x86桌上型電腦(host端)為例,他本來編譯出來的程式,是要給x86 CPU執(zhí)行的,我們要在x86這邊編譯出能給另外一種CPU架構(gòu)(如: ARM、PowerPC.)執(zhí)行的程式,這就是Cross-Compling(跨平臺(tái)編譯)。這需求在x86電腦上建一套完好的工具程式如:Linker、Locator、Compiler,還有標(biāo)準(zhǔn)C的函式庫。3-1.2 Cross Compiling的GNU工具程式在UNIX下,有標(biāo)準(zhǔn)的GNU計(jì)劃,提供很多標(biāo)準(zhǔn)的程式。當(dāng)然也包括完好的工具程式和C/C+ 函式庫。主要就是binutils 、gcc、glibc、gdb等。以下介

27、紹一下這些工具:GCC ( GNU Compiler Collection) 可以說是 GNU 計(jì)畫中最重要的作品之一,它提供了自在軟體世界高品質(zhì)的編譯器 (compiler)。GCC 一個(gè)很大的特征是高度可移植性,目前知有超過三十種硬體平臺(tái)與作業(yè)系統(tǒng)可以執(zhí)行 GCC。Binutils( Binary Utilities )GNU 計(jì)畫旗下的 binutils 套件中,主要提供了這兩支重要的程式,分別為組譯器 as 與連結(jié)器 ld。在程式的編譯過程中,經(jīng)過編譯器 (如 GCC) 的編譯與最正確化之後,其輸出往往就是程式的組合語言碼。這時(shí)還需求經(jīng)由組譯器 (assembler) 的組譯動(dòng)作,將組

28、合語言碼翻譯成機(jī)器語言,其輸出通常稱之目的檔 (object file)。再經(jīng)由連結(jié)器 (linker) 將此程式一切的日的檔與其所需的系統(tǒng)函式庫與啟動(dòng)模組都連結(jié)進(jìn)來 (靜態(tài)或動(dòng)態(tài)連結(jié)) 之後,才干產(chǎn)生個(gè)可執(zhí)行程式。 GLIBC (GNU C Library)標(biāo)準(zhǔn)的 C 語言中並不包含如資料的輸出入、記憶體管理、及其他進(jìn)階的系統(tǒng)服務(wù)等元件。C語言將這些元件留給作業(yè)系統(tǒng)來實(shí)作,當(dāng)我們的程式需求運(yùn)用這些元件時(shí),必須經(jīng)由作業(yè)系統(tǒng)提供的 C 函式庫 (libc) 來獲得這些服務(wù)。C 函式庫可說是一切應(yīng)用程式賴以執(zhí)行的基底環(huán)境。GLIBC裡頭主要是C的分享函式庫( Shared Library )。3-

29、1.3 建立ARM-Linux Cross-Compiling 工具程式 在Linux下建立ARM架構(gòu)的Cross-Compiling 工具的主要步驟 :Step 1. 建立binutilsStep 2. 設(shè)定kernel原始檔與標(biāo)頭檔Cross-compiling的gcc與glibc需求kernel的標(biāo)頭檔。kernel的source code要先經(jīng)過 Montivisa 公司(見參考資料)提供的OMAP1510的patch。再修正Makefile的ARCH和CROSS_COMPILE。Step 3. 建立temporary gcc without glibc建立cross-compiled

30、版gcc的先決條件是:必須先安裝好cross-compiled版的glibc與標(biāo)頭檔。但一開始我們並還沒產(chǎn)生glibc,因?yàn)楫a(chǎn)生glibc也需求gcc。所以可說是雞生蛋、蛋生雞的關(guān)係,gcc需求glibc,而glibc本身又需求gcc。不用glibc產(chǎn)生一個(gè)暫時(shí)的gcc ,可以參考The Dinhibit_libc hack這篇toolchain HowTO。Step 4. 建立temporary glibc 用之前建立的cross-compiled 版的temporary gcc來編譯glibc,設(shè)定./configure -build = i586-linux -target = arm-

31、linux -enable-add-onsStep 5. 重新建立完好的gcc現(xiàn)在glibc和它的標(biāo)頭檔已經(jīng)存在了,重新在編譯一次即可。Step 6. 重新建立完好的glibc利用完好的gcc來重新編譯glibc,成完好的cross-compiled C library3-1.4 Serial Communication Program要從host端上看到target 端Linux terminal的畫面。我們是透過PC上的序列連接埠(Serial Port) 透過RS232線與Innovator Board 的序列埠相連接。需求透過minicom(Linux下) 或 超級(jí)終端機(jī)(Window

32、s 內(nèi)建的序列埠通訊軟體) 。設(shè)定如下:每秒傳輸位元: 115200 baud 資料位元: 8 data bits停頓位元: 1 bit 同位檢查: no parity 3- 2 Porting kernel在Kernel之前則要先安裝適當(dāng)?shù)腖oader,來負(fù)責(zé)load kernel以及開機(jī)(booting),再將經(jīng)過patch成OMAP Innovator版本的kernel編譯好並燒錄到Flash ROM。3-2.1 Setup CCS目的:我們希望能利用CCS把loader與kernel放到OMAP上 (1)軟體: CCS2(Code composer studio 2)為TI所提供的軟體

33、 (2)硬體: 利用ACE模擬器連OMAP的JTAG 設(shè)定CCS: 1.事先要先安裝ACE emulator的驅(qū)動(dòng)程式 2.啟動(dòng)Setup Code Composer Studio 3.Import a Configuration File,選擇OMAP1510 ES2 XDS510 emulator 4.設(shè)定Properties,如下圖 Board Name & Data File中,選擇Auto-generate board data file with extra configuration file,然後選擇ACE光碟中所附的ace.cfg (2) Board Properities中

34、的IO Port,value設(shè)為0 x0 (3) Startup GEL File(s)選擇iARM.gel與iDSP.gel (iARM.gel與iDSP.gel為援助ACE的另外的gel)。5. 設(shè)定完之後啟動(dòng)CCS,即結(jié)束。3-2.2 編譯及上傳Loader先編譯loader,以便之後load kernel用。而loader本身要上傳到Flash ROM這動(dòng)作是由CCS 上傳,透過JTAG傳輸。編譯Loader: 我們利用MontaVista所提供的Loader, 編完之後會(huì)產(chǎn)生setup與rrload 上傳Loader : 開啟在3-1設(shè)定好的CCS,並連接好JTAG連線。選擇File

35、選項(xiàng)裡頭的Load Program,來上傳rrload。但實(shí)際上此時(shí)loader並還沒真正燒錄到rom,此時(shí)是在ram中,但這時(shí)我們已經(jīng)可以藉由serial 傳看到loader的畫面。接著,我們選擇2.Store RAM comp to Flash ,才是真的把loader從RAM燒錄到ROM上面,下次重新開機(jī),loader依然會(huì)在ROM上面。3-2.3 編譯及上傳Kernel編譯kernel的過程 (1) kernel linux-2.4.19,需patch到linux-2.4.19-rmk7,這是針對(duì)ARM的patch,再利用MontaVista所提供對(duì)OMAP的patch,這是針對(duì)對(duì)OM

36、AP的patch,變成linux-2.4.19-rmk7-omap。(2)要留意編kernel時(shí)要指定CROSS_COMPILE,不然會(huì)編成X86版make ARCH=arm CROSS_COMPILE=arm-linux- innovator_config make ARCH=arm CROSS_COMPILE=arm-linux- oldconfig make ARCH=arm CROSS_COMPILE=arm-linux- dep zImage上傳 Linux kernel 利用rrload loader所提供的介面 來load kernel step 1 用minicom透過seri

37、al port 連上omap board step 2 將 linux image轉(zhuǎn)成 rrload format mkimage -LAddr 10C08000 -EAddr 10C08000 zImage vmlinuz.rr mkimage : rrload目錄裡頭的一支tool , 用來產(chǎn)生rrload format image zImage : original linux kernel with ELF format vmlinuz.rr : linux kernel with rrload format step 3 在rrload menu 中選擇download kernel

38、 (參見上圖)於另外一個(gè)tty下,打指令 :cat vmlinuz.rr /dev/ttyS03- 3 建構(gòu)Root File System OS可說是由kernel和Root檔案系統(tǒng)(Root File System)組成的,這是指一個(gè)OS的運(yùn)用者環(huán)境,包括應(yīng)用程式、設(shè)定檔、Home目錄等。通常嵌入式系統(tǒng)下的Root檔案系統(tǒng),有兩種掛載方式,一種是製作成映像檔燒錄到Flash ROM,另外一種則是NFS 掛載。3-3.1 Flash ROM將Root檔案系統(tǒng)製作程映像檔,燒錄進(jìn)去Flash ROM,由kernel開機(jī)時(shí)去掛載。但每修正一次系統(tǒng),就得重新製作映像檔和燒錄的動(dòng)作,通常在系統(tǒng)完備之

39、後,才傾向用這種掛載方式。我們利用rrload loader所提供的介面來上傳Root檔案系統(tǒng)image,同之前上傳kernel,只是在rrload選單改成download filesystem。我們嘗試的kernel是由delphi公司(見參考資料15 )所提供的, 它會(huì)mount 本機(jī)上的file system 但是我們開機(jī)之後 , 一開始初始畫面都還順利,到了mounting file system 便會(huì)卡死 。嘗試換不同F(xiàn)ile system ,指定不同位址等等, 還是解決不了問題 。根據(jù)臺(tái)灣代理商智控公司(見參考資料16 )的回覆是,因?yàn)樗鸅oot ROM上面有加密,暫時(shí)無法運(yùn)用。因

40、此我們計(jì)劃先採用NFS Mounting。3-3.2 NFS mounting另外一種則是NFS掛載(mounting),這種網(wǎng)路遠(yuǎn)端掛載可解決,嵌入式硬體本身空間缺乏的問題,更重要的是,在測試系統(tǒng)的階段,整個(gè)File System經(jīng)常變動(dòng),為防止每做一次更改就要重新製作映像檔和燒錄的動(dòng)作,NFS Mounting提供我們很方便的方式,來發(fā)展我們的嵌入式系統(tǒng)環(huán)境。而我們所需求做的任務(wù)有:援助NFS Mounting 的kernel提供NFS Mounting的Server提供開機(jī)初期網(wǎng)路相關(guān)設(shè)定的DHCP Server要讓Innovator掛載的Remote Root檔案系統(tǒng)以上過程在接下來幾

41、節(jié)中,會(huì)一一介紹。3-3.3 援助NFS Mounting 的kernel由於暫時(shí)無法解決file system擺在rom上,所遇到開機(jī)無法mount的問題, 因此,計(jì)劃嘗試改採用Mount remote filesystem for the OMAP 這時(shí)就用另外一個(gè)kernel with NFS mount support ,這個(gè)用patch過的rmk-omap的kerenl source即可,它預(yù)設(shè)即為with NFS mounting。kernel config要做的修正(1) 援助DHCP和BOOTPNetworking options * IP: kernel level auto

42、configuration * IP: DHCP support (NEW) * IP: BOOTP support (NEW) Bootp(bootstrap protocol):提供無硬碟主機(jī)所需之IP位址和開機(jī)資訊 DHCP:DHCP是從原有的BootP協(xié)議發(fā)展起來的,原來的目的是為無碟任務(wù)站分配IP地址的協(xié)議,目前更多的用於集中管理IP地址。DHCP可向前對(duì)BOOTP compatible,因此,可用DHCP Server取代BOOTP Server(2) 援助NFS File systemFile system - Network File Systems NFS file syst

43、em support* Provide NFSv3 client support* Root file system on NFS(3) 下給Kernel 的命令(Command Line)CONFIG_CMDLINE=mem=32M console=ttyS0,115200n8 noinitrd root=/dev/nfs fsroot=3:/nfs_root ip=dhcp nfs_root 代表nfs server為3 根目錄為/nfs_rootconsole為ttyS0(Serial port 1) ip是用DHCP發(fā)給的3-3.4 提供

44、NFS Mounting Service架設(shè)NFS server (1) 要讓rpc.nfsd 、 rpc.mountd、portmap 等daemon順利跑起來,詳細(xì)可參考網(wǎng)路上文件還有NFS-HOWTO 等資料 。主要是裝nfsutils這套件,再利用 /etc/init.d/nfs這隻script,利用它來啟動(dòng)或關(guān)閉NFS Service。這裡提供一個(gè)測試NFS 相關(guān)的RPC Service 運(yùn)作的指令rootmonkey monkey# rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100005 2 tcp

45、 954 mountd 100003 3 udp 2049 nfs 至少要看到上面這三項(xiàng),他的NFS Server才干正常運(yùn)作(2) 編輯/etc/exports NFS Server設(shè)定檔很單純,只需這個(gè)/etc/exports,用來設(shè)定他要分享出去的目錄、可access的對(duì)象、讀寫權(quán)限等以下為我們的/etc/exports之內(nèi)容:/nfs_root /(rw,no_root_squash) /nfs_root/etc /(rw,no_root_squash) /nfs_root/bin 14

46、/(rw,no_root_squash) /nfs_root/sbin /(rw,no_root_squash) /nfs_root/proc /(rw,no_root_squash) /nfs_root/dev /(rw,no_root_squash) /nfs_root/usr /(rw,no_root_squash) /nfs_root/lib

47、/(rw,no_root_squash)設(shè)定說明 :/nfs_root/sbin、 /nfs_root/etc等這些是我們提供給人分享的目錄可access的對(duì)象是/ 這個(gè)網(wǎng)域的IP讀寫權(quán)限為read/write皆可 . no_root_squash是可運(yùn)用root 權(quán)限 列出本人目前分享出去的目錄rootmonkey init.d# showmount -eExport list for .tw:/nfs_root /255

48、.255.0.0/nfs_root/lib //nfs_root/mnt //nfs_root/usr //nfs_root/dev //nfs_root/var //nfs_root/bin //nfs_root/etc /修正/etc/exports檔案之後並不需求重新啟動(dòng)NFS Ser

49、ver,可利用exportfs( 也在nfsutils套件裡 )名稱 : exportfs - maintain list of NFS exported file systems用法 : #exportfs ra-r Reexport directories-a Export or unexport all directories.3-3.5 DHCP Server一開始kernel 在要準(zhǔn)備去掛載遠(yuǎn)端NFS Server上的檔案系統(tǒng)之前,也需求一個(gè)IP和相關(guān)的網(wǎng)路設(shè)定,才干藉此IP來跟NFS Server要求掛載,但在還沒掛載檔案系統(tǒng)前,他無法讀取本人的網(wǎng)路設(shè)定,因此需求DHCP提供。過程

50、就是kernel發(fā)出BOOTP(bootstrap protocol) REQUEST,而DHCP Server 經(jīng)過驗(yàn)證後,會(huì)回覆BOOTREPLY ,並發(fā)給它一個(gè)IP。安裝DHCP Server後,重點(diǎn)是他的設(shè)定檔/etc/dhcpd.conf以下是/etc/dhcpd.conf的內(nèi)容default-lease-time 600;max-lease-time 7200;option subnet-mask ;option broadcast-address 55;option routers 54;option doma

51、in-name-servers ;option domain-name .tw;subnet netmask allow bootp; allow booting; hardware ethernet 00:00:e8:3d:bb:dd; fixed-address ;前面設(shè)定了netmask、gateway、DNS、IP、並驗(yàn)證卡號(hào)身分,才發(fā)給他一個(gè)的IP。3-3.6 Linux root 檔案系統(tǒng)在NFS Server上建立Innovator所需的

52、root檔案系統(tǒng),剛剛在3-3.4設(shè)定檔/etc/exports裡頭的那些目錄, 如/lib 、/sbin /bin 、/etc等,要事先建立好。利用busybox來建構(gòu)工具軟體運(yùn)用者環(huán)境的一些工具軟體,如: /sbin 、/bin 、/usr/bin裡頭的程式 ls 、cp 、mv 、ping等。在嵌入式系統(tǒng)下,我們會(huì)想只選擇一些根本必要的工具、省去一些重複或不常用的功能,使這些工具的空間最小化。BusyBox是結(jié)合了許多常見的UNIX根本的GNU fileutils、shellutils等裡頭的程式的濃縮替代品,他將有我們所不常運(yùn)用的功能拿掉或是有部分的程式碼是可以重複利用的做最好的運(yùn)用,

53、在維持根本功能的前提下,使他編出來的工具程式最小,以適合嵌入式系統(tǒng)的環(huán)境。編輯必要的設(shè)定檔 如: /etc/fstab 、/ect/init.d/rcS 、/etc/inittab、 /etc/resolv.conf 等Linux要正常運(yùn)作,最根本需求的設(shè)定檔 配置/dev 裡頭的裝置檔如: /dev/audio、 /dev/console 、/dev/mixer 、/dev/ram0 、/dev/ttyS0 利用mknod這指令來產(chǎn)生3- 4 啟動(dòng)及測試Innovator音效裝置3-4.1啟動(dòng)及測試Innovator音效裝置make ARCH=arm CROSS_COMPILE=arm-li

54、nux- modules 編好的driver modules在/usr/src/linux-2.4.19-rmk7-omap1/driver/sound裡頭,共有六個(gè)依序掛上 modprobe i2c-core modprobe i2c-algo-bit modprobe i2c-omap1510 modprobe soundcore modprobe omap-audio modprobe omap1510-aic23 以下為開機(jī)畫面 , 可看到OMAP1510 audio support initialized這樣的字眼3- 5 建構(gòu)援助DSP processor的環(huán)境我們的嵌入式系統(tǒng)是在

55、OMAP1510上運(yùn)作,OMAP1510包含一個(gè)ARM處理器和一個(gè)DSP處理器,作業(yè)系統(tǒng)目前只在ARM處理器下運(yùn)作,假設(shè)要使開發(fā)的程式除了運(yùn)用ARM處理器之外,同時(shí)還能運(yùn)用DSP處理器。那我們還要建構(gòu)一個(gè)援助能運(yùn)用DSP處理器的嵌入式系統(tǒng)環(huán)境。3-5.1 Solution - DSP Gateway簡介DSP Gateway是個(gè)能協(xié)助程式設(shè)計(jì)師輕鬆地同時(shí)運(yùn)用ARM和DSP處理器的一種機(jī)制。它是NOKIA研討中心推出來的,目前援助的架構(gòu),只需我們正在運(yùn)用的OMAP1510。DSP Gateway它主要包含的是ARM端的Linux Driver和DSP端的API,負(fù)責(zé)兩者之間底層硬體設(shè)定、中斷處理

56、、跨處理器溝通傳輸(Inter-Processor Communication)等任務(wù)。有了這溝通管道,我們便可以在分別在兩不同處理器端開發(fā)程式,在ARM端我們可以透過對(duì)/dev下的device file的操控,來與DSP溝通。在DSP端,也有DSP Gateway提供的API,來對(duì)ARM端做溝通或控制。有了DSP Gateway,我們可以不用去管底層硬體架構(gòu),輕鬆地在兩端開發(fā)程式。到DSP Gateway官方網(wǎng)站見參考資料12,下載程式碼來架設(shè),3-5.2 DSP Gateway運(yùn)作架構(gòu)DSP Gateway 包含 Linux device drivers (ARM side program

57、 code)和 DSP libraries (DSP side program code).。以下是DSP-Gateway架構(gòu)圖DSPARM LinuxApplicationDSPARM LinuxApplicationDSP taskDSP taskAP3AP2AP1AP3AP2AP1/dev/AP1/dev/AP2/dev/AP3/dev/AP1/dev/AP2/dev/AP3DSP APIDSP API Device driver Device drivermailboxxmailboxxInterrupt handlerInt handlerInterrupt handlerInt h

58、andlerLinux應(yīng)用軟體可以透過對(duì)device file的讀與寫來跟DSP做溝通DSP端則是透過DSP Gateway 提供的API,來與ARM端溝通 兩端的底層資料傳送,是shared memory的概念。兩端都能開啟一個(gè)以上的task,來做不同的事情,每個(gè)task有本人的device file來做溝通門戶。DSP Gateway提出mailbox當(dāng)溝通單位,mailbox包含command、data、flag。前兩者是一些控制訊號(hào)(Control Signal) 給DSP API或Linux Driver做控制的動(dòng)作, Data則是實(shí)際要傳送的資料。下圖即為mailbox的在OMAP

59、中的關(guān)係圖3- 6 架設(shè)DSP Gateway3-6.1 重編kernel我們現(xiàn)在重新編的kernel是援助DSP Gateway以及它的DSP Driver。Kernel patch將之前Linux-2.4.19-rmk7-omap的source,再對(duì)它做DSP Gateway的patch,成為Linux-2.4.19-rmk7-omap-dsp。Kernel menu config在menuconfig選單裡頭(1) System Type - TI OMAP - OMAP1510 DSP driver 這項(xiàng)要選取。(2) File System - /dev file system su

60、pport (CONFIG_DEVFS_FS)要選。3-6.2 DEVFS driver由於DSP Gateway的driver採用DEVFS這種/dev file system架構(gòu),這是比較新的。之前其他的driver是舊格式的,因此需求安裝devfsd這個(gè)daemon來管理,才可以向前相容(Old Compatibility ) 。3-6.3 編譯DSP tool和APIDSP tool在抓回來的程式碼裡頭有個(gè)DSPtools的目錄,裡頭的程式碼用我們的cross-compiler編譯,產(chǎn)生的dspctl這隻工具程式。dspctl是我們執(zhí)行DSP程式之前的Program Loader及管理

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論