999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

TMS320C6000 DSPs的ROM自動引導實現

2016-07-13 02:50:13牛亞莉陜西交通職業技術學院陜西西安710018
中國科技縱橫 2016年10期
關鍵詞:用戶

牛亞莉(陜西交通職業技術學院,陜西西安 710018)

?

TMS320C6000 DSPs的ROM自動引導實現

牛亞莉
(陜西交通職業技術學院,陜西西安710018)

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

【關鍵詞】DSP自動引導初始化ROM方式

1 引言

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

TMS320C6000系列DSP是TI公司推出的新一代高性能DSP,包括定點系列C62xx、C64xx和浮點系列C67xx,其CPU主頻范圍分布在100MHz到600MHz。在DSP的應用過程中,為了保證系統在脫機狀況下能夠實現獨立運行,需要將用戶代碼及一些系數等文件保存在ROM/FLASH等非易失性存儲器當中,在系統加電后,通過DSP自身提供的引導方式將應用程序從外部存儲區搬移到內部RAM以便運行。這樣一方面擴展了DSP有限的ROM資源,另一方面又能充分發揮DSP內部資源的性能優勢。

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

2 DSP自動引導及初始化

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

在ROM引導方式下,DSP加電后首先通過DMA/EDMA將位于外部ROM/FLASH存儲區0地址開始的內容當作一幀數據搬移到內部地址0處。

(1)對于C620x/C670x,DMA從CE1空間自動搬移64KB的數據到內部地址0處;

(2)對于C621x/C671x/C64x,EDMA從CE1空間(對C64x是EMIFB的CE1空間)自動搬移1KB的數據到地址0處。此時一般來說需要編寫用戶引導代碼來完成其余數據的搬移,因為用戶開發的程序一般都會大于1KB。

傳輸完成后,CPU退出復位狀態,開始執行零地址處的指令,即從中斷向量表進入,跳轉到DSP庫函數c_int00或者用戶引導程序,用戶引導程序運行結束后仍然應該跳轉到c_int00,然后開始DSP的初始化過程。

c_int00完成C開發環境的初始化以及.bss段全局變量的初始化,由auto_init庫函數控制,調用memcpy庫函數從.cinit數據段中搬移相應的數據到.bss段中對應的全局變量中,這些過程全都是由DSP自動完成的。初始化完成后,即開始執行應用程序,進入main函數。

表1 CMD文件各段含義

3 軟件設計

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

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

常見的DSP應用當中還有對系數表的應用,在編程中可以將系數表作為一個匯編文件添加到DSP工程中,這樣在編譯連接后該文件就會作為一個數據段出現在最后的.out文件(COEF格式)中,可以在加載之后由DMA搬移到內部數據區待用。

3.1命令文件

命令文件的編寫關系到整個工程是否能夠正常工作[4],因此是DSP程序設計非常關鍵的一個環節。

以下以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代表運行時自動初始化全局變量,ROM加載模式應該使用該選項;各段含義如表1:

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

3.2用戶引導代碼

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

.sect “.my_boot”

.include boot_c671x.h62

.global _boot

_boot:

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

MVKL EMIF_GCTL,A4

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

MVKH EMIF_GCTL,A4

|| MVKH 0x3090,B4

stw B4,*A4

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

…………

;設置CSR、ICR、IER寄存器

………….

;設置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副控寄存器,源/目的寄存器,計數寄存器

此時需參考編譯器產生的map文件,確定所需搬移各段地址和長度(注:map文件中長度數據對應于32bit)

…………………

;啟動DMA

MVKL 0x0b000051,A2

MVKH 0x0b000051,A2

STW A2, *A1

IDLE ;傳輸結束后產生中斷,在中斷向量表中跳轉到c_int00,開始初始化過程

4 目標文件產生

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

以下是格式轉換命令文件實例:

channel_s.out/* 用戶應用程序的.out文件,作為hex6x的輸入*/

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

-memwidth 8/* 存儲寬度 */

-romwidth 8/* ROM數據寬度 */

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

ROMS

FLASH:org = 0x00000000, length = 0xFFFF

