国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

TMS320C6000系列DSP程序固化的研究

2016-10-14 06:44:26黃震劉亞斌
電子設(shè)計(jì)工程 2016年12期
關(guān)鍵詞:代碼啟動(dòng)程序

黃震,劉亞斌

(北京航空航天大學(xué)北京100191)

TMS320C6000系列DSP程序固化的研究

黃震,劉亞斌

(北京航空航天大學(xué)北京100191)

針對(duì)TMS320C6000系列DSP程序固化困難的問題,從DSP的啟動(dòng)方式出發(fā),闡述了TMD320C6000系列DSP 3種啟動(dòng)方式的基本原理,詳細(xì)說明了EMIF boot方式的啟動(dòng)過程,分析了在EMIF boot啟動(dòng)方式下的程序固化方法,通過多種不同的固化程序的試驗(yàn),研究了使用編程器燒寫、使用CCS提供的FlashBurn工具燒寫和在線燒寫等方法在固化程序方面的優(yōu)點(diǎn)與不足,得出了在線燒寫簡(jiǎn)單易行、通用性強(qiáng)的結(jié)論,可作為TMS320C6000系列DSP程序代碼固化設(shè)計(jì)的參考。

DSP;啟動(dòng)方式;EMIF引導(dǎo);程序固化;在線燒寫

近年來,數(shù)字信號(hào)處理器(DSP)發(fā)展迅速,在涉及到嵌入式領(lǐng)域和數(shù)字信號(hào)處理領(lǐng)域等方面的應(yīng)用取得了很大的進(jìn)展,其中TI公司推出的TMS320C6000系列DSP器件以其高實(shí)時(shí)性和高速大數(shù)據(jù)量數(shù)字信號(hào)處理運(yùn)算的特點(diǎn)得以廣泛的應(yīng)用[1]。在TMS320C6000系列DSP的系統(tǒng)設(shè)計(jì)過程中,DSP器件的程序固化是較難解決的問題之一,為此,本文立足于實(shí)踐,以TMS320C6416為例,詳細(xì)闡述了DSP固化程序的幾種實(shí)現(xiàn)方法。

1 DSP的啟動(dòng)方式

TMS320C6000系列DSP的啟動(dòng)方式包括無引導(dǎo)[No boot]、主機(jī)引導(dǎo)[Host boot]和EMIF引導(dǎo)[EMIF boot]3種。

無引導(dǎo)[No boot]:DSP上電復(fù)位后,先執(zhí)行地址0x00000000處的指令,這種方式僅限于存儲(chǔ)器0地址不是必須映射到Ram空間的器件,否則在Ram空間初始化之前CPU會(huì)讀取無效的代碼而導(dǎo)致錯(cuò)誤,并且該方式只能用于仿真運(yùn)行;主機(jī)引導(dǎo)[Host boot]:DSP上電復(fù)位后,CPU保持復(fù)位狀態(tài),外部主機(jī)通過主機(jī)接口將程序?qū)懙紻SP內(nèi)部存儲(chǔ)器,并配置相應(yīng)的寄存器,完成后設(shè)置DSPINT標(biāo)志位,該標(biāo)志位會(huì)清除DSP復(fù)位狀態(tài),然后DSP從地址0x00000000開始運(yùn)行,該方式要求必須有一外部主機(jī)控制DSP的初始化,這將增加系統(tǒng)的成本和復(fù)雜度,實(shí)現(xiàn)難度較大;EMIF引導(dǎo)[EMIF boot]:DSP在外部Rom中固化了程序,復(fù)位后通過EMIF從CE1存儲(chǔ)空間首地址拷貝一部分代碼到內(nèi)部Ram的零地址中,接著從零地址開始執(zhí)行,DSP與外部Rom接口較為自由,但DSP內(nèi)部的Bootloader工具自動(dòng)加載的代碼量有限(1 kB/64 kB)[2]。

DSP通過器件引腳配置的方式選擇使用何種引導(dǎo)方式啟動(dòng)程序。當(dāng)復(fù)位完成后,DSP通過讀入外圍的引腳配置信息,確定具體的引導(dǎo)啟動(dòng)方式。

本文中將主要研究EMIF boot啟動(dòng)方式下的程序固化方法。當(dāng)前常用的程序固化方法主要有以下幾種:使用編程器燒寫、使用CCS提供的FlashBurn工具燒寫、在線燒寫。

2 EMIF boot方式的啟動(dòng)過程

