寫一個Ti DSP編程的入門文章吧,。下面我把Ti DSP簡稱DSP,以DM642為例子吧。 底層編程首先對硬件環(huán)境是要熟悉的,,硬件環(huán)境包括:
比如,DM642可以從PCI BOOT可以從Flash BOOT,,到底如何BOOT是由外部引腳配置的,,即硬配置,對于編程來說是不需要理解太多的,,硬件工程師說明的,。如果是PCI BOOT就多看看PCI BOOT方面的資料。有時開發(fā)板提供例子,,比如BSP/BSL/(板級支持包什么名字都一個意思,,一套軟件上的接口),Ti為DM642提供了CSL(芯片支持庫,,主要是片上設備控制的C庫),。需要說明的時,沒有CSL一樣可以編DSP,,那就是查設備的寄存器的用法,,這些都是芯片廠家肯定會提供的。 除此之外,,Ti為DSP提供了一個內核環(huán)境,。作為coder,先可以不了解很多內核機制,,只要知道這個內核怎么用就可以了,,事實上我也沒有去了解很多內核的機制,當然所有內核的機制都差不多,。如果有其他內核編程經驗就很容易理解了,。 然后,C語言當然是必須掌握的,。先不說軟件思想有多少,,至少要很清楚源代碼到二進制是如何的一個過程。這些都不是DSP特有的,。 最后,,底層編程調試工作一般都是仿真,所以對仿真也是要有一定理解的,,簡單地提一下,,DSP仿真就是J-tag。通過捕獲DSP 的Jtag口就可以仿真了,,其內部是一種通訊,。比如仿真時要觀察DSP的RAM,,就是通訊的方式通知DSP,DSP內部得到RAM的數(shù)據(jù),,發(fā)到J-tag,,一切都是廠商和硬件做好的,不多解釋了,。 下面解釋一下DM642從和PC配合時啟動
下面解釋一下DM642的地址空間
對于地址空間,,就是DM642需要存儲數(shù)據(jù),,或者做IO控制的,。DM642主要是拿EMIF接SDRAM做為RAM,,F(xiàn)LASH做為ROM。片內RAM可以做高速RAM,,也可以配置成Cache,。如何配置就是寄存器了,當然用CSL更方便,。
下面解釋幾個片上外設
通過3個例子可以看出,,目前來說,,DM642的編程和單片機區(qū)別不大,都是寄存器,。
下面解釋一下DSP/BIOS,,以下簡稱BIOS,和PC 的BIOS不是一回事 DSP/BIOS是Ti提供的一個內核,RTOS,。RTOS也不是什么稀奇的東西,,簡單地說就是一個實時響應能力比較強的東西,從軟件上看就是中斷處理性能比較高,。 BIOS提供任務管理功能,,如果有PC軟件經驗可以認為BIOS里的任務就是線程。硬中斷和PC一樣,,軟中斷和Windows里的DPC差不多概念,。而CLK其實是硬中斷一樣 PRD其實是軟中斷實現(xiàn)的 IDLE就是最低優(yōu)先級的TSK。既然有多任務就必然有一堆任務同步相關的東西,,SEM(信號量)LCK(資源鎖)ATM(原子操作)等等,,MBX(郵箱)可以看做是消息的意思,這些文檔里面都有,,就需要看書和積累了,。 BIOS本身還提供一些內存管理。內存管理基本上用的不多,,主要是配置,,這個和硬件相關多一點。 外設管理,,外設是任何一個操作系統(tǒng)的一個大話題,,Windows如此,BIOS也是,。DSP編程是危險的,,自己的代碼很容易讓BIOS崩潰,根本原因就是BIOS的代碼很容易就可以被自己的代碼修改,,另外棧溢出也是一個原因,。總之就是BIOS被破壞了,?;氐酵庠O的話題,BIOS下對于那些外設都是可以用寄存器或者CSL了控制的,,所以外設控制本身是簡單的,。由于考慮到軟件的規(guī)范或者說Ti的規(guī)范,建議外設控制都寫成Mini-Driver的形式,。 關于Mini-Driver,,Ti的DDK里面有文檔,例子,。簡單地介紹一下,,Mini-Driver是Class Driver下的一個規(guī)范性Driver,就是說,,Mini-Driver提供一套符合Class Driver標準的接口被Class Driver調用和抽象。而Class Driver本身也有一些接口是可以被Mini-Driver使用的,。 |
|