若采用16bit ROM加載方式,則連接兩片8位的ROM,地址線連接方式相同,數據線高低八位分別連接。此時,存儲寬度設置為16,將產生兩個HEX文件,命令文件中相應內容改寫為:

-memwidth 16

ROMS

FLASH:org = 0x00000000, length = 0xFFFF

files={ channel_2.b0, channel_2.b1 }

其中.b0文件是低八位數據 ,.b1是高八位數據。通過以上步驟轉換后即可得到可燒寫的目標文件。

5 結語

本文通過分析TMS320C6000系列DSP的加載及初始化過程,結合實際開發經驗,給出了用于ROM自動加載模式下DSP的軟件設計和文件格式轉換方法。通過具體的代碼實例詳細說明了設計過程,尤其是對于命令文件和用戶引導程序的編寫。

參考文獻:

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

[2]孫國斌.基于DSO+FPGA架構的DC6000V供電鐵路客車逆變電源的設計與實現[J].鐵道車輛,2013(7):13-15.

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

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

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

猜你喜歡
用戶
雅閣國內用戶交付突破300萬輛
車主之友(2022年4期)2022-08-27 00:58:26
您撥打的用戶已戀愛,請稍后再哭
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年5期)2016-11-28 09:55:15
兩新黨建新媒體用戶與全網新媒體用戶之間有何差別
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
挖掘用戶需求尖端科技應用
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 色综合天天视频在线观看| 夜夜拍夜夜爽| 国产一区二区三区免费| 日本国产一区在线观看| 亚洲毛片一级带毛片基地| 伊人久久精品无码麻豆精品 | 亚洲AV无码乱码在线观看代蜜桃| 久久这里只有精品8| 伊人久久综在合线亚洲2019| 在线观看免费国产| 国产自在线拍| 亚洲精品色AV无码看| 欧美日韩国产在线播放| 欧美国产日韩在线| 亚洲欧美一级一级a| 热久久国产| av在线手机播放| 最新日本中文字幕| 91精品国产自产在线老师啪l| 午夜无码一区二区三区在线app| 亚洲欧美综合精品久久成人网| 在线观看精品国产入口| 无码久看视频| 亚洲成a人片| 成人午夜亚洲影视在线观看| 97久久超碰极品视觉盛宴| 久久99国产精品成人欧美| 亚洲精品少妇熟女| 亚洲人成网站观看在线观看| 久久精品这里只有国产中文精品| 一区二区偷拍美女撒尿视频| 一本大道无码日韩精品影视| 国产乱子伦手机在线| 成人精品免费视频| 亚洲日韩精品伊甸| 国产黄色片在线看| 日韩视频精品在线| 精品一区二区三区无码视频无码| 老司机午夜精品视频你懂的| 一本久道久久综合多人| 韩日免费小视频| 91人妻日韩人妻无码专区精品| 操美女免费网站| 欧美成人精品在线| 91免费在线看| 亚洲日韩精品综合在线一区二区| 亚洲系列无码专区偷窥无码| 超清人妻系列无码专区| 精品撒尿视频一区二区三区| 中文字幕 欧美日韩| 国产精品久久久久久久伊一| 性喷潮久久久久久久久| 精品人妻无码中字系列| 91精品国产福利| 无码区日韩专区免费系列| 在线观看亚洲精品福利片| 国产高清在线观看| 2020最新国产精品视频| 女人18毛片一级毛片在线 | 国产91视频观看| 久久免费视频6| 欧美午夜在线视频| 国产成+人+综合+亚洲欧美| 中文字幕丝袜一区二区| 五月婷婷综合网| 国产女人水多毛片18| 色播五月婷婷| 在线99视频| 91尤物国产尤物福利在线| 日韩毛片基地| 亚洲午夜国产精品无卡| 国产成人久久综合一区| 国产精品视频猛进猛出| 欧洲成人免费视频| 欧美日韩亚洲综合在线观看| 极品av一区二区| 国产亚洲精久久久久久无码AV| 米奇精品一区二区三区| 自拍中文字幕| 国产在线八区| 欧美在线精品怡红院| 亚洲网综合|