1 初探OMAP3530
1 初探OMAP3530
我在大二的上學期接觸了ARM這類處理器,在學習其彙編指令集之後,發現她的組合語言程式設計思路和C語言的特別接近,後來才知道,這款處理器是為C語言而設計的,於是,便深深的愛上了ARM這個體系結構。在之後的不斷學習中,瞭解到ARM比較新的CORTEX-A8體系結構以及基於這個體系結構的處理器OMAP3530,特別想買一塊板子學習。但是作為窮學生,總共2000多元的花銷對我來說,可謂是巨資。存了好久的錢,終於在去年(2010年)國慶節的時候如願以償。下面這張圖片就是我的學習平臺。
圖1 SBC3530
1.1 OMAP3530與TPS659xx簡介
OMAP3530是TI公司推出的一款多核處理器,
1.2 OMAP3530的資料手冊如何查詢(以下資料來至網路,部分連結可能無效,我只把我覺得常用的標識出來)
1.2.1 TI官方資源
TI中文主頁:http://focus.ti.com.cn/cn/tihome/docs/homepage.tsp或者http://www.ti.com從“處理器”連結可以連結到每個晶片的資料主頁,比如:http://focus.ti.com.cn/cn/docs/prod/folders/print/omap3530.html或者直接訪問
1.2.2 開發環境和軟體開發包下載
(1)建議大家註冊一個myti,方便下載一些軟體開發工具和資料,並可以設定郵箱提醒http://my.ti.com
(2)CCS等升級
https://www-a.ti.com/downloads/s ... ServiceReleases.htm
(3)軟體開發包BIOS、CODEC ENG,FC,DSPLINK,NDK,xDais,Linux BSP等https://www-a.ti.com/downloads/s ... tcontent/index.html
(4)媒體演算法和wince的bsp,現在從TI的網站上可以免費下載:http://www.ti.com/requestfreesoftware
(5)版本更新:http://www.ti.com/myregisteredsoftware
1.2.3 TI相關開源資源:
(1)很有用的wiki網頁,下面三個域名是一樣的:http://wiki.davincidsp.comhttp://wiki.omap.comhttp://tiexpressdsp.com
(2)XDC/RTSC是完全開源的專案:http://wiki.eclipse.org/DSDP/RTSC
(3)TI Linux OMAP community,可以下載核心等程式碼,不需要註冊
http://linux.omap.com
(4)TI E2E社群,現在人氣可能還不夠旺,但是有問必答
https://community.ti.com/forums/32.aspx
1.2.4 OMAP和Davinci第三方相關資源:
(1)OMAP開源共享http://www.61ic.com/code/forumdisplay.php?fid=291&page=1
(2)OMAP3所用的code sourery開發工具鏈,免費下載http://www.codesourcery.com/gnu_toolchains/arm/download.html
(3)OMAP正式發售EVM資料,由於是mistral做的板子,需要從mistral下載相關資料http://downloads.mistralsolution ... MAP3/Documentation/
(4)LogicPD ZOOM SDKhttp://www.logicpd.com/products/ ... ap3_development_kit
(5)Spectrum Digital - 很多DSP的開發板和模擬器可以從這兒下載資料和升級,包括davincihttp://support.spectrumdigital.com/
(6)Blackhawk - 有些560的模擬器需要從這兒下載驅動和升級 http://www.blackhawk-dsp.com/
1.2.5 開源社群beagleboard相關資源
(1)beagleboard
beagleboard主頁:http://beagleboard.org/
beagleboard wiki主頁:http://elinux.org/BeagleBoard
beagleboard 程式碼下載:http://code.google.com/p/beagleboard
beagleboard 硬體手冊:
http://www.beagleboard.org/uploads/Beagle_HRM_B4.pdf
beagleboard 硬體設計資料(包括原始原理圖和allegro PCB):
http://beagleboard.org/hardware/design
(2)OpenPandora
OpenPandora相關資源:
http://openpandora.org/
OpenPandora WIKI:
http://pandorawiki.org/Main_Page
(3)RealtimeDSP的miniEVM,是beagleboard的低成本克隆:
http://elinux.org/Mini_Board
http://elinux.org/MiniBoardFAQ
kernel更新和檔案下載
http://code.google.com/p/omapminiboard/
1.2.6 其他相關資源
(1)OMAP3515和OMAP3530帶3D硬體加速,採用的是imaganation的PowerVR IP核,支援OpenGL ES1.1和ES2.0,可以從下面的網址下載SDK,支援linux和wince版本:http://www.imgtec.com/powervr/insider/powervr-sdk.asp
文件和API手冊參考OpenGLES的標準及其相關文件:
http://www.khronos.org/opengles/
(2)JVM : 有針對OMAP3平臺的JVM可以直接用,很方便
http://openjdk.java.net/
(3)流媒體軟體框架 Gstreamer
http://gstreamer.freedesktop.org/
基於DMAI的GST在TI處理器上的版本
http://gstreamer.ti.com
https://omapzoom.org/gf/project/gstreamer_ti/
Gstreamer porting on Google's Android
http://groups.google.com/group/prajnashi?hl=en&pli=1
(4)ARM有基於Cortex-A8的Codec庫,封裝進了OpenMax框架,針對只有Cortex-A8核心的OMAP處理器是很有用的,因為該 Codec庫使用了Neon加速器,可以做Player用。
http://en.wikipedia.org/wiki/OpenMAX
1.2.7 一些圖形檔案系統移植:
(1)Android
http://elinux.org/Android_on_OMAP
http://beagleboard.org/project/android/
https://omapzoom.org/gf/project/omapandroid/wiki/
http://labs.embinux.org/android-porting-on-beagle.html
(2)Debian
http://elinux.org/BeagleBoardDebian
(3)Ubuntu
http://elinux.org/BeagleBoardUbuntu
(4)Angstrom
http://www.angstrom-distribution.org/demo/beagleboard
1.3 如何檢視OMAP3530的手冊
TI的東西很好,但是手冊很多,並且東一個西一個的,讓人不知道該如何看。下面總結一下:
(1)如何操作處理器內部資源
OMAP35xx是一系列處理器,它們的內部暫存器的地址、功能等是差不多的,因此要想了解記憶體對映或知道如何操作OMAP3530的GPIO、定時器等,需要檢視《OMAP35x Applications Processor Technical Reference Manual》(文件號SPRUF98),這個手冊看著挺嚇人的,3000多頁,但是並不需要全部看,需要用到什麼看什麼。
此外,TPS659xx也有部分GPIO,如何操作TPS659xx的內部資源,首先要關心OMAP3530與TPS659xx如何使用I2C通訊的;其次,再關心TPS659xx的內部暫存器是怎麼樣的。有關文件《TPS65930/TPS65920 OMAP™ Power-Management and System Companion Devices Technical Reference Manual》(文件編號SWCU052)或《TPS65950 OMAP™ Power-Management and System Companion Devices Technical Reference Manual》(文件編號SWCU050)。
(2)晶片的矽片版本(Silicon Revisions)不一樣,內部暫存器地址等可能不一樣,OMAP3530的版本是3.1,(1)中提到的這個文件的內容對OMAP3530完全適用,暫時不需要去關心Silicon Revisions的文件,在以後看u-boot或linux程式碼時遇到矽片版本條件判斷的程式碼,按照版本3.1的那條路徑走就可以了。
(3)各個晶片都有一個數據手冊,這個手冊是講晶片的電氣特性,封裝等資訊,對硬體製作有用,只搞軟體就不用看了,下面列舉這些手冊:
l 《OMAP3530/25 Applications Processor》(文件編號:SWCS032)
l 《TPS65930/TPS65920 Integrated Power Management/Audio Codec (TPS65930 Only) Data Manual》(文件編號:SWCS037)
l 《TPS65950 Integrated Power Management/Audio Codec Data Manual》(文件編號:SWCS032)
特別需要注意的是OMAP3530有多個封裝,有些封裝甚至在晶片的頂面也有引腳,我們常用的是CUS封裝的晶片。
(4)TI提供了幾個比較有用的文件,在畫原理圖和佈線時可以參考:
l 《Powering OMAP™3 With TPS65930/20: Design-In Guide》(文件編號:SWCU059)這個文件是告訴TPS65930與OMAP3530如何連線。
l 《採用TPS65950為OMAP™3供電:應用設計指南》(文件編號:ZHCU013)這個文件是告訴TPS65950如何與OMAP3530連線,中文版的資料。
l 《TPS65930/TPS65920 Layout Guide》(文件編號:SWCU058)或《TPS65930/TPS65920 Layout Guide》(文件編號:SWCU055)這兩個文件對電源晶片的佈線進行指導。
l 《OMAP3530 Easy CUS Package PCB Escape Routing》(文件編號:SPRAB13)這個文件對CUS封裝的OMAP3530如何佈線進行指導。
(5)對上面的內容總結一下
由於我比較感興趣的是比較偏底層的東西,上面只列舉了部分文件,還有許多文件,例如與DSP有關的、與多媒體有關的,以及一些軟體和原始碼均可在上找到。所有有關暫存器如何設定的資料全部在名字中有“Technical Reference Manual(技術參考手冊)”的手冊中,資料手冊只是電氣特性、封裝等資訊。
1.4 OMAP3530的記憶體對映
按照習慣,在學習一款新的處理器時應該先把記憶體是如何分配的搞清楚,具體的資訊可以參考《OMAP35x Applications Processor Technical Reference Manual》(文件號SPRUF98)(這個文件會被經常用到,以後簡稱《OMAP35x TRM》)的第二章(Memory Mapping)的表2-1(199頁)。
4GB的記憶體剛好被分為4個部分,每部分1GB。
(1)Q0:GPMC的空間,主要用於Flash;
(2)Q1:主要是晶片內部的資源。起始(0x4000 0000)的80KB為內部的ROM,存有韌體,有了這個韌體,我們才可以從Nand Flash或SD卡啟動。之後從0x4020 0000開始的64KB為內部的SRAM,OMAP3530的一級啟動程式碼就被載入到這個SRAM中執行,之後的L4部分的暫存器用於外設,L3部分的暫存器用於系統控制,還有一個IVA2.2是DSP的暫存器。
(3)Q2:外接的RAM就從這裡開始,但是隻有兩個Bank,每個Bank最大接512MB。
(4)Q3:是一些虛擬地址,可以對映到別處,想了一想,這樣還是比較合理的,因為在ARM系統中,Linux使用的是高地址的中斷向量(0xFFFF 0000開始),剛好座落在這個地方,通過設定,可以把這處的地址對映到別出去。
1.5 OMAP平臺的一些名詞
(1)GPMC:General-Purpose Memory Controller,通用的儲存器控制器,用於連線Nand Flash、SRAM、Nor Flash、OneNand、網路控制器(Lan9220);
(2)SDRC:SDRAM Controller,即連線SDRAM的介面;
(3)PCRM:Power, Reset and Clock Management,即電源、復位和時鐘管理模組。