<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > TMS320C6x DSP的FLASH引導方法研究與實(shí)現

TMS320C6x DSP的FLASH引導方法研究與實(shí)現

作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:介紹了TMS320C6x 的幾種FLASH引導方法,比較了引導過(guò)程中基于軟件流水的數據搬移方法和QDMA方式的數據搬移方法,并介紹了如何利用在系統編程(ISP)對上電引導程序進(jìn)行FLASH編程。通過(guò)對實(shí)際的TMS32C6711 電路調試實(shí)驗,證明了以上方法簡(jiǎn)單易行。 關(guān)鍵詞:FLASH存儲器 上電引導 COFF文件格式 FLASH存儲器是在EPROM和EEPROM的基礎上發(fā)展起來(lái)的一種非易失性存儲器,在掉電情況下仍能保證數據不丟失,并能夠在不離開(kāi)電路板或據設備的情況下實(shí)施擦除和再編程操作。由于其具有結構簡(jiǎn)單、維護便利、存取速度快、對環(huán)境適應能力強、抗振性能好等優(yōu)點(diǎn)十分適合于嵌入式系統的設計和開(kāi)發(fā),并且已成為目前流行的系統的一個(gè)基本配置。 在許多DSP的應用中,系統上電后需要將用戶(hù)程序從FLASH存儲器引導到高速數據存儲器中運行。這就需要給用JTAG接口調試通過(guò)的應用程序添加啟動(dòng)代碼,將生成的目標文件進(jìn)行格式轉換使其能在線(xiàn)燒寫(xiě),將轉換過(guò)的文件利用FLASH燒寫(xiě)程序在線(xiàn)燒寫(xiě)到FLASH中。 本文將介紹引導過(guò)程中數據搬移的幾種方法,包括QDMA方式的數據搬移方法、CPU直接數據搬移方法以及基于軟件流水的數據搬移方法。經(jīng)過(guò)比較測試,證明了QDMA方式和基于軟件流水的數據搬移方法具有優(yōu)越性。并且,根據COFF文件格式,編寫(xiě)了比TI公司的HEX60更為直接的轉換工具,從而簡(jiǎn)化了文件的轉換步驟。圖1 1 應用程序的FLASH ROM引導 當DSP的應用程序從FLASH ROM引導時(shí),目標板都有一個(gè)自動(dòng)的引導程序。例如,對于TMS320C6x1x系列,目標板的自動(dòng)引導程序會(huì )在系統上電時(shí)將FLASH ROM的前1K空間的內容復制以片內內存自0x00開(kāi)始的地址空間,并從0x00地址處開(kāi)始運行。因為需要搬到內存中運行的應用程序的向量表、初始化段等往往超過(guò)1K大小,為了能在系統上電時(shí)自動(dòng)引導應用程序運行,就需要在引導的1K代碼中包括自定義的引導代碼,以將額外需要的初始化代碼段和數據段復制到內存中運行。 將FLASH ROM的數據復制到IRAM(內部RAM)中,有兩種方式:一種是直接存儲器訪(fǎng)問(wèn)(DMA),它是在沒(méi)有CPU參與的情況下完成映射存儲空間的數據搬移;另一種是利用CPU直接搬移數據。QDMA是快速的DMA,不需要CPU參與數據傳輸,只需根據要傳遞內容的信息設置QDMA的相應寄存器即可。用CPU直接搬移數據也有兩種方式:一種是是不用流水方式,另一種是采用軟件流水方式。 在C6000的匯編中,不同類(lèi)型指令有不同數目的執行節拍。執行節拍在數量上等于該指令在執行級所需要的時(shí)鐘周期。對于所用到的讀取指令ldw的存儲指令stw,分別完成從存儲到通用寄存器的數據搬移和從通用寄存器到存儲器的數據搬移。讀取指令ldw需要執行的步驟為:計算地址、地址送內存、訪(fǎng)問(wèn)內存、數據送CPU、數據寫(xiě)寄存器,即執行節拍數為5;而存儲指令stw,執行節拍數為3,需要執行的步驟為ldw的前三步。表1給出了軟件流水前后數據搬移間隔編排的比較表。由表1可見(jiàn),要將FLASH ROM中的一個(gè)數據搬移到IRAM中,需要從FLASH ROM中讀取該數據到通用寄存器(ldw),再從通用寄存器中將其讀到IRAM(指令stw)。在軟件流水優(yōu)化以前,需要至少8個(gè)指令周期。采用軟件流水優(yōu)化以后,根據指令的特點(diǎn),第0到第4這5個(gè)指令周期可連續續5個(gè)數到通用寄存器,從第5到第9這5個(gè)指令周期再順序地將讀入通用寄存器的上述5個(gè)數讀出到IRAM。于是,在10個(gè)指令周期內,可完成5個(gè)數據的搬移,從而使搬移周期下降到了兩個(gè)指令周期,提高了CPU的運行效率。 2 QDMA方式和CPU直接數據搬移方式的比較 由于前面已比較了CPU直接數據搬移的兩種方式,下面著(zhù)重對QDMA方式和基于流水的CPU直接數據搬移方式進(jìn)行比較測試。這次測試是在TMS320C6711 DSP上進(jìn)行的,采用的FLASH型號為SST29LE010。首先根據待燒寫(xiě)應用程序的.map文件找出需搬移的初始化代碼段的大小,其中.text段為0x8c40 byte,.const段為0byte,.cinit段為0x24c byte,共需搬移0x23A3個(gè)32bit字。然后利用QDMA方式和CPU流水方式分別從FLASH中讀取0x23A3個(gè)32bit字到片內內存中。測量所用時(shí)間結果如表2所示。表2 兩種數據搬移方式的比較 訪(fǎng)問(wèn)速度設備搬移方式Read setup:150nsRead strobe:630nsRead hold:3nsRead setup:0nsRead strobe:120nsRead hold:0nsQDMA方式 148251479sCPU流水線(xiàn)搬移 155732390s  搬移大?。篠IZE=0小3A3 WORD 由測試結果可以看出,不需要CPU直接參與數據搬移的QDMA方式比CPU流水搬移更具優(yōu)越性,搬移速度快且設置簡(jiǎn)單。但CPU的流水搬移利用了TMS320C6000系列DSP匯編的特點(diǎn),深入分析了指令的軟件流水方式,很大程度地提高了CPU的利用率,拓寬了編程思路,也不失為一種好的選擇。 3 利用ISP對上電引導程序進(jìn)行了FLASH編程 3.1 文件格式的轉換 完成了引導程序,包括.cmd文件中內存段的設置及連接設置后,用TI的編程工具CCS(Code Composer Studio)編譯連接生成目標文件(.out文件)。但該.out文件格式是COFF文件格式,FLASH不支持這種格式,所以不能直接寫(xiě)入FLASH中,必須對該.out文件進(jìn)行轉換,提取出其中的數據部分,形成數據文件。最后利用燒寫(xiě)程序將已轉換好的數據文件燒寫(xiě)到FLASH ROM中。有兩種方式可將COFF格式文件轉換成數據文件。一種是利用TI公司的HEX6x.exe工具,將生成的.out文件轉化成.hex輸出文件。由于該HEX6x.exe工具是提供給EPROM編程器的,用EPROM編程器可直接燒寫(xiě).hex文件。但對于FLASH ROM的在系統編程來(lái)說(shuō),生成的.hex文件不能直接使用,必須再編寫(xiě)一段程序將.hex的文件頭去掉,分離出數據文件,最后才能由FLASH的燒寫(xiě)程序將最終的數據文件燒寫(xiě)到FLASH ROM中。也可以不用TI公司的工具,而根據COFF文件格式直接提取出數據。生成一個(gè)數據文件,然后將其燒寫(xiě)到FLASH ROM中。 COFF文件采用的是向量組織方式,可以很靈活地安排代碼段和目標系統存儲器。了解COFF文件的結構,不僅可以清楚.cmd文件的編寫(xiě)原理,而且可以認識初始化段和非初始化段的區別,同時(shí)還可以在轉換文件時(shí)減少轉換步驟。COFF文件的格式如表3所示。 要提取的數據部分即臺化段是表3的Row data部分,也就是可執行代碼和初始化代碼部分。首先,根據文件頭的信息(文件頭描述了整個(gè)文件的全局信息)獲得文件中段的數量,然后根據段的頭(Section header)信息,判斷該段是否為初始化段的頭。因為非初始化段是在程序運行中才分配的,若為初始化段的頭,則取得初始化段的位置,將這些段按地址由低到高的順序復制到輸出文件,便得到了可燒寫(xiě)的數據文件。其流程如圖1所示。 3.2 利用ISP技術(shù)燒寫(xiě)FLASH 燒寫(xiě)程序負責將前面所生成的數據文件寫(xiě)入FLASH ROM中,利用ISP技術(shù),就不需要其它編程設備和附加編程電源,直接通過(guò)燒寫(xiě)程序燒寫(xiě)就可以了。燒寫(xiě)程序必須根據所用的FLASH的型號來(lái)編寫(xiě)。以SST29LE010為例,其軟件數據保護和頁(yè)面寫(xiě)、芯片擦除、芯片型號軟件檢測等都有不同的指令和時(shí)序,如表4所示,需要查閱該型號的芯片手冊,根據手冊完成燒寫(xiě)程序。表4 SST29LE010內存指令表  總 線(xiàn) 周 期 命令序列123456地址數據地址數據地址數據地址數據地址數據地址數據軟件數據保護和頁(yè)面寫(xiě)5555AA2AAA555555A0地址數據  芯片擦除5555AA2AAA555555805555AA2AAA55555510芯片型號軟件檢測5555AA2AAA55555590       在前面的兩節點(diǎn),結合TMS320C6x系列DSP的特點(diǎn),介紹了幾種上電引導過(guò)程中的數據搬移方法,特別推薦和比較了基于軟件流水思想的CPU數據搬移方法及QDMA方式,還介紹了ISP技術(shù)對上電引導FLASH編程的基本步驟,及如何根據COFF文件格式將目標文件轉換成數據文件,供FLASH的燒寫(xiě)程序燒寫(xiě)。 從編寫(xiě)引導程序到將引導程序轉換為可供燒寫(xiě)的數據文件,再到最終的FLASH ROM燒寫(xiě),是比較繁瑣的過(guò)程。本文所介紹的方法為編寫(xiě)引導程序拓寬了思路,并簡(jiǎn)化了文件轉換的步驟。通過(guò)對實(shí)際的TMS320C6711 DSP電路調試實(shí)驗,證明了以上的方法是簡(jiǎn)單易行的。

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>