1. 程式人生 > >1 初探OMAP3530

1 初探OMAP3530

1 初探OMAP3530

我在大二的上學期接觸了ARM這類處理器,在學習其彙編指令集之後,發現她的組合語言程式設計思路和C語言的特別接近,後來才知道,這款處理器是為C語言而設計的,於是,便深深的愛上了ARM這個體系結構。在之後的不斷學習中,瞭解到ARM比較新的CORTEX-A8體系結構以及基於這個體系結構的處理器OMAP3530,特別想買一塊板子學習。但是作為窮學生,總共2000多元的花銷對我來說,可謂是巨資。存了好久的錢,終於在去年(2010年)國慶節的時候如願以償。下面這張圖片就是我的學習平臺。

 SBC3530

1 SBC3530

1.1 OMAP3530與TPS659xx簡介

OMAP3530是TI公司推出的一款多核處理器,

採用 720 MHz ARM® Cortex™-A8 核心與 520 MHz TMS320C64x+™ DSP這個晶片使用的是1.8V的電平,因此在和許多外設通訊時需要電平轉換。在看這個晶片的資料手冊時,還會發現:哎呀,這麼牛的晶片怎麼會沒有AD、DA這些東西?原來TI把這些東西放在了他的電源管理晶片上,一般情況下,OMAP3530會與電源管理晶片TPS65930(也可以由TPS65950代替)一起工作,它們之間通過I2C匯流排進行通訊。TPS65930是一個“賢內助”,不但提供系統所需要的時鐘、各種電源,還提供了A/D、D/A、鍵盤掃描、PWM、少量的GPIO等功能。值得說明的是:一、TPS65930/50雖然提供了USB介面使用的5V電源,但是最大值才有100mA,因此通常不使用這個LDO;二、SD卡介面1和2的C/D引腳是由TPS65930/50管理的,OMAP3530是支援SD卡啟動的,
在SD卡啟動過程中,會不會通過TPS659xx來檢查卡片是否插入呢?如果是這樣,那使用小型的microSD卡槽(只有8個引腳)又該如何處理?目前這兩個問題還不清楚。

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或者直接訪問

www.ti.com/omap3530可以下載資料手冊,應用文件,使用者手冊,開發工具等等。

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)各個晶片都有一個數據手冊,這個手冊是講晶片的電氣特性,封裝等資訊,對硬體製作有用,只搞軟體就不用看了,下面列舉這些手冊:

《OMAP3530/25 Applications Processor》(文件編號:SWCS032)

《TPS65930/TPS65920 Integrated Power Management/Audio Codec (TPS65930 Only) Data Manual》(文件編號:SWCS037)

《TPS65950 Integrated Power Management/Audio Codec Data Manual》(文件編號:SWCS032)

特別需要注意的是OMAP3530有多個封裝,有些封裝甚至在晶片的頂面也有引腳,我們常用的是CUS封裝的晶片。

(4)TI提供了幾個比較有用的文件,在畫原理圖和佈線時可以參考:

《Powering OMAP™3 With TPS65930/20: Design-In Guide》(文件編號:SWCU059)這個文件是告訴TPS65930與OMAP3530如何連線。

《採用TPS65950為OMAP™3供電:應用設計指南》(文件編號:ZHCU013)這個文件是告訴TPS65950如何與OMAP3530連線,中文版的資料。

《TPS65930/TPS65920 Layout Guide》(文件編號:SWCU058)或《TPS65930/TPS65920 Layout Guide》(文件編號:SWCU055)這兩個文件對電源晶片的佈線進行指導。

《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,即電源、復位和時鐘管理模組。