本文主要是關于tms320c6000的相關介紹,并著重對tms320c6000系列dsp的flash啟動設計進行了詳盡的闡述。
tms320c6000
TMS320C6000產品是美國TI公司于1997年推出的dsp芯片,該DSP芯片定點、浮點兼容,其中,定點系列是TMS320C62xx系列,浮點系列是TMS320C67xx系列,2000年3月,TI發布新的C64xx內核,主頻為1.1GHz,處理速度9000MIPS,在圖像處理和流媒體領域得到了廣泛的應用。
C6000片內有8個并行的處理單元,分為相同的兩組。DSP的體系結構采用超長指令字(vliw)結構,單指令字長為32位,指令包里有8條指令,總字長達到256位。執行指令的功能單元已經在編譯時分配好,程序運行時通過專門的指令分配模塊,可以將每個256為的指令包同時分配到8個處理單元,并有8個單元同時運行。芯片最高時鐘頻率為300MHz(67xx系列),且內部8個處理單元并行運行時,其最大處理能力可達到1600MIPS。
Flash
Flash是由macromedia公司推出的交互式矢量圖和 Web 動畫的標準,由Adobe公司收購。做Flash動畫的人被稱之為閃客。網頁設計者使用 Flash 創作出既漂亮又可改變尺寸的導航界面以及其他奇特的效果。Flash的前身是Future Wave公司的Future Splash,是世界上第一個商用的二維矢量動畫軟件,用于設計和編輯Flash文檔。1996年11月,美國Macromedia公司收購了Future Wave,并將其改名為Flash。后又于2005年12月3日被Adobe公司收購。Flash通常也指Macromedia Flash Player(現Adobe Flash Player)。2012年8月15日,Flash退出Android平臺,正式告別移動端。2015年12月1日,Adobe將動畫制作軟件Flash professional CC2015升級并改名為Animate CC 2015.5,從此與Flash技術劃清界限。
基本功能
Flash動畫設計的三大基本功能是整個Flash動畫設計知識體系中最重要、也是最基礎的,包括:繪圖和編輯圖形、補間動畫和遮罩。這是三個緊密相連的邏輯功能,并且這三個功能自Flash誕生以來就存在。
繪圖
Flash包括多種繪圖工具,它們在不同的繪制模式下工作。許多創建工作都開始于像矩形和橢圓這樣的簡單形狀,因此能夠熟練地繪制它們、修改它們的外觀以及應用填充和筆觸是很重要的。對于Flash提供的3種繪制模式,它們決定了“舞臺”上的對象彼此之間如何交互,以及你能夠怎樣編輯它們。默認情況下,Flash使用合并繪制模式,但是你可以啟用對象繪制模式,或者使用“基本矩形”或“基本橢圓”工具,以使用基本繪制模式。
編輯圖形
繪圖和編輯圖形不但是創作Flash動畫的基本功,也是進行多媒體創作的基本功。只有基本功扎實,才能在以后的學習和創作道路上一帆風順;使用FlashProfessional8繪圖和編輯圖形——這是Flash動畫創作的三大基本功的第一位;在繪圖的過程中要學習怎樣使用元件來組織圖形元素,這也是Flash動畫的一個巨大特點。Flash中的每幅圖形都開始于一種形狀。形狀由兩個部分組成:填充(fill)和筆觸(stroke),前者是形狀里面的部分,后者是形狀的輪廓線。如果你總是可以記住這兩個組成部分,就可以比較順利地創建美觀、復雜的畫面。
補間動畫
補間動畫是整個Flash動畫設計的核心,也是Flash動畫的最大優點,它有動畫補間和形狀補間兩種形式;用戶學習Flash動畫設計,最主要的就是學習“補間動畫”設計;在應用影片剪輯元件和圖形元件創作動畫時,有一些細微的差別,你應該完整把握這些細微的差別。
Flash的補間動畫有以下幾種:
1.動作補間動畫
動作補間動畫是Flash中非常重要的動畫表現形式之一,在Flash中制作動作補間動畫的對象必須是“元件”或“組成”對象。
基本概念:在一個關鍵幀上放置一個元件,然后在另一個關鍵幀上改變該元件的大小、顏色、位置、透明度等,Flash根據兩者之間幀的值自動所創建的動畫,被稱為動作補間動畫。
2.形狀補間動畫
所謂的形狀補間動畫,實際上是由一種對象變換成另一個對象,而該過程只需要用戶提供兩個分別包含變形前和變形后對象的關鍵幀,中間過程將由Flash自動完成。
基本概念:在一個關鍵幀中繪制一個形狀,然后在另一個關鍵幀中更改該形狀或繪制另一個形狀,Flash根據兩者之間幀的值或形狀來創建的動畫稱為“形狀補間動畫”。形狀補間動畫可以實現兩個圖形之間顏色、形狀、大小、位置的相互變化,其變形的靈活性介于逐幀動畫和動作補間動畫之間,使用的元素多為鼠標或壓感筆繪制出的形狀。
小提示:在創作形狀補間動畫的過程中,如果使用的元素是圖形元件、按扭、文字,則必須先將其“分離”,然后才能創建形狀補間動畫。
3.逐幀動畫
逐幀動畫是一種常見的動畫形式,它的原理是在“連續的關鍵幀”中分解動畫動作,也就是每一幀中的內容不同,連續播放形成動畫。
基本概念:在時間幀上逐幀繪制幀內容稱為逐幀動畫,由于是一幀一幀地畫,所以逐幀動畫具有非常大的靈活性,幾乎可以表現任何想表現的內容。
在Flash中將JPG、PNG等格式的靜態圖片連續導入到Flash中,就會建立一段逐幀動畫。也可以用鼠標或壓感筆在場景中一幀幀地畫出幀內容,還可以用文字作為幀中的元件,實現文字跳躍、旋轉等特效。
4.遮罩動畫
遮罩是Flash動畫創作中所不可缺少的——這是Flash動畫設計三大基本功能中重要的出彩點;使用遮罩配合補間動畫,用戶更可以創建更多豐富多彩的動畫效果:圖像切換、火焰背景文字、管中窺豹等都是實用性很強的動畫。并且,從這些動畫實例中,用戶可以舉一反三創建更多實用性更強的動畫效果。遮罩的原理非常簡單,但其實現的方式多種多樣,特別是和補間動畫以及影片剪輯元件結合起來,可以創建千變萬化的形式,你應該對這些形式作個總結概括,從而使自己可以有的放矢,從容創建各種形式的動畫效果。
在Flash作品中,常看到很多眩目神奇的效果,而其中部分作品就是利用“遮罩動畫”的原理來制作的,如水波、萬花筒、百葉窗、放大鏡、望遠鏡等。
基本概念:在Flash中遮罩就是通過遮罩圖層中的圖形或者文字等對象,透出下面圖層中的內容。在Flash動畫中,“遮罩”主要有兩種用途:一種是用在整個場景或一個特定區域,使場景外的對象或特定區域外外的對象不可見;另一種是用來遮罩住某一元件的一部分,從而實現一些特殊的效果。
被遮罩層中的對象只能透過遮罩層中的對象顯現出來,被遮罩層可使用按扭、影片剪輯、圖形、位圖、文字、線條等。
5.引導層動畫
基本概念:在Flash中,將一個或多個層鏈接到一個運動引導層,使一個或多個對象沿同一條路徑運動的動畫形式被稱為“引導路徑動畫”。這種動畫可以使一個或多個元件完成曲線或不規則運動。
在Flash中引導層是用來指示元件運行路徑的,所以引導層中的內容可以是用鋼筆、鉛筆、線條、橢圓工具、矩形工具或畫筆工具等繪制的線段,而被引導層中的對象是跟著引導線走的,可以使用影片剪輯、圖形元件、按扭、文字等,但不能應用形狀。
小提示:引導路徑動畫最基本的操作就是使一個運動動畫附著在引導線上,所以操作時應特別注意引導線的兩端,被引導的對象起始點,終止點的兩個中心點一定要對準“引導線”的兩個端頭。
軟件特性
1、Flash被大量應用于互聯網網頁的矢量動畫設計。因為使用向量運算(VectorGraphics)的方式,產生出來的影片占用存儲空間較小。
2、使用Flash創作出的影片有自己的特殊檔案格式(SWF),該公司聲稱全世界97%的網絡瀏覽器都內建Flash播放器(FlashPlayer)。
3、Flash是Macromedia提出的“富因特網應用”(RIA)概念的實現平臺之一。
4、Flash可以把工作成果輸出為exe 格式的文件,在沒有安裝Flash播放器的電腦上隨意瀏覽。
tms320c6000系列dsp的flash啟動設計
隨著數字信號處理器(DSP)技術的迅猛發展,其越來越廣泛地應用于國民經濟的各個領域中。其中,TI公司推出的TMS320C6000系列DSP器件更是在許多需要進行大量數字信號處理運算并兼顧高實時性要求的場合得以應用。TMS320C6000系列DSP的系統設計過程中,DSP器件的啟動加載設計是較難解決的問題之一。
C6000系列DSP的啟動加載方式包括不加載、主機加載和EMIF加載3種。
3種加載方式的比較:不加載方式僅限于存儲器0地址不是必須映射到RAM空間的器件,否則在RAM空間初始化之前CPU會讀取無效的代碼而導致錯誤;主機加載方式則要求必須有一外部主機控制DSP的初始化,這將增加系統的成本和復雜度,在很多實際場合是難以實現的;EMIF加載方式的DSP與外部ROM/Flash接口較為自由,但片上Bootloader工具自動搬移的代碼量有限(1 KB/64 KB)。本文主要討論常用的EMIF加載方式。
1 EMIF加載分析
實際應用中,通常采用的是EMIF加載方式,把代碼和數據表存放在外部的非易失性存儲器里(常采用Flash器件)。
下面以TMS320C6000系列中最新的浮點CPU——TMS320C6713(簡稱“C6713”)為例,詳細分析其EMIF加載的軟硬件實現。
硬件方面,其與16位寬度的Flash器件的接口如圖1所示。
對于不同的DSP器件,加載方式的配置引腳稍有不同。C6713的配置引腳及其定義如表1所列。
應用程序的大小決定了片上的Bootloadet工具是否足夠把所有的代碼都搬移到內部RAM里。對于C6713,片上的Bootloader工具只能將1 KB的代碼搬入內部RAM。通常情況下,用戶應用程序的大小都會超過這個限制。所以,需要在外部Flash的前1 KB范圍內預先存放一小段程序,待片上Bootloader工具把此段代碼搬移入內部并開始執行后,由這段代碼實現將Flash中剩余的用戶應用程序搬移入內部RAM中。此段代碼可以被稱作一個簡單的二級Bootloader。
圖2所示為使用二級Bootloader時的CPU運行流程。
使用二級Bootloader需要考慮以下幾個事項:
◇需要燒寫的COFF(公共目標文件格式)段的選擇;
◇編寫二級Bootloader;
◇將選擇的COFF段燒入Flash。
一個COFF段就是占據一段連續存儲空間的程序或數據塊。COFF段分為3種類型:代碼段、初始化數據段和未初始化數據段。
對于EMIF加載方式,需要加載的鏡像由代碼段(如.vectors和.text等)和初始化數據段(如.cinit,.const,.switch,.data等)構成。另外,可以單獨定義一個.boot-load段存放二級Bootloader。此段也需要寫入Flash。
所有未初始化的數據段(如.bss等)都不需要燒入到Flash中。
2 二級Bootloader的編寫
由于執行二級Bootloader時C的運行環境還未建立起來,所以必須用匯編語言編寫。二級Bootloader可參照其他類似文獻及TI相關文檔。此處不再贅述。
CCS中用戶工程編譯鏈接后產生的.map文件包含了存儲器的詳細分配信息。一個典型的map文件中包含的存儲器分配信息如表2所列。
與cmd文件不同,map文件不僅包含了各段存儲在哪一段內存空間的信息,從map文件中還可以具體知道每個內存區間中有多少被實際使用(燒寫Flash時會用到這個參數)。內存區間中未被使用部分是不需要寫入Flash內容的,實際被使用的部分才是真正需要寫人到Flash中的內容。
3 Flash的燒寫
把代碼等寫入Flash的辦法大體上可分為以下幾種:
① 使用通用燒寫器寫入。
② 使用CCS中自帶的FlashBurn工具。
③ 用戶自己編寫燒寫Flash的程序,由DSP將內存映像寫入Flash。
其中,使用通用燒寫器燒寫需要將內存映像轉換為二進制或十六進制格式的文件,而且要求Flash器件是可插拔封裝的。這將導致器件的體積較大,給用戶的設計帶來不便。
使用TI公司提供的FlashBurn工具的好處在于使用較為直觀。FlashBurn工具提供的圖形界面可以方便地對Flash執行擦除、編程和查看內容等操作。但這種力法的缺點也不少:首先,FlashBurn工具運行時需要下載一個.out鏡像(FBTC,FlashBurn Target Component)到DSP系統中,然后由上位PC機通過仿真器發送消息(指令和數據)給下位DSP,具體對Flash的操作由FBTC執行。然而,這個FBTC一般是針對TI公司提供的DSP專門編寫的,與板上使用的Flash的接口寬度(默認是8位)、操作關鍵字(因生產廠商不同而各異)都有關,所以,對用戶自己制作的硬件不一定適合。例如:如果用戶自己的電路板上使用的是與DSK同品牌的Flash芯片,接口為16位數據寬度,那么,使用FlashBur’n工具燒寫將最多只有一半的Flash容量能夠被使用,要想正確實現]EMIF加載就必須選擇8位加載方式。這就造成了Flash存儲器資源的浪費,同時限制了用戶開發的靈活性。
雖然TI公司提供了FBTC的源代碼供有需要的用戶修改,但這樣用戶需要去了解FBTC的運行機制及其與上位機的通信協議,并對Flash燒寫函數進行修改。用戶可能需要修改的幾個地方如下:對Flash編程的關鍵字和地址,BurnFlash函數中的數據指針和EMIF口的配置(針對1.0版本FBTC)。這就給用戶開發帶來了不便。把開發時間浪費在了解一個并不算簡單的Flash燒寫工具上并不是一個好的選擇。
其次,FlashBurn工具不能識別.out文件,只接受。.ex的十六進制文件,因此,需要將.out文件轉換為.hex文件。這個轉換的工具就是TI公司提供的Hex6x.exe工具。轉換過程的同時,需要一個cmd文件(即圖3中的Hex.cmd)指定作為輸入的.out文件,輸出的.hex文件的格式,板上Flash芯片的類型和大小,需要寫入Flash中的COFF段名等。
使用用戶自己編寫的燒寫Flash的程序較為靈活,避免了文件格式轉換的繁瑣。不過,此方法要求用戶對自己使用的Flash芯片較為熟悉。
通常采用的Flash燒寫程序是單獨建立一個工程的辦法:先把用戶應用程序(包含二級Bootloader)編譯生成的.out文件裝載到目標DSP系統的RAM中,再把燒寫Flash的工程編譯生成的.out文件裝載到目標DSP系統RAM的另一地址范圍,執行Flash燒寫程序,完成對Flash的燒寫。這個辦法要注意避免兩次裝載可能產生的地址覆蓋,防止第2次裝載修改了應該寫入Flash的第1次裝載的內容。
實際上,可以將Flash燒寫程序嵌入到用戶主程序代碼中去,比單獨建立一個燒寫Flash的工程更為方便。Flash芯片的燒寫程序段如下:
ProgramFlashArray函數的第1個參數是源地址指針(指向內部Ram),第2個參數是目標地址指針(指向外部Flash),第3個參數是要寫入的數據長度(單位為字)。
編寫Flash燒寫函數時有3點需要注意:
① 指向Flash地址的指針。由于C6713的低兩位地址用于譯碼作字節選擇,地址總線的最低位是EA2,所以,邏輯地址需要適當的移位才能正確地指向日標。
對8位存儲器而言,應該左移2位;對16位存儲器而言,應該左移1位;對于32位存儲器,則不需要移位。例如要從(往)Flash的0x00000003地址讀(寫)一個字,其邏輯地址應該是0x90000000+(0x0003<<1),而非0x90000003。
② map文件中各內存區間被實際占用的尺寸大小是以字節為單位的,而ProgramFlashArray函數寫入Flash的數據單位為字,所以需要將map文件中得到的尺寸大小的一半作為ProgramFlashArray函數的參數。
③ 燒寫函數中使用了flash_burned常量作為判斷是否需要對Flash操作的依據,且將其初始化為1。這是為了避免Flash加載之后會執行對Flash的操作。此變量應在燒寫Flash時手動修改為0。
在仿真加載方式下,可以在CCS里的watchwindow窗口手動修改flash_burned常量為0,強迫CPU進入對Flash編程的程序段。實驗證明,在仿真加載方式下手動修改flash_burned并不影響寫入到Flash中的flash_burn-ed的值(仍為1),所以,寫入Flash的flash_burned的值仍然是1。在系統Flash加載之后,CPU就會跳過此段代碼,實現正確運行。
結語
關于tms320c6000的相關介紹就到這了,如有不足之處歡迎指正。
-
dsp
+關注
關注
553文章
7987瀏覽量
348742 -
TMS320C6000
+關注
關注
0文章
96瀏覽量
15749
發布評論請先 登錄
相關推薦
評論