實(shí)際應(yīng)用中,DSP通常采用的是EMIF boot啟動(dòng)方式。通過編寫二級(jí)Bootloader的方法,可以改善EMIF boot過程中片上Bootloader工具加載的代碼量有限的弊端;并且該方式實(shí)現(xiàn)簡(jiǎn)單,通用性好,無需使用外部主機(jī)配合,簡(jiǎn)化了系統(tǒng)的結(jié)構(gòu),降低了系統(tǒng)的成本。因此,EMIF boot啟動(dòng)方式的應(yīng)用場(chǎng)合更加的廣泛。

DSP的EMIF boot啟動(dòng)過程分為兩部分:一級(jí)加載和二級(jí)加載。一級(jí)加載是復(fù)位后,DSP通過EMIF將固化在CE1空間Rom中的代碼搬入內(nèi)部Ram零地址處,然后從內(nèi)部零地址開始執(zhí)行的過程;二級(jí)加載是在一級(jí)加載的基礎(chǔ)上,通過一級(jí)加載的程序代碼,實(shí)現(xiàn)將用戶應(yīng)用程序由外部Rom拷貝到內(nèi)部運(yùn)行地址的過程[3]。

對(duì)于C6416來說,片上的Bootloader工具只能將1 kB的代碼搬入內(nèi)部Ram。通常情況下,用戶應(yīng)用程序的大小都會(huì)超過這個(gè)限制。所以,需要在外部Rom的前1 kB范圍內(nèi)預(yù)先存放一小段程序,待片上Bootloader工具把此段代碼搬入內(nèi)部并開始執(zhí)行后,由這段代碼實(shí)現(xiàn)將外部Rom中剩余的應(yīng)用程序加載到內(nèi)部Ram。此段代碼被稱作二級(jí)Bootloader[4]。

3 使用通用編程器固化程序

通用編程器具有方便用戶使用的菜單式界面,能夠自動(dòng)檢測(cè)芯片插錯(cuò)、管腳接觸不良及芯片內(nèi)部短路等功能,能夠自動(dòng)識(shí)別存儲(chǔ)器廠家和型號(hào),可修改編程參數(shù),可根據(jù)芯片的具體情況確定編程參數(shù)。但是,通用編程器只適用于未焊接到板卡上的外部Flash芯片,而且芯片的型號(hào)受到編程器的局限,通用性不好。

使用通用編程器固化程序,要配置好對(duì)應(yīng)外部存儲(chǔ)器芯片的燒寫配置文件,并且由于通用編程器的輸入文件主要是.hex和.bin類型的文件,用戶需要將.out類型的目標(biāo)工程文件轉(zhuǎn)化成為.hex或.bin類型的文件,才能進(jìn)行程序下載。

使用通用編程器將用戶程序固化到Flash中的操作步驟:

1)將含有二級(jí)加載程序的Bootloader.asm文件加入到用戶工程中,其地址空間分配為0x00~0x400;

2)編寫分配程序地址空間的CMD文件;

3)使用Hex6x.exe工具,將.out類型的目標(biāo)文件,轉(zhuǎn)換成為.hex類型的二進(jìn)制文件;

4)使用編程器將轉(zhuǎn)化后的二進(jìn)制文件寫入到Flash中。

4 使用CCS提供的FlashBurn工具固化程序

FlashBurn是TI為DSP用戶設(shè)計(jì)的Flash燒寫工具,安裝后可以作為CCS的一個(gè)插件使用。FlashBurn工具以CCS為基礎(chǔ),運(yùn)行時(shí)需要先下載一個(gè).out類型的鏡像文件FBTC(FlashBurn Target Component)到DSP中,這個(gè)FBTC就是一個(gè)執(zhí)行程序,通過運(yùn)行FBTC,DSP可以與FlashBurn交互,接收FlashBurn的指令,用戶可以通過FlashBurn提供的圖形界面對(duì)Flash執(zhí)行擦除、編程和查看內(nèi)容等操作,簡(jiǎn)單方便的將程序固化到DSP中。

Flashburn的操作界面簡(jiǎn)潔,人機(jī)交互簡(jiǎn)單,使用戶可以快速方便的燒寫程序,并且可以通過修改FBTC工程文件的參數(shù)和函數(shù)來適應(yīng)不同型號(hào)DSP的燒寫需求;但是,TI公司提供的FBTC的源代碼結(jié)構(gòu)復(fù)雜,內(nèi)容繁多,用戶需要先去了解FBTC的運(yùn)行機(jī)制及其與上位機(jī)的通信協(xié)議,才可能對(duì)Flash燒寫函數(shù)進(jìn)行正確的修改,這就給用戶開發(fā)帶來了不便。另外,由于FlashBurn和FBTC的定制特性使得它的應(yīng)用只能局限在一些特定的場(chǎng)所。

