TI OMAPL處理器介紹(一)

無意間收集到這篇有關OMAP技術介紹文章,感覺出作者的行文幽默,和深厚的技術功底,特分享給大家。

曾經,會單片機的工程師牛得一塌糊塗。想十年前一個會單片機的工程師幾乎就是嵌入式工程師的代名詞。

若干年前,ARM開始暫露頭角,看到單片機工程師的牛氣,ARM工程師笑了。而從包括合衆達在內的中國DSP三巨頭開始在中國推廣DSP時,所有開始使用DSP的工程師笑了。他們有理由笑,他們有資格笑。因爲在那時,DSP就代表着高高在上,收入高、職位高、聲譽高,典型的三高。而經過若干年的推廣,DSP已經脫下了神的外衣,走下了神壇。會DSP的人越來越多。但隨着DSP開發者的日漸增多,DSP的娘嫁人(TI)發現,純DSP血統的姑娘們越來越難嫁了。時代的青年對於姑娘的要求已經不再在能做一手漂亮而高效的女紅(計算)。人們希望娶到家的姑娘是出得廳堂,進得廚房,能歌而善舞。大戶人家的公子希望媳婦兒如DSP般賢良淑德,又像ARM般千妖百媚。

2005年TI推出了DaVinci技術,這一血統的姑娘既賢良淑德又千嬌百媚。ARM926+ 64x+在世界各地的選美比賽中,DaVinci小姐一路過關斬將,一屆又一屆地當選爲世界小姐。但後來人們發現,所有的評委都是對AV比較感興趣的。一時間,AV門事件波及全球。在人民大衆強大的呼聲裏,OMAPL小姐,姍姍來遲。 ARM+674x(定浮點DSP)。她是如此的大方美麗,如此的平易近人,她是無冕的后冠。

接下來的幾天,我會繼續介續OMAPL處理器家族。在我做完基本介紹之後,我的同事even會講述如何實現ARM+DSP的通信。

器件功能組成

名詞解釋:OMAPL = Oh My Application Processor Low-power edition.(Blacksword獨家解釋)


OMAPL處理器內部構成:介紹OMAPL內部構成之前,我們先來回顧一下TI的DSP功能結構。下圖是TMS320C6748的blockdiagram


從圖上可以看出DSP器件其實本質上就是一個DSP運算核心,通過SwitchFabric/EDMA連接了一堆片上外設而已。至於核心那部分,我們大部分只是DSP器件的使用者,而不是設計者,不需要花過多的精力去深究。

我們以前講DSP的開發:就硬件而言即將需要用到的片內外設引出來而已,把片外的外設連接到總線上而已;而做硬件,我個人認爲都無所謂是否DSP工程師,因爲DSP也好、ARM也好、X86也好,考驗工程師的都是指定的板子硬件線路連接正確性,能不能在指定面積上布完,電路會否出現局部過熱,電磁兼容性好否,高速接口線長線寬是否合理等,而這一切不會因是否DSP而有任何的不同。

個人認就DSP而言,軟件的開發,纔是真正的DSP開發。而就軟件而言,即設置好SwitchFabric以便能夠選中指定的外設,然後讀取指定外設上的數據,將這此處理好的數據再寫到其它指定的外設上而已。從這一點上講,開發DSP本身並非高高在上的神話。大部分所謂的DSP高手,其實嚴格來講應該說是數學高手,邏輯高手,他們小小的一點手段,就可以讓算法效率提高很多。真正的高手,只有實在在算法沒什麼可以摳的,纔會使用匯編。

那我們不管高手不高手的,總之其實要會寫一個簡單的DSP程序,做基本的處理,大家都覺得比較容易的。

在第0講中,我們提到TI從2005年推出了DaVinci系列平臺。但很多人用了後,心裏有着說不出的委屈,尤其是少部分因爲DaVinci而被減員下來的。

