基于DSP的圖象采集與處理系統(tǒng)的設(shè)計(jì)
4 系統(tǒng)軟件設(shè)計(jì)
本文引用地址:http://2s4d.com/article/85729.htm4.1 DSP的軟件開發(fā)
TMS320C6000軟件開發(fā)的一切過程都可在CCS集成環(huán)境下進(jìn)行,包括項(xiàng)目的建立、源代碼的編輯以及程序的編譯和調(diào)試。圖4所示是TMS320C6000的軟件開發(fā)流程圖。其中黑體部分是開發(fā)C代碼的常規(guī)流程,其它功能可用于輔助和加速軟件開發(fā)過程。
該CCS能對用戶開發(fā)的源代碼進(jìn)行優(yōu)化。目的是縮短代碼長度并提高代碼執(zhí)行效率。其中,C優(yōu)化器對C源代碼進(jìn)行優(yōu)化,所進(jìn)行的優(yōu)化包括針對C代碼的一般優(yōu)化和針對C6000的優(yōu)化,如重新安排語句和表達(dá)式、把變量分配給寄存器、打開循環(huán)和模塊級優(yōu)化(把若干個(gè)文件組成1個(gè)模塊進(jìn)行優(yōu)化)等。C優(yōu)化器完成的最重要的優(yōu)化處理是軟件流水(software pipeline)。軟件流水是專門針對循環(huán)代碼的一種優(yōu)化技術(shù),利用軟件流水可以生成非常緊湊的循環(huán)代碼,這也是C6000的C編譯器能夠達(dá)到較高編譯效率的主要原因。
匯編優(yōu)化器是C6000代碼產(chǎn)生工具內(nèi)極具特色的一部分。它在DSP業(yè)界首創(chuàng)了對線性匯編代碼自動(dòng)進(jìn)行優(yōu)化的技術(shù)。線性匯編語言是為簡化C6000匯編語言程序的開發(fā)而設(shè)計(jì)的,它不是獨(dú)立的編程語言。它可用用戶編寫的線性匯編代碼作為輸入,同時(shí)產(chǎn)生一個(gè)標(biāo)準(zhǔn)匯編代碼作為輸出。與C6000的標(biāo)準(zhǔn)匯編語言相比,采用線性匯編不需要考慮并行指令安排、指令延遲和寄存器,而由匯編優(yōu)化器自動(dòng)完成,其所產(chǎn)生的代碼效率可以達(dá)到人工編寫代碼效率的95%-100%,同時(shí)還可以降低編程工作量,縮短開發(fā)周期。
C6000程序的調(diào)試和仿真有兩種模式:軟件仿真和硬件仿真。軟件仿真時(shí),其程序的執(zhí)行完全靠主機(jī)上的仿真軟件模擬,程序單步或者運(yùn)行的結(jié)果都是仿真軟件“計(jì)算”出來的。而硬件仿真需要目標(biāo)板。仿真程序利用開發(fā)系統(tǒng)將代碼下載到DSP,程序是在芯片上直接運(yùn)行的。仿真軟件只是把運(yùn)行結(jié)果讀出來顯示。軟件仿真無需目標(biāo)板就可以開始軟件編程,但仿真速度較慢,而且無法仿真某些外設(shè)的功能。硬件仿真的優(yōu)點(diǎn)是仿真速度快,仿真結(jié)果與實(shí)際結(jié)果一致。
4.2 系統(tǒng)的上電引導(dǎo)
C6711的引導(dǎo)裝載方式有三種:一是無引導(dǎo),二是ROM/FLASH引導(dǎo),三是主機(jī)引導(dǎo)。本設(shè)計(jì)采用FLASH引導(dǎo)。根據(jù)DSK開發(fā)板上EMIF與FIASH硬件電路連接設(shè)計(jì)的引導(dǎo)程序如圖5所示。
(1)FLASH存儲器的擦除
擦除FLASH存儲器的關(guān)鍵源代碼如下:
至此FLASH內(nèi)部地址已經(jīng)映射到C6711的CE1空間,其開始地址為 0X90000000H,因此其FLASH_ADR1,F(xiàn)LSH_ADR2的定義如下:
#define FLASH_ADR1 0X90000555
#define FLASH_ADR2 0X900002AA
(2)匯編源代碼文件
本引導(dǎo)代碼的主要功能是將用戶程序段從FLASH復(fù)制到DSP內(nèi)部RAM中。然后再跳轉(zhuǎn)到程序的入口處開始執(zhí)行主程序。這里采用的是EDMA快速實(shí)現(xiàn)DSP存儲空間數(shù)據(jù)搬移的方式?;贓DMA傳輸參數(shù)的設(shè)置方法如表1所列。其核心引導(dǎo)程序如下:
啟動(dòng)EDMA復(fù)制主程序段:CPU可以通過寫事件置位寄存器(ESR)啟動(dòng)一個(gè)EDMA通道,ESR中某一位寫1時(shí),將強(qiáng)行觸發(fā)對應(yīng)的事件。程序如下:
(3)鏈接命令文件
系統(tǒng)中的鏈接命令文件(boot.cmd)如下:
VEC,PMEM代表內(nèi)部RAM的兩個(gè)存儲空間,而CEVEC,CEPMEM代表FLASH內(nèi)的兩塊存儲空間,對目標(biāo)文件中各段的加載地址和運(yùn)行地址可在SECTIONS段實(shí)現(xiàn):
引導(dǎo)裝載是設(shè)計(jì)DSP系統(tǒng)所必需的過程。本設(shè)計(jì)采用EDMA方式來實(shí)現(xiàn)程序的快速搬移,故可在自制的PCB板上正確地實(shí)現(xiàn)脫機(jī)運(yùn)行。
(4)對DSP寄存器的設(shè)置
只有對相應(yīng)的寄存器實(shí)現(xiàn)EMIF初始化,DSP才能訪問外部存儲器的數(shù)據(jù),其源代碼如下:
5 結(jié)束語
本文介紹了為了在線線圈直徑的測量而開發(fā)線陣CCD圖像采集和處理設(shè)備的具體方法,該系統(tǒng)利用TI公司的高性能浮點(diǎn)DSP-TMS320C6711實(shí)現(xiàn)了對dalsa公司的Piranha2 P2—2x Camera輸出數(shù)據(jù)的采集與處理。給出了一種通用的實(shí)時(shí)圖像處理系統(tǒng),并詳細(xì)討論了系統(tǒng)的具體結(jié)構(gòu)。在該系統(tǒng)中運(yùn)行一些基本的圖像處理(銳化,平滑,邊緣檢測)和壓縮算法(JPEG,H.263),都能達(dá)到實(shí)時(shí)處理的目的。但在實(shí)際應(yīng)用中,由于要求進(jìn)行連續(xù)采集與處理,最好能采用多個(gè)DSP并行工作方式。若物體的運(yùn)動(dòng)速度更快或圖像處理更復(fù)雜時(shí),還應(yīng)采用性能更強(qiáng)的DSP(如TI的64X系列DSP或采用多個(gè)DSP并行處理)。另外,在DSP與USB通訊設(shè)計(jì)中引人FPGA可使系統(tǒng)的設(shè)計(jì)更加靈活,同時(shí)也可為系統(tǒng)以后的擴(kuò)展提供方便。
評論