使用CCS提供的FlashBurn工具將用戶程序固化到Flash中的操作步驟:

1)將能夠正常的仿真運(yùn)行的程序進(jìn)行編譯,生成.out目標(biāo)文件;

2)在已調(diào)試好的工程項(xiàng)目中加入包含二級(jí)加載程序的文件bootloader.asm,同時(shí)修改CMD文件,在CMD文件中添加一個(gè)名為boot的段,位置是0x000,長(zhǎng)度為0x400,bootloader. asm文件中的二級(jí)加載程序儲(chǔ)存在該段中。然后,重新編譯工程,生成新的.out目標(biāo)文件。

3)利用Hex6x.exe把編譯生成的新.out目標(biāo)文件轉(zhuǎn)化為. hex文件,用于燒到Flash中。

4)連接CCS與DSP后,啟動(dòng)FlashBurn。在file菜單里面新建配置,分別選擇好合適的Processor Type和FBTC program file,然后點(diǎn)擊programdownload FBTC。

5)把FBTC下載到板子上以后,就可以對(duì)Flash進(jìn)行擦除(erase flash)、查看(show memory)和編程(program flash)操作,這些功能在program菜單下。對(duì)Flash進(jìn)行編程時(shí),F(xiàn)lashBurn只支持.hex類型的文件。

5 在線燒寫

以上兩種方法,都需要對(duì)目標(biāo)文件進(jìn)行格式轉(zhuǎn)化,過程比較麻煩且容易出錯(cuò),而使用在線燒寫的方法,可以直接將目標(biāo)文件寫入到Flash中。在線燒寫即使用自己編寫的燒寫代碼進(jìn)行燒寫。這種方法需要編寫兩個(gè)工程,一個(gè)是實(shí)現(xiàn)用戶功能的目標(biāo)工程,另一個(gè)是燒寫工程。在線燒寫時(shí),首先要將目標(biāo)工程的.out文件通過仿真器下載到DSP的內(nèi)部Ram中,之后將燒寫工程的.out文件也下載到DSP中,并且要保證這兩個(gè).out文件在DSP的Ram區(qū)中占有不同的區(qū)域,之后運(yùn)行燒寫工程,即可將目標(biāo)工程的代碼數(shù)據(jù)燒寫到Flash中[5]。這種燒寫方法的好處是燒寫過程清晰明了,操作簡(jiǎn)單,目標(biāo)工程和燒寫工程單獨(dú)編寫,不易搞混;同時(shí)燒寫工程具有很好的通用性,稍微修改后就可用于其他型號(hào)DSP的燒寫。

使用在線燒寫將用戶程序固化到Flash中的操作步驟:

首先,對(duì)正常仿真運(yùn)行的目標(biāo)工程做兩個(gè)方面的修改:編寫包含二級(jí)加載程序的文件bootloader.asm,并將該文件加入到目標(biāo)工程中去,這個(gè)加載程序一般采用匯編語言實(shí)現(xiàn);修改目標(biāo)工程的CMD文件,將二級(jí)加載程序的代碼指向片內(nèi)RAM的首地址,長(zhǎng)度是1 k,目標(biāo)工程中其他的程序代碼放在其后。修改完成后,將新工程編譯生成的.out文件通過JTAG下載到DSP的內(nèi)部Ram中,不要運(yùn)行。新目標(biāo)工程的CMD文件如下所示:

然后,將燒寫工程的.out文件也加載到DSP的內(nèi)部RAM中,運(yùn)行燒寫工程將目標(biāo)工程的程序代碼燒寫進(jìn)Flash中。

燒寫工程完成的功能就是將剛下載到片內(nèi)Ram的目標(biāo)工程的代碼寫進(jìn)Flash中。因?yàn)榍懊婺繕?biāo)文件已經(jīng)下載到片內(nèi)Ram的開始位置,占用了片內(nèi)Ram的一部分空間,因此修改燒寫工程的CMD文件,將該工程在片內(nèi)Ram的存儲(chǔ)位置與前面已下載工程的存儲(chǔ)位置分開,避免發(fā)生內(nèi)存沖突。

用戶可以打開前面下載的目標(biāo)工程的Map文件查看其占用了多少空間,如下所示:

