【摘要】TI的TMS320VC5509A DSP芯片提供了幾種不同的引導(dǎo)配置,不同的配置決定了DSP復(fù)位后的初始化和代碼引導(dǎo)方式。本文就TMS320VC5509A DSP的HPI引導(dǎo)過程進(jìn)行了詳細(xì)的設(shè)計,包括HPI的一級引導(dǎo)和二級引導(dǎo),最后給出了HPI二級引導(dǎo)的軟件和硬件的具體實(shí)現(xiàn)。
【關(guān)鍵詞】TMS320VC5509A;HPI;引導(dǎo)過程
Abstract:The TI TMS320VC5509A DSP chip provides several different boot configurations that determine the DSP initialization and boot way in which resetting code is used. This article carried out a detailed designof theTMS320VC5509A HPI boot process, including primary and secondary HPI boot process, and finally gives the software and hardware Implementationof the HPI secondary boot.
Keywords:TMS320VC5509A;HPI;Boot Process
1.概述
TMS320VC5509A的主機(jī)接口HPI(Host Port Interface)是TI公司為了滿足DSP與其他微處理器接口通信而專門設(shè)計的16/32位寬度并行接口。主機(jī)處理器可以通過它直接訪問DSP的整個內(nèi)存空間。
2.DSP的BOOT引導(dǎo)
DSP的BOOT引導(dǎo)是指系統(tǒng)加電或復(fù)位時,DSP將一段存儲在外部的非易失性存儲器的程序代碼通過DMA方式拷貝到內(nèi)部的高速內(nèi)存中運(yùn)行。這樣既能擴(kuò)展DSP有限的存儲空間,又能充分發(fā)揮DSP內(nèi)部資源的效能。
DSP的引導(dǎo)過程[1]為:1)DSP復(fù)位后,通過DMA方式將外部CE1空間的數(shù)據(jù)讀入到內(nèi)部程序空間地址0處,讀入數(shù)據(jù)的多少因芯片而異。 2)DSP推出復(fù)位狀態(tài),開始執(zhí)行內(nèi)部程序空間地址0處的程序,這段程序先將外部主程序數(shù)據(jù)讀入到DSP內(nèi)部程序空間相應(yīng)地址,然后跳轉(zhuǎn)到主程序運(yùn)行。第一步是由芯片自動完成,關(guān)鍵是第二步,用戶需要編寫相應(yīng)的程序,實(shí)現(xiàn)二級引導(dǎo),即用戶主程序的裝載。
為了適應(yīng)不同系統(tǒng)的需要,TMS320-VC5509A提供了不同的引導(dǎo)方式,比如EMIF接口引導(dǎo)方式、串口引導(dǎo)方式、SPI接口引導(dǎo)方式、HPI引導(dǎo)方式和USB引導(dǎo)方式[1]等等,其中主機(jī)接口(HPI)引導(dǎo)以其操作簡便,硬件接口簡單等優(yōu)點(diǎn)被廣大用戶所選用。
3.DSP中HPI引導(dǎo)過程
在我們設(shè)計的系統(tǒng)中,需要用到HPI接口,再用它做為引導(dǎo)方式,以提高系統(tǒng)硬件的利用率,同時避免采用其他引導(dǎo)方式帶來的附加的硬件設(shè)計。
3.1 DSP一級引導(dǎo)
實(shí)際上,TMS320VC55x系列DSP的片內(nèi)固化的Bootloader程序中已經(jīng)包含了HPI的一級引導(dǎo)程序。boot通過復(fù)位時設(shè)置引腳BOOTM[3:0]為0101b來實(shí)現(xiàn)HPI引導(dǎo),在這種引導(dǎo)方式中,外部主機(jī)可以直接將代碼和數(shù)據(jù)加載到DSP存儲器。當(dāng)主機(jī)完成應(yīng)用程序的加載后,它將入口點(diǎn)字節(jié)地址和非0等待標(biāo)志值寫到字地址0060h和0061h中.通知CPU開始執(zhí)行,當(dāng)檢測到等待標(biāo)志位為非0值時,CPU從指定的人口點(diǎn)開始執(zhí)行,從而結(jié)束HPI方式的引導(dǎo)過程。
3.2 DSP二級引導(dǎo)
一級boot完成后,程序boot-image可以通過一級boot程序進(jìn)行二級boot,這里的代碼和數(shù)據(jù)段地址可以不放DARAM內(nèi)。利用二級引導(dǎo)程序突破16K字的空間限制,HPI允許主機(jī)訪問內(nèi)部DARAM的字地址范圍是000060h-003FFFh,共16K字的空間。一般來說,16K字的空間遠(yuǎn)遠(yuǎn)不夠用,大部分代碼都可能放置在SARAM和片外的程序空間,而這部分空間并不是主機(jī)能夠訪問得到的。DSP程序本身是能夠訪問到所有DSP數(shù)據(jù)空間的,所以主機(jī)可以首先放置一個體積不大于16K的程序到DSP內(nèi),再由該程序和主機(jī)協(xié)作完成超出片內(nèi)DARAM的代碼加載。
4.HPI二級引導(dǎo)程序的設(shè)計
二級引導(dǎo)程序的功能就是按照和主機(jī)的某種約定,獲取DSP程序代碼和相應(yīng)地址信息,在DSP所能夠訪問到的存儲器空間生成DSP程序代碼。二級引導(dǎo)需要實(shí)現(xiàn)的功能比較少,代碼量一般都很小,一般來說,我們把boot-image程序轉(zhuǎn)成bin文件進(jìn)行加載。
如圖2所示為二級引導(dǎo)程序的實(shí)現(xiàn)流程,用DARAM中的某些單元作為DSP和主機(jī)的握手單元來實(shí)現(xiàn)二級引導(dǎo)程序。
圖1 二級boot程序流程圖
握手單元功能如下所示:
0x62:傳輸標(biāo)志,主機(jī)置1表示DSP可讀,置0xffff表示傳輸結(jié)束;
DSP置0表示主機(jī)可寫,置0xaaaa表示通知主機(jī)開始下載。
0x66,0x67:當(dāng)前傳輸?shù)臄?shù)據(jù)段的目的起始地址。
5.HPI二級引導(dǎo)的實(shí)現(xiàn)
5.1 HPI二次引導(dǎo)軟件的實(shí)現(xiàn)
加載成功一級boot后,首先要啟動一級boot程序,之后開始加載二級boot。這里寫出主要代碼部分。
1)Load二級boot。
讀取boot-image bin文件字節(jié)總數(shù),將所有字節(jié)寫入到REG_BOOT_DATA寄存器中。寫一個字的數(shù)據(jù),發(fā)送一條CONFIGURE命令到命令寄存器中。
temp_len=file_size;
temp_len>>=1;
for(i=0;i { fread(temp_buf,1,2,boot_file_fp); temp_data=temp_buf[0]; temp_data<<=8; temp_data+=temp_buf[1]; temp_addr=BOOT_DATA_ADDR; write_addr_reg(temp_addr); write_data_reg(&temp_data,1); send_dsp_cmd(CMD_CONFIGURE); } 2)寫入校驗(yàn)數(shù)據(jù) 將校驗(yàn)數(shù)據(jù)BOOT_CHECK寫入REG_BOOT_DATA寄存器,并發(fā)送CONFIGURE命令到命令寄存器REG_DSP_CMD來完成二級boot的檢驗(yàn)工作, temp_addr=BOOT_DATA_ADDR; write_addr_reg(temp_addr); write_data_reg(BOOT_CHECK); send_dsp_cmd(DSP_CMD_CONFIGURE); 3)啟動程序 寫PROGRAM_START_ADDR寄存器,將值0x01寫入該寄存器中,然后發(fā)送COMM START命令到命令寄存器來完成程序啟動。 temp_addr=PROGRAM_START_ADDR; write_addr_reg(temp_addr); temp_data=0x1;//啟動boot-image write_data_reg(temp_data); send_dsp_cmd(0x0B); 5.2 HPI引導(dǎo)過程在硬件上的實(shí)現(xiàn) 在這里用的硬件是at91sam9260 arm芯片作為主CPU[2],與Ti公司的TMS320VC- 5509A dsp芯片[3],其硬件連接圖如圖2所示。 圖2 ARM9260與DSP 5509A的HPI硬件連接 圖3 HPI引導(dǎo)過程顯示打印說明圖 具體實(shí)現(xiàn)分為兩步: 1)編寫轉(zhuǎn)換工具具把COFF文件轉(zhuǎn)換成二進(jìn)制(BIN)文件。首先在PC機(jī)上調(diào)試好二級引導(dǎo)程序和DSP應(yīng)用程序(COFF格式),然后從COFF格式文件中提取有用信息,將其轉(zhuǎn)換成BIN文件,并將這些文件存放到主機(jī)的Flash中。 2)利用主機(jī)程序?qū)IN格式的文件下載到DSP存儲器中。系統(tǒng)啟動后.主機(jī)從Flash中獲取二次引導(dǎo)程序的BIN數(shù)據(jù),通過(下轉(zhuǎn)第21頁)(上接第19頁)HPI將其下載到DSP的DARAM存儲區(qū)內(nèi),下載完成后通知DsP啟動運(yùn)行二級引導(dǎo)程序;然后主機(jī)從其Flash中獲取DSP應(yīng)用程序的BIN數(shù)據(jù),通過HPI將其分段放入DSP的DARAM存儲區(qū)內(nèi);二級引導(dǎo)程序根據(jù)主機(jī)寫入的段數(shù)、目的地址和長度,最終完成DSP應(yīng)用程序的正確定位;最后啟動DSP應(yīng)用程序。 這里以一個簡單的例子為例,二級boot為一個電燈程序采用超級終端顯示加載成功的文字顯示,見圖3,完成加載后,可以在DSP段的XF(101腳)引腳發(fā)送一個方波信號,通過示波器檢測,發(fā)現(xiàn)二級boot程序啟動成功。 6.結(jié)論 對于DSP引導(dǎo)方式,用戶可以根據(jù)自己工作中DSP目標(biāo)系統(tǒng)的需求,靈活選用。這個系統(tǒng)中,我們采用HPI引導(dǎo)方式,提高系統(tǒng)硬件利用率,程序代碼的編寫不再受DSP空間的限制,可采用二級boot的方式,通過主機(jī)進(jìn)行讀寫,方便,可靠,這種方法在很多系統(tǒng)中都已經(jīng)得到應(yīng)用,使用效果非常不錯。 參考文獻(xiàn) [1]TIUsing the TMS320VC5503/C5506/C5507/C5509/C5509ABootloader,2008. [2]寧可慶.DSP HPI口與ARM9總線接口的WINCE下設(shè)計實(shí)現(xiàn)[J].信息系統(tǒng)工程,2010. [3]黨瑞榮.TMS320系列DSP原理、結(jié)構(gòu)及應(yīng)用[M].機(jī)械工業(yè)出版社,2012. [4]王在淵,田玉敏,李申鵬.HPI在DSP程序引導(dǎo)中的應(yīng)用[J].國外電子測量技術(shù),2008 (5). [5]趙洪亮.TMS320C55x DSP應(yīng)用系統(tǒng)設(shè)計(第2版)[M].北京航空航天出版社,2010. 作者簡介:謝于晨(1983—),女,碩士,現(xiàn)供職于江西科技學(xué)院,主要研究方向:嵌入式開發(fā),移動通信等。