這部分人看到了OMAP-L,覺得OMAP-L這個平臺非常“親切”,“親切”得讓他們牙癢癢。怎麼看怎麼像DaVinci。且放下“親切”的問題不談,我們先來看看DaVinci的表妹OMAP-L到底長得什麼樣。蓋頭掀開,OMAP-L的臉蛋身材如下圖(圖爲OMAP-L138):


與表姐DaVinci相好過的人,一定能看出來。表姐表妹的區別僅在於一個胸大(在VICP),一個秀氣(DSP爲定浮點),但我更希望大家將目光從胸部移開,這樣才有助於我們從整體上認識DaVinci與OMAP-L這對姐妹花。

請大家看看OMAP-L138與TMS320C6748(代表了傳統DSP)之間的聯繫與區別。你一定會很容易就發現:
共同點就是同樣是處理器核心通過Switch連接到各種不同的片上外設。
而最大的不同點就是OMAP-L片內有兩個處理器核心,一個ARM 一個DSP。
你要是問一下有經驗的DSP開發工程師,開發DSP難不難,你會得到什麼答案?
同樣你可以問一下有經驗的ARM開發工程,開發ARM難不難,你會得到什麼答案?

很多公司在很多項目中已經同時使用ARM和DSP,那怎麼將ARM和DSP混搭出來的DaVinci/OMAP-L怎麼就有很多人覺得不好用呢?
其實這個問題誠然有TI的原因,但與我們本身的用法也有很大的關係。覺得他不好用、不美是很正常的。不信:
你去問一下有經驗的DSP工程師,ARM開發容易否?
很多早期開發DaVinci的公司,一個像樣的ARM工程師都拿不出來,然後就在那裏叫嚷TI提供的東西不全,DaVinci的架構不好,到今天他們也還在說OMAP-L架構不好,就是看着OMAP-L看着像DaVinci。

我們承認對於你的應用TI提供的軟件可能相當不全。但這正在DaVinci的魅力所在,畢竟DaVinci提供的不是山寨貨,而是提供給大家實現無限創意的能力。那麼在基本組件方面,TI會致力於提供給大家符合Linux標準的各種驅動及軟件中間件。有了標準的保證,你會發現如GUI或是RTP/RTSP等更上一個層次的軟件組件上,你根本就不缺軟件,因爲大量的開源項目都是你的項目。

我曾經有一個移植Gnash(Linux下的Flash播放器)的慘痛教訓,在TI DaVinci平臺僅花了幾天時間,所有軟件就移植成功。D1以下的基本上能達到15FPS。但在另一個廠商所謂完善的平臺,確認有對於某幾個特定應用的完整方案,幾乎可以直接將代碼用於量產。但當客戶需要Flash時,找到了我。我遇到的第一個問題是該平臺提供的C語言庫是不完整的,不得已我給客戶重新移植了C語言庫以及編譯器。我們都知道在嵌入式產品上要顯示就通常會用到Framebuffer。我的第二個問題,就是Gnash要用到SDL,SDL最輕量的backend就是framebuffer。但我無比痛苦的發現,該平臺上的framebuffer的驅動並不標準......做了無數的修改之後,終於將Gnash在客戶的平臺上運行起來,新的問題是該平臺提供的那些完整解決方案,不能運行在新的C庫上,然後是非常痛苦的改“解決方案”中程序的過程,總共浪費了好幾個月。

因此,我們認爲TI的平臺還是比較容易使用的,關鍵是你得讓合適的人幹合適的事情。後面我們會分析這個架構,並講述基本的開發流程。下面我們看一下OMAP-L處理器家族都有哪些成員及旁系。OMAPL處理器家族成員:

OMAPL旁系之ARM成員:
AM1808 OMAPL138的無DSP版本
AM1806 AM1808的無EMAC及SATA版本
AM1707 OMAPL137的無DSP版本
OMAPL旁系之DSP成員:
TMS320C6748 OMAPL138的不帶ARM版本
TMS320C6746 TMS320C6748閹EMAC及SATA後的版本
TMS320C6742 閹得就更多了
TMS320C6747 OMAPL138的閹DSP版本
暫時講到這裏,稍候繼續

