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