從Map文件中可以看出,BOOT用了0x2c8字節(jié),而其他代碼用了0x4aec字節(jié)。為了保險(xiǎn),把燒寫工程的代碼放在內(nèi)部Ram中離目標(biāo)工程較遠(yuǎn)的位置。這樣燒寫工程的.out文件下載之后就不會(huì)把前面下載的目標(biāo)工程的.out文件覆蓋[6]。燒寫工程的CMD文件如下所示:

實(shí)質(zhì)上,燒寫程序的過程也就是將程序從Ram中拷貝到Flash中的過程。已經(jīng)得知Bootloader程序的大小是0x2c8字節(jié),目標(biāo)工程的大小是0x4aec字節(jié)。所以,拷貝時(shí)先拷貝Bootloader程序的0x2c8字節(jié)數(shù)據(jù),從Ram地址0x00000000拷貝到Flash地址0x64000000;然后再拷貝目標(biāo)工程文件的0x4aec字節(jié)數(shù)據(jù),從Ram地址0x00000400拷貝到Flash地址0x64000400。燒寫工程的關(guān)鍵代碼如下:

6 結(jié)束語

文中討論了TI的C6000系列DSP的啟動(dòng)方式及程序固化方式,介紹了使用編程器燒寫、使用CCS提供的FlashBurn工具燒寫和在線燒寫等3種程序固化方法,并重點(diǎn)說明了在線燒寫固化程序的方法和步驟。該方法通用性強(qiáng),可移植性好,實(shí)現(xiàn)簡(jiǎn)單,適用于TI的C6000系列中大部分型號(hào)DSP程序的固化,可作為該系列DSP程序代碼固化設(shè)計(jì)的參考。

[1]段榮行,鄭國蘭.TMS320C6711的Flash引導(dǎo)裝載系統(tǒng)研究與設(shè)計(jì)[J].電子設(shè)計(jì)工程,2004(12):55-58.

[2]夏爽.DSP的二級(jí)加載及Bootloader研究[J].電腦編程技巧與維護(hù),2009(2):8-11.

[3]鐘俊,呂盼稂,王歡,等.TMS320C672x DSP引導(dǎo)程序設(shè)計(jì)[J].計(jì)算機(jī)工程,2010,36(4):267-270.

[4]郎巖梅,唐文彥,趙軍.基于DSP的嵌入式系統(tǒng)中BOOTLOADER程序的設(shè)計(jì)方法[J].電測(cè)與儀表,2003,40(438):35-37.

[5]孫照宇,張公禮.TI 6000系列DSP引導(dǎo)裝載方式的研究[J].電子器件,2005,28(1):176-179.

[6]王碩果,肖強(qiáng).TMS320C6701 DSP自動(dòng)加載研究[J].現(xiàn)代電子技術(shù),2009,32(19):72-75.

Study on the program download of TMS320C6000 DSP

HUANG Zhen,LIU Ya-bin
(Beihang University,Beijing 100191,China)

Aiming at the problem of the difficulty in TMS320C6000 series DSP program download,F(xiàn)rom the start mode of the DSP,this article explains the basic principle of three start modes of TMS320C6000 Series DSP,introduces start-up process of EMIF boot in detail,analyses the methods of downloading program in EMIF boot start mode,does a variety of different tests of downloading program,studies the advantages and disadvantages of using programmer,using the CCS FlashBurn tool and online writing in the downloading program,gets the conclusion that the online writing is simple and easy to operate.It can be used as the reference of code downloading of TMS320C6000 series DSP.

DSP;start mode;EMIF boot;program download;online download

TN47

A

1674-6236(2016)12-0026-03

2015-06-18稿件編號(hào):201506191

黃震(1990—),男,山東煙臺(tái)人,碩士。研究方向:控制工程與控制科學(xué)。

猜你喜歡
代碼啟動(dòng)程序
試論我國未決羈押程序的立法完善
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
霧霾來襲 限產(chǎn)再次啟動(dòng)
“程序猿”的生活什么樣
安發(fā)生物啟動(dòng)2017
英國與歐盟正式啟動(dòng)“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
扬中市| 景洪市| 六安市| 宜昌市| 马鞍山市| 天水市| 广河县| 盐边县| 乐陵市| 浑源县| 即墨市| 阿拉善盟| 喜德县| 布尔津县| 广宁县| 中宁县| 河源市| 垫江县| 孙吴县| 青田县| 肥西县| 昌邑市| 吉安市| 灵丘县| 黔南| 白银市| 工布江达县| 秀山| 五河县| 新和县| 泽库县| 沭阳县| 九寨沟县| 铁岭县| 义马市| 绥阳县| 大连市| 确山县| 临沂市| 长寿区| 桃园县|