SCR Switch Central Resource介紹

關於ARM的核心,由於我們不再介紹,它不會因爲披上了TI的外衣就不是ARM
關於DSP的核心本身,我們也不再介紹,畢竟,這裏我們不是要講如何做算法的優化。因此流水線與指令集,都不在考慮之內。
就一個應用而言,最主要的就是各種外設的使用。
而對外設的使用而言,最重要的就是這堆玩意兒是怎麼連接到CPU上的。
如我們在《OMAP-L處理器介紹 1》中所講,在OMAP-L處理器上,外設與CPU們是通過SCR連接在一起的。
好,廢話少說。上圖先!

圖1 OMAP-L138 Switched Central Resource
看到這個圖,肯定很多人與我最開始的感覺一樣,什麼亂七八糟的呀。
裏面的SCR還好說,肯定是Switch Central Resource
但BR是什麼呢?TI沒有給出縮略語說明,但在SPRUGM7D那篇名爲《OMAP-L138 Application Processor System Referrence Guide》第4.1節,也就是上面這個圖的上面一段文字裏列到"The switch fabric is composed of multiple switched central resources (SCRs) and multiple bridges"。
顯然這裏的 BR就是BRidge的意思。
這樣這個圖的作用,就顯然了,就是說數據可以從哪裏到哪裏。
而在這個算是器裏面有能力決定哪個使用哪個SCR或BR的核心爲ARM, DSP, EDMA以及PRU.
講到這可能已經有很多朋友在罵我羅嗦了。
“那麼到底該怎麼決定哪個SCR甚至哪一個BR被使用才能訪問到一個外設, 比如說串口?你要不說清楚,今天別想走!”(腹黑中)
“我們TI,把所有的這些掛在SCR上的外設,統一進行了編址?每個設備都對應在特定的地址上,比如說串口0, 0x01c4 2000 ——0x01c4 2034分別對應着串口寄存器RDR-MDR。客戶只需要大CPU上訪問0x01c4 2000就可以訪問相應串口寄存器,對應的SCR及BR會自動選上” (想知道我們TI是怎麼設計器件,嘿嘿嘿!)
被忽悠了半天看這個圖,比較不爽!(權當消遣了,學習一下芯片的實現原理)
對於我們要用好器件上的外設而言,比較實惠的還是memoryMap。 下圖爲OMAPL138器件的MemoryMap(摘自OmapL138的datasheet).


圖2 OMAPL138 MemoryMap

從數據表我們可以看出如果要從DSP訪問DSPL2RAM,只要在DSP代碼裏訪問0x0080,0000到0x0083,ffff
有的人可能要問題,要是我候通過ARM訪問呢,那我們往下翻MemoryMap這個表(如下圖)


圖3 OMAPL138 MemoryMap Continued

只需要在ARM裏訪問物理地址0x1180,0000—0x1183,ffff (當然是指物理地址,而不是操作系統內核地址或是用戶空間地址)。
前面說了各個處理器怎麼看外設,儘管圖一中也能看出ARM與DSP關係的一點端倪,但估計還有很多人在疑惑ARM與DSP這小兩口怎麼是什麼關係。(廢話,你都說是小兩口了)。
我們總結一下圖1及圖2,3所涉及到的MemoryMap表的的內容,我們就不難看現,其實ARM與DSP之間的關係就是如圖4這樣


圖4 站在民政局的角度打量ARM與DSP的關係。

今天我們知道了ARM及DSP怎麼通過SCR訪問的外設,也知ARM與DSP是怎麼XXOO的。

關於ARM與DSP XXOO的詳細介紹,我們在下一講介紹。

敬請期待。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章