專利名稱::一種基于TMS320VC55xx的DSP簡(jiǎn)易開(kāi)發(fā)方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種DSP程序簡(jiǎn)易開(kāi)發(fā)方法,特別涉及一種可以脫離仿真器而進(jìn)行調(diào)試、更新并自主加載運(yùn)行DSP程序的簡(jiǎn)易開(kāi)發(fā)方法。
背景技術(shù):
:在當(dāng)前嵌入式dsp開(kāi)發(fā)領(lǐng)域,普遍存在著開(kāi)發(fā)周期長(zhǎng)、開(kāi)發(fā)難度大、開(kāi)發(fā)費(fèi)用高等問(wèn)題。究其原因在于嵌入式開(kāi)發(fā)不同于普通PC程序開(kāi)發(fā),嵌入式軟件的開(kāi)發(fā)通常采用交叉開(kāi)發(fā)環(huán)境。所謂交叉開(kāi)發(fā)環(huán)境是指用于嵌入式軟件開(kāi)發(fā)的所有工具軟件的集合,一般包括文本編輯器、交叉編譯器、交叉調(diào)試器、仿真器和下載器等工具。目前嵌入式系統(tǒng)開(kāi)發(fā)流程一般如下在宿主機(jī)上生成可供調(diào)試或固化的目標(biāo)程序;通過(guò)交叉調(diào)試器完成軟件的調(diào)試工作;將程序固化到目標(biāo)機(jī)上,當(dāng)目標(biāo)機(jī)上電或復(fù)位時(shí)實(shí)現(xiàn)程序自動(dòng)運(yùn)行。在嵌入式ARM開(kāi)發(fā)中,由于有操作系統(tǒng)的支持,所以對(duì)程序的調(diào)試和更新也往往存在著更多的靈活方案。比如通過(guò)U-boot、ViVi等軟件基本可以實(shí)現(xiàn)脫離仿真器的簡(jiǎn)易開(kāi)發(fā)。而在嵌入式DSP開(kāi)發(fā)中,調(diào)試階段開(kāi)發(fā)者通常采用jtag仿真器的形式來(lái)完成相應(yīng)工作。在向FLASH固化更新程序時(shí)也往往需要仿真器的支持。這無(wú)疑增加了開(kāi)發(fā)成本,降低了維護(hù)的簡(jiǎn)便性。因此,針對(duì)現(xiàn)有技術(shù)中的不足,亟需提供一種便捷、低成本的DSP開(kāi)發(fā)方法。
發(fā)明內(nèi)容本發(fā)明的目的在于避免現(xiàn)有技術(shù)中的不足之處而提供一種基于TMS320VC55XX的DSP程序簡(jiǎn)易開(kāi)發(fā)方法,使得DSP程序的調(diào)試、更新能夠脫離仿真器,降低了開(kāi)發(fā)成本和人工服務(wù)成本。本發(fā)明的目的通過(guò)以下技術(shù)措施實(shí)現(xiàn)提供一種基于TMS320VC55XX的DSP程序簡(jiǎn)易開(kāi)發(fā)方法,通過(guò)Bootloader程序完成對(duì)用戶程序的簡(jiǎn)易調(diào)試和更新工作,所述Bootloader程序包括有啟動(dòng)加載模式和下載模式,所述啟動(dòng)加載模式完成程序的自主運(yùn)行,所述下載模式完成程序的調(diào)試和更新工作;當(dāng)系統(tǒng)上電復(fù)位后,固化在DSP芯片內(nèi)的boot程序會(huì)加載Bootloader程序,此時(shí)若5秒內(nèi)沒(méi)有按鍵則會(huì)進(jìn)入啟動(dòng)加載模式,否則進(jìn)入下載模式。其中,所述用戶程序的生成包括有以下步驟步驟A在宿主機(jī)上編譯鏈接源程序生成目標(biāo)文件;步驟B使用hex轉(zhuǎn)換工具將步驟A的目標(biāo)文件轉(zhuǎn)換為boottable表格式文件;步驟C將步驟B的boottable表格式文件進(jìn)行處理生成映像文件。其中,所述的啟動(dòng)加載模式按照boottable的格式來(lái)加載用戶程序。其中,所述的加載用戶程序的過(guò)程中每讀16KB要進(jìn)行翻頁(yè),所述翻頁(yè)是通過(guò)cpld來(lái)控制Flash高位地址線。其中,所述的下載模式包括有輸入模塊,用于接收從終端輸入的命令和參數(shù);檢查模塊,用于檢測(cè)命令及參數(shù)的合法性;處理模塊,用于根據(jù)不同的命令執(zhí)行相應(yīng)的處理程序;輸出模塊,用來(lái)向終端輸出有關(guān)信息。具體的,所述的輸入模塊,根據(jù)通用異步串口傳輸協(xié)議,將從終端輸入的命令和參數(shù)存儲(chǔ)到內(nèi)存中申請(qǐng)的buffer中,波特率采用11520,一個(gè)起始位,8個(gè)數(shù)據(jù)位,無(wú)奇偶校驗(yàn)位,一個(gè)停止位。具體的,所述的檢查模塊通過(guò)讀取buffer中的命令和參數(shù),并根據(jù)空格進(jìn)行區(qū)分,然后根據(jù)預(yù)先定義好的字符串常量對(duì)命令進(jìn)行匹配,如果不匹配則直接進(jìn)入所述輸出模塊,顯示錯(cuò)誤信息,若匹配成功則根據(jù)具體命令對(duì)參數(shù)進(jìn)行檢查,在參數(shù)無(wú)誤的情況下進(jìn)入所述處理模塊。具體的,所述的處理模塊根據(jù)命令調(diào)用相應(yīng)的函數(shù)完成處理,每個(gè)所述的命令對(duì)應(yīng)一個(gè)子函數(shù),所述函數(shù)的參數(shù)為相應(yīng)命令的參數(shù)。具體的,所述的輸出模塊根據(jù)前面模塊的狀態(tài),把相關(guān)信息打印到終端上。其中,所述的命令禾口參數(shù)為commandarglarg2arg3…,其中command代表相應(yīng)的命令,argn為可選參數(shù),與具體命令有關(guān),command與arg之間用空格分開(kāi),所述參數(shù)之間也用空格分開(kāi)。本發(fā)明的有益效果本發(fā)明的一種基于TMS320VC55XX的DSP程序簡(jiǎn)易開(kāi)發(fā)方法,通過(guò)Bootloader程序完成對(duì)用戶程序的簡(jiǎn)易調(diào)試和更新工作,所述Bootloader程序包括有啟動(dòng)加載模式和下載模式,當(dāng)系統(tǒng)上電復(fù)位后,固化在DSP芯片內(nèi)的boot程序會(huì)加載Bootloader程序,此時(shí)若5s內(nèi)沒(méi)有按鍵則會(huì)進(jìn)入啟動(dòng)加載模式,否則進(jìn)入下載模式。本發(fā)明實(shí)現(xiàn)了dsp程序的簡(jiǎn)易調(diào)試和快速升級(jí),使程序的固化可以脫離仿真器,避免了代碼固化過(guò)程中插拔仿真器及卸載DSP設(shè)備引起的損壞,使得沒(méi)有DSP開(kāi)發(fā)經(jīng)驗(yàn)人員也能能夠完成程序的固化,從而有效的降低開(kāi)發(fā)成本,節(jié)省后期的人工成本,為DSP嵌入式開(kāi)發(fā)提供了便捷、低廉的實(shí)施方法。利用附圖對(duì)本發(fā)明做進(jìn)一步說(shuō)明,但附圖中的內(nèi)容不構(gòu)成對(duì)本發(fā)明的任何限制。圖1為本發(fā)明的實(shí)施例2的系統(tǒng)整體軟硬件結(jié)構(gòu)框圖;圖2為本發(fā)明的實(shí)施例2的Bootloader的工作流程圖;圖3為本發(fā)明的實(shí)施例2的Bootloader啟動(dòng)加載模式流程圖。具體實(shí)施方式實(shí)施例1本發(fā)明的一種基于TMS320VC55XX的DSP程序簡(jiǎn)易開(kāi)發(fā)方法是通過(guò)Bootloader程序完成對(duì)用戶程序的簡(jiǎn)易調(diào)試和更新工作,Bootloader程序包括有啟動(dòng)加載模式和下載模式,啟動(dòng)加載模式完成程序的自主運(yùn)行,下載模式完成程序的調(diào)試和更新工作。開(kāi)發(fā)環(huán)境包括一宿主機(jī)、一目標(biāo)板。宿主機(jī)為一臺(tái)pc機(jī)包括操作系統(tǒng)、集成開(kāi)發(fā)環(huán)境、終端程序;目標(biāo)機(jī)為一單板,包括DSP處理器、Flash、SDRARM、FPGA,UART、按鍵、指示燈等硬件及bootloader和被調(diào)試程序。宿主機(jī)與目標(biāo)板通過(guò)串口進(jìn)行通信。本實(shí)施例中,bootloader程序和被調(diào)試程序要按照boottable表格式生成,具體通過(guò)以下步驟實(shí)現(xiàn)步驟A在宿主機(jī)上編譯鏈接源程序生成目標(biāo)文件;步驟B使用hex轉(zhuǎn)換工具將目標(biāo)文件轉(zhuǎn)換為boottable表格式的文件;步驟C對(duì)該文件進(jìn)行處理生成ccs集成開(kāi)發(fā)環(huán)境所支持的.dat文件,.dat文件即為需要的文件。Bootloader程序放在Flash的第0頁(yè),用戶程序從Flash第1頁(yè)開(kāi)始存放。本實(shí)施例中,bootloader程序包括兩種工作模式=Bootloader啟動(dòng)加載模式和Bootloader下載模式。當(dāng)系統(tǒng)上電復(fù)位后,固化在DSP芯片內(nèi)的boot程序會(huì)加載Bootloader程序,此時(shí)若^內(nèi)沒(méi)有按鍵則會(huì)進(jìn)入啟動(dòng)加載模式,否則進(jìn)入下載模式。具體的,Bootloader啟動(dòng)加載模式主要實(shí)現(xiàn)程序的上電復(fù)位自啟動(dòng),為產(chǎn)品發(fā)布后的主要工作模式。具體的,Bootloader下載模式主要實(shí)現(xiàn)程序的調(diào)試和更新功能。更具體的,Bootloader啟動(dòng)加載模式的具體步驟為依照boottable表的格式首先從Flash第O頁(yè)中讀取用戶程序的入口地址;接著讀取寄存器配置和延時(shí);然后讀取程序中的各個(gè)段;最后當(dāng)讀完整個(gè)文件時(shí)跳轉(zhuǎn)到入口地址開(kāi)始執(zhí)行用戶程序。在上述過(guò)程中每當(dāng)讀完Flash中的一頁(yè),就要進(jìn)行翻頁(yè)操作,F(xiàn)lash通過(guò)cpld與dsp連接,每16KB為一頁(yè)。本實(shí)施例中,Bootloader下載模式通過(guò)串口通信會(huì)向它的終端用戶提供一個(gè)簡(jiǎn)單的命令行接口,以實(shí)現(xiàn)程序調(diào)試、內(nèi)存、寄存器查看、文件下載等功能,并且可以在超級(jí)終端顯示用戶程序中的輸出語(yǔ)句,以達(dá)到簡(jiǎn)單的調(diào)試功能。在命令行接口輸入命令的基本格式為commandarglarg2arg3…,其中command代表相應(yīng)的命令,argn為可選參數(shù),與具體命令有關(guān)。command與arg之間用空格分開(kāi),參數(shù)之間也用空格分開(kāi)?;镜拿钣術(shù)oaddr運(yùn)行addr起始的程序;boot進(jìn)入bootloader啟云力力口載模式;loadbaddr:使用kermit協(xié)議通過(guò)串口下載二進(jìn)制文件到addr起始處;cmpaddrladdr2count比較以addrl禾口addr2起女臺(tái)的count大小的內(nèi)存區(qū)域是否相同;cpsourcetargetcount將source起始的內(nèi)存數(shù)據(jù)拷貝至target處,count表示大mdaddr[count]顯示以addr起始的內(nèi)存數(shù)據(jù),count表示大小,默認(rèn)為1;rdreg:顯示寄存器reg的內(nèi)容,reg為寄存器的地址;erastartend對(duì)Flash從start至Ijend進(jìn)行擦除,start對(duì)應(yīng)sector起始地址,end對(duì)應(yīng)sector結(jié)束地址,特別地eraall代表擦除整片flash。本實(shí)施例中,作為優(yōu)選的實(shí)施方案,Bootloader下載模式包括有輸入模塊、檢查模塊、處理模塊和輸出模塊。其中,輸入模塊用來(lái)接收從終端輸入的命令和參數(shù),檢查模塊用來(lái)檢測(cè)命令及參數(shù)的合法性,如果非法則進(jìn)入輸出模塊,向終端輸出錯(cuò)誤信息。在確保命5令及參數(shù)輸入無(wú)誤后,進(jìn)入處理模塊,根據(jù)不同的命令執(zhí)行相應(yīng)的處理程序,處理完畢后,進(jìn)入輸出模塊,向終端輸出有關(guān)信息。進(jìn)一步的,輸入模塊,根據(jù)通用異步串口傳輸協(xié)議,將從終端輸入的命令和參數(shù)存儲(chǔ)到內(nèi)存中申請(qǐng)的buffer中,波特率采用11520,一個(gè)起始位,8個(gè)數(shù)據(jù)位,無(wú)奇偶校驗(yàn)位,一個(gè)停止位。進(jìn)一步的,檢查模塊,讀取buffer中的命令和參數(shù),并根據(jù)空格進(jìn)行區(qū)分,然后根據(jù)預(yù)先定義好的字符串常量對(duì)命令進(jìn)行匹配,如果不匹配則直接進(jìn)入輸出模塊,顯示錯(cuò)誤信息,若匹配成功則根據(jù)具體命令對(duì)參數(shù)進(jìn)行檢查,在參數(shù)無(wú)誤的情況下進(jìn)入處理模塊。進(jìn)一步的,處理模塊,每個(gè)命令對(duì)應(yīng)一個(gè)子函數(shù),函數(shù)的參數(shù)即為相應(yīng)命令的參數(shù)。根據(jù)命令調(diào)用相應(yīng)的函數(shù)完成處理。進(jìn)一步的,輸出模塊,根據(jù)前面模塊的狀態(tài),把相關(guān)信息打印到終端上。實(shí)施例2本發(fā)明的實(shí)施例2如圖1至圖3所示,通過(guò)一個(gè)實(shí)例程序的調(diào)試和升級(jí)來(lái)對(duì)本發(fā)明做進(jìn)一步的描述。在實(shí)驗(yàn)中,采用德州儀器公司的16位定點(diǎn)DSP芯片TMS320VC5509A,以下簡(jiǎn)稱5509a。其PGE封裝形式只有14根地址總線(AOA13),最大只能尋址16KB的Flash存儲(chǔ)器。若要尋址更大地址空間,就要控制Flash存儲(chǔ)器的高位地址線。為此通過(guò)CPLD在DSP的CE2空間模擬了一個(gè)Flash換頁(yè)寄存器FPR。Flash采用AMD公司的AiC9LV320DB120。(一)程序的調(diào)試如圖1所示,其中顯示了系統(tǒng)整體軟硬件結(jié)構(gòu)框圖,從圖中可知通過(guò)Bootloader以及超級(jí)終端完成對(duì)被調(diào)試程序的簡(jiǎn)易調(diào)試,通過(guò)串口線來(lái)完成宿主機(jī)與目標(biāo)機(jī)的通信。首先將需要調(diào)試的程序按照boottable表的格式生成,具體步驟為在ccs集成開(kāi)發(fā)環(huán)境中生成所要調(diào)試程序的.out文件,由于.out格式不能被Bootloader識(shí)別,因此需要借助TI提供的數(shù)據(jù)轉(zhuǎn)換工具h(yuǎn)ex55來(lái)進(jìn)行轉(zhuǎn)換。接著目標(biāo)機(jī)上電復(fù)位啟動(dòng),則固化在dsp芯片內(nèi)的boot程序會(huì)加載我們的Bootloader程序,然后按下目標(biāo)機(jī)上的任意按鍵進(jìn)入Bootloader下載模式。輸入Ioadb0x4000,然后在超級(jí)終端通過(guò)kermit協(xié)議傳送被調(diào)試文件。待被調(diào)試文件傳輸完畢,輸入go0x4000,運(yùn)行被調(diào)試程序,根據(jù)程序的輸出信息判斷程序的運(yùn)行狀態(tài),在可能出現(xiàn)問(wèn)題的區(qū)域通過(guò)內(nèi)存操作命令如cmp、md等來(lái)查看內(nèi)存數(shù)據(jù),以確定程序潛在的錯(cuò)誤。然后回到ccs中修改源代碼重新執(zhí)行上述過(guò)程。(二)程序的升級(jí)當(dāng)程序需要升級(jí)的時(shí)候,首先將需要更新的程序下載到目標(biāo)機(jī)內(nèi)存中,具體步驟可見(jiàn)程序的調(diào)試中所述方法。然后使用era命令擦除將要存放更新程序的Flash扇區(qū),如era0x0400000x047FFF,則擦除從0x040000到0x047FFF的扇區(qū)。然后使用cp命令將文件從內(nèi)存拷貝至flash相應(yīng)區(qū)間。最后重新啟動(dòng)系統(tǒng)進(jìn)入bootloader啟動(dòng)加載模式,根據(jù)圖3和圖4加載更新后的程序。權(quán)利要求1.一種基于TMS320VC55XX的DSP簡(jiǎn)易開(kāi)發(fā)方法,其特征在于通過(guò)Bootloader程序完成對(duì)用戶程序的簡(jiǎn)易調(diào)試和更新工作,所述Bootloader程序包括有啟動(dòng)加載模式和下載模式,所述啟動(dòng)加載模式完成程序的自主運(yùn)行,所述下載模式完成程序的調(diào)試和更新工作;當(dāng)系統(tǒng)上電復(fù)位后,固化在DSP芯片內(nèi)的boot程序會(huì)加載Bootloader程序,此時(shí)若5秒內(nèi)沒(méi)有按鍵則會(huì)進(jìn)入啟動(dòng)加載模式,否則進(jìn)入下載模式。2.根據(jù)權(quán)利要求1所述的簡(jiǎn)易開(kāi)發(fā)方法,其特征在于,所述用戶程序的生成包括有以下步驟步驟A在宿主機(jī)上編譯鏈接源程序生成目標(biāo)文件;步驟B使用hex轉(zhuǎn)換工具將步驟A的目標(biāo)文件轉(zhuǎn)換為boottable表格式文件;步驟C將步驟B的boottable表格式文件進(jìn)行處理生成映像文件。3.根據(jù)權(quán)利要求2所述的簡(jiǎn)易開(kāi)發(fā)方法,其特征在于,所述的啟動(dòng)加載模式按照boottable的格式來(lái)加載用戶程序。4.根據(jù)權(quán)利要求3所述的簡(jiǎn)易開(kāi)發(fā)方法,其特征在于,所述的加載用戶程序的過(guò)程中每讀16KB要進(jìn)行翻頁(yè),所述翻頁(yè)是通過(guò)cpld來(lái)控制Flash高位地址線。5.根據(jù)權(quán)利要求1所述的簡(jiǎn)易開(kāi)發(fā)方法,其特征在于,所述的下載模式包括有輸入模塊,用于接收從終端輸入的命令和參數(shù);檢查模塊,用于檢測(cè)命令及參數(shù)的合法性;處理模塊,用于根據(jù)不同的命令執(zhí)行相應(yīng)的處理程序;輸出模塊,用來(lái)向終端輸出有關(guān)信息。6.根據(jù)權(quán)利要求5所述的簡(jiǎn)易開(kāi)發(fā)方法,其特征在于,所述的輸入模塊,根據(jù)通用異步串口傳輸協(xié)議,將從終端輸入的命令和參數(shù)存儲(chǔ)到內(nèi)存中申請(qǐng)的buffer中,波特率采用11520,一個(gè)起始位,8個(gè)數(shù)據(jù)位,無(wú)奇偶校驗(yàn)位,一個(gè)停止位。7.根據(jù)權(quán)利要求6所述的簡(jiǎn)易開(kāi)發(fā)方法,其特征在于,所述的檢查模塊通過(guò)讀取buffer中的命令和參數(shù),并根據(jù)空格進(jìn)行區(qū)分,然后根據(jù)預(yù)先定義好的字符串常量對(duì)命令進(jìn)行匹配,如果不匹配則直接進(jìn)入所述輸出模塊,顯示錯(cuò)誤信息,若匹配成功則根據(jù)具體命令對(duì)參數(shù)進(jìn)行檢查,在參數(shù)無(wú)誤的情況下進(jìn)入所述處理模塊。8.根據(jù)權(quán)利要求7所述的簡(jiǎn)易開(kāi)發(fā)方法,其特征在于,所述的處理模塊根據(jù)命令調(diào)用相應(yīng)的函數(shù)完成處理,每個(gè)所述的命令對(duì)應(yīng)一個(gè)子函數(shù),所述函數(shù)的參數(shù)為相應(yīng)命令的參數(shù)。9.根據(jù)權(quán)利要求8所述的簡(jiǎn)易開(kāi)發(fā)方法,其特征在于,所述的輸出模塊根據(jù)前面模塊的狀態(tài),把相關(guān)信息打印到終端上。10.根據(jù)權(quán)利要求6至8任意一項(xiàng)所述的簡(jiǎn)易開(kāi)發(fā)方法,其特征在于,所述的命令和參數(shù)為commandarglarg2arg3…,其中command代表相應(yīng)的命令,argn為可選參數(shù),與具體命令有關(guān),command與arg之間用空格分開(kāi),所述參數(shù)之間也用空格分開(kāi)。全文摘要本發(fā)明公開(kāi)了一種基于TMS320VC55xx的DSP簡(jiǎn)易開(kāi)發(fā)方法,用于對(duì)基于DSP的嵌入式系統(tǒng)程序進(jìn)行簡(jiǎn)易調(diào)試和系統(tǒng)升級(jí),其包括通過(guò)Bootloader的啟動(dòng)加載模式完成程序的自主運(yùn)行;通過(guò)Bootloader的下載模式完成程序的調(diào)試和更新工作。本發(fā)明實(shí)現(xiàn)了dsp程序的簡(jiǎn)易調(diào)試和快速升級(jí),可以脫離仿真器而進(jìn)行程序的簡(jiǎn)單調(diào)試以及更新系統(tǒng),從而有效的降低開(kāi)發(fā)成本,節(jié)省后期的人工成本,為DSP嵌入式開(kāi)發(fā)提供了便捷、低廉的實(shí)施方法。文檔編號(hào)G06F9/445GK102043654SQ20101061901公開(kāi)日2011年5月4日申請(qǐng)日期2010年12月31日優(yōu)先權(quán)日2010年12月31日發(fā)明者崔金鐘,朱國(guó)斌,李定,欒強(qiáng)厚,武劍輝,王勇,王志光申請(qǐng)人:東莞市智樂(lè)堡兒童玩具有限公司,東莞電子科技大學(xué)電子信息工程研究院