以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://www.rfoamep.cn/bbs/index.asp) -- DSP6000系統(tǒng)開發(fā) (http://www.rfoamep.cn/bbs/list.asp?boardid=29) ---- DSP/BIOS在TMS32OC6000編程中自舉引導(dǎo)方法 (http://www.rfoamep.cn/bbs/dispbbs.asp?boardid=29&id=1632) |
-- 作者:wangxinxin -- 發(fā)布時(shí)間:2010-11-22 14:26:20 -- DSP/BIOS在TMS32OC6000編程中自舉引導(dǎo)方法 1 DSP/BIOS的優(yōu)點(diǎn)
(1)全局設(shè)置(system)— 包括內(nèi)存配置、芯片支持庫(kù)設(shè)置、endian模式設(shè)置等; (2)操作系統(tǒng)調(diào)度工具(scheduling)— 包括定時(shí)器、周期器、硬件中斷管理、軟件中斷管理、任務(wù)調(diào)度、系統(tǒng)空載任務(wù)函數(shù)等; (3)同步機(jī)制(synchronization)一一提供一般操作系統(tǒng)都具有的信號(hào)燈、郵箱、隊(duì)列、鎖4個(gè)工具; (4)芯片支持庫(kù)(chip support library)— 針對(duì)不同的DSP芯片幫助配置DSP的外設(shè)資源,最常用的有DMA,MCBSPEMIF,TIMER等的配置; (5)主機(jī)交互接口(input/output)— 提供DSP實(shí)時(shí)運(yùn)行時(shí)與主機(jī)通過(guò)仿真口和CCS(集成開發(fā)系統(tǒng))交互數(shù)據(jù)的機(jī)制; (6)調(diào)試工具(instrumentation)— 記錄器(LOG)可以提供調(diào)試信息,但是特別針對(duì)實(shí)時(shí)操作優(yōu)化;統(tǒng)計(jì)工具(STS)可以統(tǒng)計(jì)調(diào)試過(guò)程中的各種事件。
(1)使用多線程技術(shù)高效地管理DSP的運(yùn)行,以提高運(yùn)行效率; (2)使用標(biāo)準(zhǔn)接口的I/O和中斷; (3)高效地定義和配置系統(tǒng)資源,如系統(tǒng)內(nèi)存和中斷向量表; (4)通過(guò)實(shí)時(shí)分析工具對(duì)用戶應(yīng)用程序的運(yùn)行狀況實(shí)時(shí)查看; (5)向用戶的目標(biāo)應(yīng)用程序添加數(shù)據(jù)結(jié)構(gòu)并圍繞一組相關(guān)線程來(lái)加以組織: (6)幾乎所有的初始化都可以通過(guò)圖形化配置來(lái)完成,而不必詳細(xì)了解各個(gè)寄存器的每一位所代表的意義;
2 DSP/BIOS的資源優(yōu)化
3 程序的自舉引導(dǎo)方法
對(duì)于 TMS320C6x1x,EDMA使用默認(rèn)的ROM時(shí)序從CE1空間(C64x從EMIFB CE1空間)拷貝1KB數(shù)據(jù)到地址0處。
其中,用得最多的是ROM加載。為了生成可以從ROM中自舉的代碼,就要注意DSP/BIOS中的存儲(chǔ)器設(shè)置。對(duì)于TMS320C6x0x,一般而言,64KB的代碼就足夠了,那樣就只需選擇好各個(gè)代碼段的Load Address和Run Address就可以了。DSP/BIOS將自動(dòng)生成cmd文件,而不需用戶自己編寫。如果64KB不夠,則需自己編寫boot程序。而對(duì)于TMS320C6x1x ,1KB的程序一般是不夠用的,所以要自己編寫boot程序。下面以TMS320C6711為例介紹DSP/BIOS中程序空間的配置以及boot程序的編寫方法。 TMS320C6711內(nèi)部含有64KB的RAM,既可以配置為L(zhǎng)2Cache,也可以配置成SRAM。一般而言,在系統(tǒng)上電復(fù)位時(shí)配置為SRAM,將1KB的引導(dǎo)程序從ROM中拷貝到SRAM中,而在引導(dǎo)程序中將用戶的程序從ROM中拷貝到SBSRAM中或SDRAM中去執(zhí)行。在主程序的初始化部分將內(nèi)部RAM配置為高速緩存,這樣可以提高程序的運(yùn)行速度。當(dāng)然,也可以把內(nèi)部RAM用作SRAM,把全部的用戶程序都引導(dǎo)到其中來(lái)執(zhí)行, 首先在 DSP/BIOS的存儲(chǔ)器段管理器(Memory Section Manager)中指定如下幾段:
在 BOOT 程序中,首先要初始化EMIF的相關(guān)寄存器,特別是有外接存儲(chǔ)器時(shí)(如SDRAM或SBSRAM),一定要先初始化相關(guān)寄存器,主要是EMIF全局控制寄存器和CE空間控制寄存器。然后將加載地址位于ROM中而運(yùn)行地址位于RAM中的段從ROM中復(fù)制到RAM中。具體的加載地址和運(yùn)行地址可以在map文件中查到。最后,將程序指針跳轉(zhuǎn)到主程序入口(c_int00)開始執(zhí)行。BOOT程序如下: .sect " .myBootCode "
;*************** ;Configure EMIF
...... ...... ;***************
...... ...... ;*************** ;StartProgram
編寫完 boot程序后,在cmd文件中加上一句:.my_boot_code: {} load=FLASH_BOOT,run=IRAM |