《国立中央大学资讯工程学系大学部专题报告.docx》由会员分享,可在线阅读,更多相关《国立中央大学资讯工程学系大学部专题报告.docx(54页珍藏版)》请在三一办公上搜索。
1、國立中央大學資訊工程學系大學部專題報告Embedded Application MP3 Player on Dual-Processor Platform OMAP1510指導教授 : 吳曉光 老師學生 : 資工4A 侯凱元 資工4A 黃致遠中華民國92年10月目錄第一章 序論61- 1 研究動機.71- 2 專題目標.81- 3 工作流程.91- 4 開發環境與設備10第二章 德州儀器OMAP 開發套件102- 1 OMAP介紹10 2-1.1 OMAP是什麼?.10 2-1.2 DSP的優點.112- 2 OMAP Architecture介紹.12 2-2-1 OMAP1510 硬體架構
2、.12 2-2.2 OMAP1510軟體架構.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上建構Embedded Linux System.173- 1 嵌入式工具173-1.1 嵌入式程式開發與一般程式開發之不同.173-1.2 Cross
3、 Compiling的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 建構Root File System.263-3.1 Flash ROM.263-3.2 NFS mounting.273-3.3 支援NFS Mounting 的kernel.273-3.4 提供NFS Mounting Ser
4、vice293-3.5 DHCP Server313-3.6 Linux root 檔案系統.323- 4 啟動及測試Innovator音效裝置.333- 5 建構支援DSP processor的環境.343-5.1 Solution - DSP Gateway簡介.343-5.2 DSP Gateway運作架構.353- 6 架設DSP Gateway.363-6.1 重編kernel.363-6.2 DEVFS driver.363-6.3 編譯DSP tool和API.373-6.4 測試.37第四章 MP3 Player.384- 1 MP3 介紹.384- 2 MP3 壓縮原理.39
5、4- 3 Linux MP3 player splay.414.3-1 splay介紹.414.3-2 splay 編譯.414.3-3 splay 的使用說明.41第五章 程式改寫.425-1 程式評估與改寫.425-1.1 Inter-Processor Communication Scheme.425-1.2 ARM part programming.425-1.3 DSP part programming.425-2 程式碼.435-3 雙處理器程式開發注意事項.47第六章 效能評估與討論486-1 速度.486-2 CPU負載.496-3 討論.496-3.1分工處理的經濟效益.49
6、6-3.2音質v.s 浮點與定點運算.496-3.3 DSP Gateway架構的限制.506-3.4減少IO溝通.506-3.5網路掛載File System的Delay.51第七章 結論心得.52第一章 序論1- 1研究動機近年來PDA、手機等無線裝置上發展的趨勢、對複雜的多媒體應用發展越來越多,最新的2.5G和3G手機就是一個很好的例子,它們整合了MP3音訊和MPEG4視訊等多媒體功能。也因此在2001年,德州儀器公司推出開放式多媒體應用平台(Open Multimedia Application Platform;簡稱OMAP)之設計。OMAP 是一套先進的架構 ;它最大的特色是整合了
7、一顆 ARM RISC 處理器 、 一顆低功率消耗的高效能TMS320C55x 數位信號處理器 ( DSP )。把運算工作平均分配給 RISC 以 及 DSP處理器,使系統發揮最大的運算能 , 而不會浪費電池的電力。無疑的,這個新架構OMAP的推出,在多媒體功能等傳統處理器不易實現的應用開發上,有很大的潛力且值得嘗試。我們可以發現到,目前網路上有很多可以跑在RISC處理器的應用程式可下載,但是卻沒有RISC與DSP整合的程式-我們在此先稱之DSP enhanced applications。畢竟,OMAP這個架構算近兩年才推出,發展的時間不算長,有很多值得嘗試的地方,因此我們才會想在德州儀器的
8、OMAP1510 硬體平台上發展嵌入式系統應用,並嘗試開發DSP enhanced applications。1-2 專題目標我們手邊有的硬體是:德州儀器的OMAP1510硬體平台,它最大的特色是雙處理器,它整合一顆General purpose 處理器ARM與一顆DSP處理器。我們的專題就是針對這硬體平台,來建構嵌入式系統環境,並期望能嘗試開發運用到兩顆處理器的應用程式。我們這次專題的目標為: 移植(Porting) Linux到新的硬體平台OMAP1510 建構完整的嵌入式Linux環境 使ARM與DSP兩個處理器能夠順利溝通。 撰寫雙處理器間溝通的程式。嘗試將applicationLin
9、ux MP3 Player,改寫成 DSP-enhanced application,使兩個處理器分工運算執行。1-3 工作流程認識OMAP Architecture熟悉我們的硬體OMAP Innovator建立嵌入式系統工具熟悉DSP程式開發工具CCS使用、評估CCS提供的DSP函式庫移植OMAP Linux Kernel閱讀MP3 ISO標準文件學習寫DSP程式(使用C語言)建立並掛載Root檔案系統 Trace MP3 player splay程式碼建立嵌入式系統環境瞭解MP3 decode,trace解碼部分的程式碼啟動OMAP音效並測試決定邀由DSP分擔MP3解碼的程式部分架設ARM
10、與DSP 溝通環境訂好Inter-processor communication scheme練習雙處理器間的溝通程式寫MP3 player的DSP端程式改寫MP3 player的ARM端程式測試與debugDSP enhancedMP3 player效能評估分析1-4 開發環境與設備硬體:(1) TI OMAP1510 Innovator (2) ACE USB emulator (3) 2台PC軟體:(1) Linux與Windows2000 (2) CCS 2.0(Code Composer Studio),在Windows端 (3) 嵌入式系統工具組(如:cross compiler等
11、),在Linux端第二章 德州儀器OMAP開發套件2-1 OMAP介紹為何OMAP能夠因應時代的需求,以下我們將簡單說明OMAP的優勢,與傳統的單核心的差異。2-1.1 OMAP是什麼?OMAP是一套先進的架構,為無線市場提供了一套系統解決方案,OMAP可以在一顆晶片上,將許多軟硬體組件完美整合在一起,包括:一套軟體基礎架構、一顆ARM RISC處理器、一顆低功率消耗的高效能TMS320C55x數位信號處理器(DSP)以及一套分享式的記憶體架構。透過一組標準的應用程式界面,OMAP 軟體架構也可支援先進的作業系統和應用軟體;此外,TI還發展出一套獨特的DSP/BIOS Bridge架構(2.2
12、.3會介紹),讓設計人員利用最好的方式,把運算工作平均分配給RISC以及DSP處理器,使系統發揮最大的運算效能,而不會浪費電池的電力。OMAP是一種開放式的架構,並提供了一套標準界面,因此可幫助協力廠商發展新的應用軟體或是增加新的功能。OMAP架構可移植到任何一種無線裝置作業系統,而它的應用軟體也相容於絕大多數的作業系統。OMAP架構擁有一種獨特能力,可以在無線網路家電上,同時提供極高的工作效能以及非常省電的特性,因此,OMAP架構已逐漸成為產業的實質標準。 2-1.2 DSP的優點為了支援多媒體內容和廣告、視訊會議、語音辨識以及其它的應用,許多無線家電已開始提供全動畫視訊的播放功能,使DSP
13、技術更顯得重要。DSP確實可提供更好的電力消耗運算效能特性,因為在基本上,視訊與音訊的播放都是一種信號處理工作,而DSP的主要設計目標,就是為了支援信號處理運算。相較於RISC處理器,DSP元件在每個時脈週期內只會消耗更少的電力。而且DSP元件只要用更少的指令,就可完成一個重複大量數學運算的演算法,並可以在一個時脈週期內執行更多的指令。只憑一顆RISC處理器,那麼第二個應用(例如視訊)的執行就會受到影響,由於受限於RISC CPU本身信號處理能力的限制,RISC處理器必須中斷目前的工作,以便處理智慧型電話的要求。相較之下,OMAP架構卻能讓DSP與RISC處理器並行工作,讓OEM在使用DSP功
14、能的同時,讓RISC執行擅長的命令與控制功能。 2- 2 OMAP1510 Architecture介紹我們所使用的OMAP型號為OMAP1510,它包含是一個雙處理器的架構,其中一顆是常用在當行動裝置上的RISC Processor - TI925T ARM9TDMI Core,另一顆是用來做訊號處理的DSP- TMS320C55x DSP Core。2-2-1 OMAP1510 硬體架構OMAP1510平台由一個微處理器子系統(ARM),一個DSP子系統,一個記憶體介面流量控制器、一些專用的多媒體應用週邊設備(MWA)和一個多工介面構成。流量控制器(TC)用於控制對外部記憶體的存取,其最高
15、工作頻率為75MHz,OMAP內還有192K的內部記憶體,由ARM和DSP共享。但只有ARM才能配置DSP中的MMU(記憶體映射單元),因而決定DSP應以怎樣的方式存取這些資源。2-2.2 OMAP1510軟體架構基於ARM的用戶並不需要知道元件中還有DSP。他們可能希望開發環境仍與單核心處理器時的開發環境相同。換句話說,他們希望將DSP完全抽離出來。於是,為了使元件中DSP的存在變得透明,TI導入了DSP橋和多媒體引擎(多媒體網路閘道)的概念。DSP橋為ARM和DSP設立連接,可將其看作同時存在於兩個核心中的軟體層,DSP橋主要用來向ARM上執行的多媒體引擎導出一組API,以便其存取DSP資
16、源。而多媒體引擎則向應用軟體導出一組標準API,這些API正是應用軟體開發商所熟悉的。以下為OMAP1510架構圖: General-purpose processorGPP OSDSP managerOS adaptor DSP/BIOS Bridge DSP task and I/O controlDSP OSOS adaptorTMS320 DSP2-2.3 DSP / BIOS Bridge簡述OMAP架構擁有強大的功能以及易於使用的特性,其中關鍵就在於DSP/BIOS Bridge,它提供了一個整合完美、易於使用的DSP界面給應用軟體發展人員,讓廠商在發展RISC應用程式的時候,可透
17、過一組標準的應用程式界面來使用與控制DSP的執行環境。使用了OMAP平台之後RISC,作業系統核心仍會負擔相同的職責,就像系統只包含了一顆RISC處理器,但只要透過DSP/BIOS Bridge的協助,軟體發展人員就可以把需要大量運算的功能交給DSP元件,讓DSP以非同步的方式來執行這些功能,並且不會佔用RISC處理器核心的排程資源。2-3 TI Innovator套件 - OMAP1510TI Innovator 套件提供我們能夠輕鬆的發展應用程式,套件包含OMAP1510開發平台以及CCS(Code Composer Studio),CCS能夠使我們能夠更容易、更迅速的去發展DSP程式。O
18、MAP中每個核心的最高執行速度都可達到150MHz,並且都可以隨作業頻率的降低而作出相應變動以節約功耗。2-3.1 General Purpose processor - ARM925 ARM既支援32位元也支援16位元(Thumb模式)指令集,ARM925用於執行作業系統(OS)。以下為ARM925的介紹: Up to 175 MHz (maximum frequency) Voltage: 1.5v nominal 16KB I-cache; 8KB D-cache 192-KB of shared internal SRAM - frame buffer Support for 32-b
19、it 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內有5組數據匯流排,在一個周期內允許三次讀取作業和兩次寫入作業。C55x最獨特的一點就是它具備雙MAC結構,並且其內部具有一個硬體圖形加速器。綜上所述,C55x DSP是一款高度複雜但功能強大的,專為基於多媒體的即時應用而設計低功耗元件。DSP用於處理所有多媒體應用。
20、以下為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 KB I-cache, 8 KB D-cache Video hardware accelerators for DCT, iDCT, pixel int
21、erpolation, and motion estimation for video compression 2-3.3 IDE Tool CCS CCS(Code Composer Studio)是由德州儀器所提供用來開發DSP程式的套裝軟體,它提供一個完整的IDE(Integrated Development Environment) ,對於多處理器、多使用者的專案,並且是第一個提供DSP(TMS320C2000、TMS320C5000、 TMS320C6000) 與OMAP應用程式開發的環境。CCS以一致的環境來整合所有host與target工具,包括TI的DSP/BIOS kerne
22、l、code-generation tools、fast simulators、debugger、與Real-Time Data Exchange (RTDX) 技術,簡化應用程式的開發。2-4 PeripheralOMAP元件中有品種豐富的片上週邊設備,這些週邊設備可分為DSP專用週邊設備、DSP公共週邊設備、MPU/DSP共享週邊設備、MPU公共週邊設備和MPU專用週邊設備,其中有些週邊設備只能用於DSP或ARM,其他的則可由二者共享。OMAP中的兩個核心透過幾組週邊設備匯流排存取周邊元件。下圖是OMAP1510的架構圖OMAP1510 System Diagram第三章 在OMAP151
23、0上建構嵌入式Linux系統一開始是從無到有,整個嵌入式系統環境一點一滴的建構起來,從事前工具的準備,到Loader、Kernel到Root檔案系統建構等過程,都會在前4節詳細介紹。而OMAP1510包含了一個ARM處理器和一個DSP處理器。ARM處理器角色定位為General Purpose Processors (GPP),Linux作業系統就是跑在這上面。DSP處理器相較於GPP,它適合做複雜的運算工作,執行起來會比GPP快。若要能同時使用ARM和DSP處理器,我們的Linux還要能支援這兩個之間溝通的機制。這也會在最後兩節介紹。3- 1 嵌入式工具3-1.1 嵌入式程式開發與一般程式開
24、發之不同我們先簡單瞭解一下,在嵌入式系統中程式的開發與一般PC下最大的不同是程式編譯與程式執行是在不同的平台。一般而言,因為嵌入式的硬體平台空間資源以及編輯環境等限制。我們會在桌上型電腦這邊,也是host端來編譯開發程式,這樣會比較方便;而target端是你的目的平台,是真正執行程式的平台。Host端通常和Target端是不同處理器架構的硬體。這裡需要Cross-Compling,Cross-Compiling 就是在某個類型的處理器平台中產生其他類型處理器可執行檔的編譯過程。以x86桌上型電腦(host端)為例,他原本編譯出來的程式,是要給x86 CPU執行的,我們要在x86這邊編譯出能給另
25、外一種CPU架構(如: ARM、PowerPC.)執行的程式,這就是Cross-Compling(跨平台編譯)。這需要在x86電腦上建一套完整的工具程式如:Linker、Locator、Compiler,還有標準C的函式庫。3-1.2 Cross Compiling的GNU工具程式在UNIX下,有標準的GNU計劃,提供很多標準的程式。當然也包括完整的工具程式和C/C+ 函式庫。主要就是binutils 、gcc、glibc、gdb等。以下介紹一下這些工具: GCC ( GNU Compiler Collection) 可以說是 GNU 計畫中最重要的作品之一,它提供了自由軟體世界高品質的編譯器
26、 (compiler)。GCC 一個很大的特色是高度可移植性,目前已知有超過三十種硬體平台與作業系統可以執行 GCC。 Binutils( Binary Utilities )GNU 計畫旗下的 binutils 套件中,主要提供了這兩支重要的程式,分別為組譯器 as 與連結器 ld。在程式的編譯過程中,經過編譯器 (如 GCC) 的編譯與最佳化之後,其輸出往往就是程式的組合語言碼。這時還需要經由組譯器 (assembler) 的組譯動作,將組合語言碼翻譯成機器語言,其輸出通常稱之目的檔 (object file)。再經由連結器 (linker) 將此程式所有的日的檔與其所需的系統函式庫與啟動
27、模組都連結進來 (靜態或動態連結) 之後,才能產生個可執行程式。 GLIBC (GNU C Library)標準的 C 語言中並不包含如資料的輸出入、記憶體管理、及其他進階的系統服務等元件。C語言將這些元件留給作業系統來實作,當我們的程式需要使用這些元件時,必須經由作業系統提供的 C 函式庫 (libc) 來取得這些服務。C 函式庫可說是所有應用程式賴以執行的基底環境。GLIBC裡頭主要是C的分享函式庫( Shared Library )。3-1.3 建立ARM-Linux Cross-Compiling 工具程式 在Linux下建立ARM架構的Cross-Compiling 工具的主要步驟
28、:Step 1. 建立binutilsStep 2. 設定kernel原始檔與標頭檔Cross-compiling的gcc與glibc需要kernel的標頭檔。kernel的source code要先經過 Montivisa 公司(見參考資料)提供的OMAP1510的patch。再修改Makefile的ARCH和CROSS_COMPILE。Step 3. 建立temporary gcc without glibc建立cross-compiled版gcc的先決條件是:必須先安裝好cross-compiled版的glibc與標頭檔。但一開始我們並還沒產生glibc,因為產生glibc也需要gcc。
29、所以可說是雞生蛋、蛋生雞的關係,gcc需要glibc,而glibc本身又需要gcc。不用glibc產生一個暫時的gcc ,可以參考The Dinhibit_libc hack”這篇toolchain HowTO。Step 4. 建立temporary glibc 用之前建立的cross-compiled 版的temporary gcc來編譯glibc,設定./configure -build = i586-linux -target = arm-linux -enable-add-onsStep 5. 重新建立完整的gcc現在glibc和它的標頭檔已經存在了,重新在編譯一次即可。Step 6.
30、 重新建立完整的glibc利用完整的gcc來重新編譯glibc,成完整的cross-compiled C library3-1.4 Serial Communication Program要從host端上看到target 端Linux terminal的畫面。我們是透過PC上的序列連接埠(Serial Port) 透過RS232線與Innovator Board 的序列埠相連接。需要透過minicom(Linux下) 或 超級終端機(Windows 內建的序列埠通訊軟體) 。設定如下:每秒傳輸位元: 115200 baud 資料位元: 8 data bits停止位元: 1 bit 同位檢查:
31、no parity 3- 2 Porting kernel在Kernel之前則要先安裝適當的Loader,來負責load kernel以及開機(booting),再將經過patch成OMAP Innovator版本的kernel編譯好並燒錄到Flash ROM。3-2.1 Setup CCS目的:我們希望能利用CCS把loader與kernel放到OMAP上 (1)軟體: CCS2(Code composer studio 2)為TI所提供的軟體 (2)硬體: 利用ACE模擬器連OMAP的JTAG 設定CCS: 1.事先要先安裝ACE emulator的驅動程式 2.啟動Setup Code
32、Composer Studio 3.Import a Configuration File,選擇OMAP1510 ES2 XDS510 emulator 4.設定Properties,如下圖 (1) Board Name & Data File中,選擇”Auto-generate board data file with extra configuration file”,然後選擇ACE光碟中所附的ace.cfg (2) Board Properities中的IO Port,value設為0x0 (3) Startup GEL File(s)選擇iARM.gel與iDSP.gel (iARM.
33、gel與iDSP.gel為支援ACE的另外的gel)。5. 設定完之後啟動CCS,即結束。3-2.2 編譯及上傳Loader先編譯loader,以便之後load kernel用。而loader本身要上傳到Flash ROM這動作是由CCS 上傳,透過JTAG傳輸。編譯Loader: 我們利用MontaVista所提供的Loader, 編完之後會產生setup與rrload 上傳Loader : 開啟在3-1設定好的CCS,並連接好JTAG連線。選擇File選項裡頭的”Load Program”,來上傳rrload。但實際上此時loader並還沒真正燒錄到rom,此時是在ram中,但這時我們已經
34、可以藉由serial 傳看到loader的畫面。接著,我們選擇2.Store RAM comp to Flash ,才是真的把loader從RAM燒錄到ROM上面,下次重新開機,loader仍然會在ROM上面。3-2.3 編譯及上傳Kernel編譯kernel的過程 (1) kernel linux-2.4.19,需patch到linux-2.4.19-rmk7,這是針對ARM的patch,再利用MontaVista所提供對OMAP的patch,這是針對對OMAP的patch,變成linux-2.4.19-rmk7-omap。(2)要注意編kernel時要指定CROSS_COMPILE,不然會
35、編成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透過serial port 連上omap board step 2 將 linux image轉成 rrload format mkimage -L
36、Addr 10C08000 -EAddr 10C08000 zImage vmlinuz.rr mkimage : rrload目錄裡頭的一支tool , 用來產生rrload format image zImage : original linux kernel with ELF format vmlinuz.rr : linux kernel with rrload format step 3 在rrload menu 中選擇download kernel (參見上圖)於另外一個tty下,打指令 :cat vmlinuz.rr /dev/ttyS03- 3 建構Root File Syst
37、em OS可說是由kernel和Root檔案系統(Root File System)組成的,這是指一個OS的使用者環境,包括應用程式、設定檔、Home目錄等。通常嵌入式系統下的Root檔案系統,有兩種掛載模式,一種是製作成映像檔燒錄到Flash ROM,另外一種則是NFS 掛載。3-3.1 Flash ROM將Root檔案系統製作程映像檔,燒錄進去Flash ROM,由kernel開機時去掛載。但每修改一次系統,就得重新製作映像檔和燒錄的動作,通常在系統完備之後,才傾向用這種掛載方式。我們利用rrload loader所提供的介面來上傳Root檔案系統image,同之前上傳kernel,只是在
38、rrload選單改成download filesystem。我們嘗試的kernel是由delphi公司(見參考資料15 )所提供的, 它會mount 本機上的file system 但是我們開機之後 , 一開始初始畫面都還順利,到了mounting file system 便會卡死 。嘗試換不同File system ,指定不同位址等等, 還是解決不了問題 。根據台灣代理商智控公司(見參考資料16 )的回覆是,因為他Boot ROM上面有加密,暫時無法使用。因此我們打算先採用NFS Mounting。3-3.2 NFS mounting另外一種則是NFS掛載(mounting),這種網路遠端掛
39、載可解決,嵌入式硬體本身空間不足的問題,更重要的是,在測試系統的階段,整個File System常常變動,為避免每做一次更改就要重新製作映像檔和燒錄的動作,NFS Mounting提供我們很方便的模式,來發展我們的嵌入式系統環境。而我們所需要做的工作有:支援NFS Mounting 的kernel提供NFS Mounting的Server提供開機初期網路相關設定的DHCP Server要讓Innovator掛載的Remote Root檔案系統以上過程在接下來幾節中,會一一介紹。3-3.3 支援NFS Mounting 的kernel由於暫時無法解決file system擺在rom上,所遇到開機
40、無法mount的問題, 因此,打算嘗試改採用Mount remote filesystem for the OMAP 這時就用另外一個kernel with NFS mount support ,這個用patch過的rmk-omap的kerenl source即可,它預設即為with NFS mounting。kernel config要做的修改(1) 支援DHCP和BOOTPNetworking options * IP: kernel level autoconfiguration * IP: DHCP support (NEW) * IP: BOOTP support (NEW) Boo
41、tp(bootstrap protocol):提供無硬碟主機所需之IP位址和開機資訊 DHCP:DHCP是從原有的BootP協議發展起來的,原來的目的是為無碟工作站分配IP地址的協議,目前更多的用於集中管理IP地址。DHCP可向前對BOOTP compatible,因此,可用DHCP Server取代BOOTP Server(2) 支援NFS File systemFile system - Network File Systems NFS file system 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=140.115.50.43:/nfs_root ip=dhcp nfs_root