亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        TMS320C6000 DSPs的ROM自動(dòng)引導(dǎo)實(shí)現(xiàn)

        2016-07-13 02:50:13牛亞莉陜西交通職業(yè)技術(shù)學(xué)院陜西西安710018
        中國科技縱橫 2016年10期
        關(guān)鍵詞:寄存器代碼自動(dòng)

        牛亞莉(陜西交通職業(yè)技術(shù)學(xué)院,陜西西安 710018)

        ?

        TMS320C6000 DSPs的ROM自動(dòng)引導(dǎo)實(shí)現(xiàn)

        牛亞莉
        (陜西交通職業(yè)技術(shù)學(xué)院,陜西西安710018)

        【摘 要】本文通過對TMS320C6000系列DSP引導(dǎo)方式及初始化過程的分析,根據(jù)實(shí)際工程開發(fā)經(jīng)驗(yàn),完整詳細(xì)的闡述了6000系列DSP的ROM引導(dǎo)方式上電引導(dǎo)過程,以及所需用戶引導(dǎo)文件的編寫,常用系數(shù)表的處理方法,落焊文件的生成等過程,并給出了設(shè)計(jì)代碼,有效解決了TI DSP 6000系列的上電引導(dǎo)及初始化問題。

        【關(guān)鍵詞】DSP自動(dòng)引導(dǎo)初始化ROM方式

        1 引言

        隨著數(shù)字信號處理技術(shù)的不斷發(fā)展,大規(guī)模集成芯片及電路的出現(xiàn),DSP技術(shù)被廣泛應(yīng)用于鐵路信號傳輸[1]、檢測[2]、識別系統(tǒng)[3]中,實(shí)現(xiàn)產(chǎn)品的小型化、模塊化,大大提高信號處理的靈活度及處理速度,在鐵路提速、高鐵建設(shè)、城市軌道交通發(fā)展中隨處可見。

        TMS320C6000系列DSP是TI公司推出的新一代高性能DSP,包括定點(diǎn)系列C62xx、C64xx和浮點(diǎn)系列C67xx,其CPU主頻范圍分布在100MHz到600MHz。在DSP的應(yīng)用過程中,為了保證系統(tǒng)在脫機(jī)狀況下能夠?qū)崿F(xiàn)獨(dú)立運(yùn)行,需要將用戶代碼及一些系數(shù)等文件保存在ROM/FLASH等非易失性存儲(chǔ)器當(dāng)中,在系統(tǒng)加電后,通過DSP自身提供的引導(dǎo)方式將應(yīng)用程序從外部存儲(chǔ)區(qū)搬移到內(nèi)部RAM以便運(yùn)行。這樣一方面擴(kuò)展了DSP有限的ROM資源,另一方面又能充分發(fā)揮DSP內(nèi)部資源的性能優(yōu)勢。

        盡管TI 公司的使用指南上提供了不同引導(dǎo)方式的操作方法,但在實(shí)際應(yīng)用中,往往由于文件描述不夠細(xì)致全面加上部分開發(fā)者經(jīng)驗(yàn)不足,使得鏈接命令文件、初始化系數(shù)表及格式化文件等設(shè)計(jì)不當(dāng),導(dǎo)致在DSP上電時(shí)不能正常自舉,往往會(huì)為工程進(jìn)度帶來較大的麻煩,甚至影響產(chǎn)品的可靠性。

        2 DSP自動(dòng)引導(dǎo)及初始化

        C6000系列DSP提供了三種引導(dǎo)方式,不加載、ROM方式加載和HPI方式加載,其中最常用的就是ROM加載方式。DSP芯片上有專門的管腳用來選擇其引導(dǎo)方式和存儲(chǔ)器映射方式,C620x/C670x DSP芯片由BOOTMODE[4:0]管腳決定,C6211/C6711通過HD[1:0]、C6712/C64x通過BOOTMODE[1:0]來設(shè)置。

        在ROM引導(dǎo)方式下,DSP加電后首先通過DMA/EDMA將位于外部ROM/FLASH存儲(chǔ)區(qū)0地址開始的內(nèi)容當(dāng)作一幀數(shù)據(jù)搬移到內(nèi)部地址0處。

        (1)對于C620x/C670x,DMA從CE1空間自動(dòng)搬移64KB的數(shù)據(jù)到內(nèi)部地址0處;

        (2)對于C621x/C671x/C64x,EDMA從CE1空間(對C64x是EMIFB的CE1空間)自動(dòng)搬移1KB的數(shù)據(jù)到地址0處。此時(shí)一般來說需要編寫用戶引導(dǎo)代碼來完成其余數(shù)據(jù)的搬移,因?yàn)橛脩糸_發(fā)的程序一般都會(huì)大于1KB。

        傳輸完成后,CPU退出復(fù)位狀態(tài),開始執(zhí)行零地址處的指令,即從中斷向量表進(jìn)入,跳轉(zhuǎn)到DSP庫函數(shù)c_int00或者用戶引導(dǎo)程序,用戶引導(dǎo)程序運(yùn)行結(jié)束后仍然應(yīng)該跳轉(zhuǎn)到c_int00,然后開始DSP的初始化過程。

        c_int00完成C開發(fā)環(huán)境的初始化以及.bss段全局變量的初始化,由auto_init庫函數(shù)控制,調(diào)用memcpy庫函數(shù)從.cinit數(shù)據(jù)段中搬移相應(yīng)的數(shù)據(jù)到.bss段中對應(yīng)的全局變量中,這些過程全都是由DSP自動(dòng)完成的。初始化完成后,即開始執(zhí)行應(yīng)用程序,進(jìn)入main函數(shù)。

        表1 CMD文件各段含義

        3 軟件設(shè)計(jì)

        一般我們都采用c語言與匯編語言混合使用來進(jìn)行DSP軟件設(shè)計(jì),一個(gè)基本的DSP工程至少應(yīng)該包含一個(gè)主程序main()函數(shù)、一個(gè)中斷向量表.vextors段和一個(gè)鏈接命令文件*.cmd。

        DSP的命令文件用于將程序中的各段正確的分配到C6000的地址空間中去,通過連接器生成可執(zhí)行的.out文件。如第二節(jié)所介紹的,DSP加載后首先從0地址處開始執(zhí)行,中斷向量表應(yīng)該安排在地址零處,我們可以根據(jù)實(shí)際需要安排程序在0地址處直接轉(zhuǎn)向c_int00或者轉(zhuǎn)向用戶引導(dǎo)程序。

        常見的DSP應(yīng)用當(dāng)中還有對系數(shù)表的應(yīng)用,在編程中可以將系數(shù)表作為一個(gè)匯編文件添加到DSP工程中,這樣在編譯連接后該文件就會(huì)作為一個(gè)數(shù)據(jù)段出現(xiàn)在最后的.out文件(COEF格式)中,可以在加載之后由DMA搬移到內(nèi)部數(shù)據(jù)區(qū)待用。

        3.1命令文件

        命令文件的編寫關(guān)系到整個(gè)工程是否能夠正常工作[4],因此是DSP程序設(shè)計(jì)非常關(guān)鍵的一個(gè)環(huán)節(jié)。

        以下以6701為例來說明CMD文件的編寫:

        -c

        -l rts6701.lib

        -stack 0x0400

        MEMORY

        PRAM : origin = 0x00000000,len = 0x0FFFF

        DRAM_init : origin = 0x80000000,len = 0x04800

        DRAM: origin = 0x80004800,len = 0x0b000

        SECTIONS

        .vectors> PRAM

        .my_boot> PRAM

        .text> PRAM

        .cinit: load=PRAM, run=DRAM_init

        .bss> DRAM_init

        .far> DRAM_init

        .stack> DRAM_init

        .data_buf1

        coef.obj

        } load=PRAM, run=DRAM_init

        .data_buf2> DRAM

        其中,-c代表運(yùn)行時(shí)自動(dòng)初始化全局變量,ROM加載模式應(yīng)該使用該選項(xiàng);各段含義如表1:

        DSP最終形成的.out文件分為三種類型的數(shù)據(jù)段,如表中括號注明的代碼段、初始化段和非初始化段,每一種類型的段都有一個(gè)加載地址和一個(gè)運(yùn)行地址。由于我們選擇ROM自動(dòng)引導(dǎo)方式,上電后位于外部ROM中的程序會(huì)自動(dòng)搬移到內(nèi)部0地址處的RAM,即DSP通常所指的程序RAM(PRAM)當(dāng)中,所以這里的加載地址可以直接寫成內(nèi)部PRAM。代碼段的加載地址和運(yùn)行地址都在PRAM;非初始化段的加載地址和運(yùn)行地址都在DRAM_init;而初始化段則應(yīng)該分配兩個(gè)地址,加載地址在PRAM,運(yùn)行地址在DRAM_init。因此,對于分配了兩個(gè)地址的數(shù)據(jù)段就需要編寫用戶引導(dǎo)代碼,將其從加載地址搬移到運(yùn)行地址。

        3.2用戶引導(dǎo)代碼

        由于在DSP的引導(dǎo)過程中C編譯環(huán)境還沒有得到初始化,所以用戶引導(dǎo)代碼一般采用匯編語言進(jìn)行設(shè)計(jì),主要用于初始化段的搬移或者1KB以外的代碼數(shù)據(jù)搬移,以下為具體設(shè)計(jì)實(shí)例:

        .sect “.my_boot”

        .include boot_c671x.h62

        .global _boot

        _boot:

        ;配置EMIF控制寄存器(C621x/C671x/C64x需要,若只是實(shí)現(xiàn)初始化段搬移則不需要此配置)

        MVKL EMIF_GCTL,A4

        || MVKL 0x3090,B4 ;具體值參考手冊設(shè)置

        MVKH EMIF_GCTL,A4

        || MVKH 0x3090,B4

        stw B4,*A4

        ;根據(jù)需要配置EMIF CE空間控制寄存器、SDRAM 控制寄存器

        …………

        ;設(shè)置CSR、ICR、IER寄存器

        ………….

        ;設(shè)置DMA控制寄存器

        MVKL 0x01840044, A1;DMA3_PRIMARY_CTRL

        || MVKL 0xfffffffc,B2

        MVKH 0x01840044, A1

        || MVKH 0xfffffffc,B2

        LDW *A1, A10

        AND A10, B2, A11

        STW A11, *A1

        ;配置DMA副控寄存器,源/目的寄存器,計(jì)數(shù)寄存器

        此時(shí)需參考編譯器產(chǎn)生的map文件,確定所需搬移各段地址和長度(注:map文件中長度數(shù)據(jù)對應(yīng)于32bit)

        …………………

        ;啟動(dòng)DMA

        MVKL 0x0b000051,A2

        MVKH 0x0b000051,A2

        STW A2, *A1

        IDLE ;傳輸結(jié)束后產(chǎn)生中斷,在中斷向量表中跳轉(zhuǎn)到c_int00,開始初始化過程

        4 目標(biāo)文件產(chǎn)生

        用戶編寫的應(yīng)用程序經(jīng)過正確的編譯連接以后生成COEF格式的.out文件,由于ROM/FLASH存儲(chǔ)器不支持這種格式,所以在燒寫之前需要將其轉(zhuǎn)換為十六進(jìn)制碼的格式。TI提供了專用工具h(yuǎn) e x 6 x . e x e可以實(shí)現(xiàn)該轉(zhuǎn)換過程,該文件位于安裝目錄下tic6000cgtoolsin文件夾中。

        以下是格式轉(zhuǎn)換命令文件實(shí)例:

        channel_s.out/* 用戶應(yīng)用程序的.out文件,作為hex6x的輸入*/

        -m/* 輸出文件格式,m代表Motorola-S格式 */

        -memwidth 8/* 存儲(chǔ)寬度 */

        -romwidth 8/* ROM數(shù)據(jù)寬度 */

        -o channel_2.hex/* 輸出文件名稱 */

        ROMS

        FLASH:org = 0x00000000, length = 0xFFFF

        若采用16bit ROM加載方式,則連接兩片8位的ROM,地址線連接方式相同,數(shù)據(jù)線高低八位分別連接。此時(shí),存儲(chǔ)寬度設(shè)置為16,將產(chǎn)生兩個(gè)HEX文件,命令文件中相應(yīng)內(nèi)容改寫為:

        -memwidth 16

        ROMS

        FLASH:org = 0x00000000, length = 0xFFFF

        files={ channel_2.b0, channel_2.b1 }

        其中.b0文件是低八位數(shù)據(jù) ,.b1是高八位數(shù)據(jù)。通過以上步驟轉(zhuǎn)換后即可得到可燒寫的目標(biāo)文件。

        5 結(jié)語

        本文通過分析TMS320C6000系列DSP的加載及初始化過程,結(jié)合實(shí)際開發(fā)經(jīng)驗(yàn),給出了用于ROM自動(dòng)加載模式下DSP的軟件設(shè)計(jì)和文件格式轉(zhuǎn)換方法。通過具體的代碼實(shí)例詳細(xì)說明了設(shè)計(jì)過程,尤其是對于命令文件和用戶引導(dǎo)程序的編寫。

        參考文獻(xiàn):

        [1]張西峰,杜普選.基于TMS3206722的高度鐵路軌道信號發(fā)送與接收模擬系統(tǒng)[J].2010(10):25-28.

        [2]孫國斌.基于DSO+FPGA架構(gòu)的DC6000V供電鐵路客車逆變電源的設(shè)計(jì)與實(shí)現(xiàn)[J].鐵道車輛,2013(7):13-15.

        [3]黃雪程,王焱,劉春.基于DSP的鐵路信號識別技術(shù)[J].鐵路計(jì)算機(jī)應(yīng)用,2009(4):46-48.

        [4]李方慧,王飛,何佩琨.TMS320C6000系列DSPs原理與應(yīng)用[M].北京:電子工業(yè)出版社,2003.

        作者簡介:牛亞莉(1980—),女,陜西,碩士,陜西交通職業(yè)技術(shù)學(xué)院,高級工程師,從事城市軌道交通控制及數(shù)字信號處理方面的工作。

        猜你喜歡
        寄存器代碼自動(dòng)
        自動(dòng)捕盜機(jī)
        Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        基于STM32的自動(dòng)喂養(yǎng)機(jī)控制系統(tǒng)
        電子測試(2018年10期)2018-06-26 05:53:36
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        關(guān)于自動(dòng)駕駛
        汽車博覽(2016年9期)2016-10-18 13:05:41
        Stefan Greiner:我們?yōu)槭裁葱枰詣?dòng)駕駛?
        亚洲av综合av国一区二区三区 | 国产成人综合一区二区三区| 亚洲大尺度动作在线观看一区 | 国产高颜值女主播在线| 亚洲国产精品无码久久一区二区| www插插插无码视频网站| 欧美成人三级网站在线观看 | 亚洲天堂手机在线| 精品蜜桃av一区二区三区| 国产免费在线观看不卡| 中文字幕人妻中文| 国产精品久久久久久无码| 国产91对白在线观看| 久久迷青品着产亚洲av网站| 亚洲av三级黄色在线观看| 999精品无码a片在线1级| 国内精品伊人久久久久影院对白| 欧美成人一级视频| 亚洲国产精品无码久久九九大片健 | 精品乱人伦一区二区三区| 私人毛片免费高清影视院| 久久亚洲精品成人| 自拍偷拍另类三级三色四色| 人妻经典中文字幕av| 久久久久成人精品无码中文字幕| 亚洲首页一区任你躁xxxxx| 日本一区二区啪啪视频| 久久精品女人天堂av麻| 夜夜躁日日躁狠狠久久av| 午夜精品久久久久久中宇| 无码电影在线观看一区二区三区| 亚洲精品在线观看自拍| 激情综合婷婷色五月蜜桃| 丰满人妻被中出中文字幕 | 国产一区不卡视频在线| 男女射精视频在线观看网站| 国产又爽又黄又刺激的视频| 国产精品内射后入合集| 日本草逼视频免费观看| 成人久久精品人妻一区二区三区| 国产偷国产偷精品高清尤物|