當前位置:首頁 > 電源 > 數(shù)字電源
[導讀]介紹了TMS320C6000系列DSP在仿真環(huán)境下對閃速存儲器(FLASH)的C語言編程方法。

摘要:介紹了TMS320C6000系列DSP仿真環(huán)境下對閃速存儲器(FLASH)的C語言編程方法,同時根據(jù)這種DSP的程序自引導機制(boot loader),介紹了從FLASH進行引導的新途徑,從而為TMS320C6000系列DSP的開發(fā)提供了一種新的思路。

    關鍵詞:TMS320C6000;FLASH;boot loader

開發(fā)DSP系統(tǒng)應用板,最終要脫離仿真器而獨立運行,這時就需要一個能在斷電后保存程序及初始化數(shù)據(jù)的存儲器。系統(tǒng)上電時,由引導程序將DSP的應用程序從該存儲器引導到DSP應用板上的高速存儲器(如內(nèi)部SRAM,SDRAM等)中。由于FLASH具有電信號刪除功能?且刪除速度快,集成度高,因而已成為此種存儲器的首選。

將用戶程序代碼寫入FLASH的方法有兩種:第一種是用專門的FLASH編程器實現(xiàn),第二種是通過系統(tǒng)微處理器與FLASH的接口來實現(xiàn)。第一種方法的主要優(yōu)點是使用方便可靠,但要求FLASH只能是雙列直插等一些可插拔的封裝形式,由于芯片制造工藝的提高,芯片的集成度越來越高,FLASH正向小型化、貼片式發(fā)展,從而使表面貼裝或PLCC封裝的FLASH難以利用編程器編程。第二種方法克服了第一種方法的缺點,且使用靈活,因而在DSP系統(tǒng)中的應用日益廣泛。

由于FLASH的存取速度較慢,寫入FLASH的程序將在系統(tǒng)上電時被DSP裝載到快速的存儲器中運行,這個過程稱為boot loader。不同的DSP有不同的引導方式,本文將以TMS320C6713為例來介紹TMS320C6000系列的boot loader方式。

1?。疲蹋粒樱鹊墓ぷ鞣绞郊霸谙到y(tǒng)編程

目前,市場上的FLASH型號很多,但工作方式大體相同,下面以AM29LV160D為例進行介紹。

1.1 AM29LV160D FLASH存儲器簡介

AM29LV160D是AMD公司生產(chǎn)的2M×8bit/1M×16bit FLASH存儲器,它的數(shù)據(jù)寬度為8位、16位可選,采用3.3V供電,完全兼容JEDEC標準,并支持在系統(tǒng)編程,用戶只需向其內(nèi)部的命令寄存器寫入命令序列即可實現(xiàn)部分擦除、全部擦除、數(shù)據(jù)寫入等功能;同時可提供硬件和軟件方法來檢查FLASH的操作執(zhí)行情況。

圖1

    1.2 編程方法

對FLASH的在系統(tǒng)編程就是通過一定的編程命令序列來控制FLASH的工作方式,這些命令序列是一些特定字符的組合,只要向FLASH中的特定寄存器以特定的順序輸入這些字符即可進入相應的編程模式。AM29LV160D中的主要命令序列和寫入地址如圖1所示。具體說明如下:

●復位命令序列:對FLASH中任一地址寫入“F0”,即可實現(xiàn)復位。

● 自動選擇模式:此模式主要用于編程器編程時,由編程器根據(jù)從數(shù)據(jù)線DQ7~DQ0讀出的識別碼自動配置編程邏輯,當然也可以通過命令序列在在系統(tǒng)情況下將自動選擇碼讀出。

●編程命令序列:程序可以以字節(jié)方式或字方式寫入,這主要根據(jù)FLASH外部引腳BYTE的狀態(tài)而定。

●芯片擦除命令序列:FLASH編程時應先執(zhí)行擦除命令,這是因為編程指令只能將數(shù)據(jù)由1變?yōu)椋?,反之則不行。

● 扇區(qū)擦除命令序列:為了編程方便及保護有用數(shù)據(jù),數(shù)據(jù)擦除可以只擦除某些無用的扇區(qū)。

● 擦除暫停和恢復命令序列:這個命令序列只在進行扇區(qū)擦除時有效,它允許編程者中斷一個扇區(qū)的擦除操作,接著從沒有被擦除的扇區(qū)讀出或寫入數(shù)據(jù)。

●寫入命令:也分為字節(jié)模式和字模式,分別對應FLASH的8位和16位工作方式,具體為哪種模式,可由FLASH的BYTE腳的輸入來決定,低電平為字節(jié)模式,高電平為字模式。

在對FLASH進行編程時,FLASH提供硬件和軟件機制來獲得FLASH的狀態(tài),以確定數(shù)據(jù)寫入或擦除操作是否完成。硬件方法主要是利用FLASH的外部引腳RY/BY的輸出信號在命令序列的最后一個寫脈沖(WE)的上升沿之后有效。當該輸出為低電平時,表示FLASH正在編程或擦除中,而當該輸出腳為高電平時,即表示編程或擦除已完成。將此引腳與TMS320C671x系列DSP的ARDY引腳相連,即可實現(xiàn)硬件的自動編程或擦除的完成判斷。C6000系列DSP與FLASH的連線圖如圖2所示。

軟件方法是利用從FLASH數(shù)據(jù)線讀取的數(shù)據(jù)來判斷FLASH的狀態(tài),讀取數(shù)據(jù)中的主要判斷位為DQ2、DQ3、DQ5、DQ6和DQ7,它們之間的相互組合提供了幾種軟件判斷狀態(tài)的方法,應用較多且較為簡便的方法是在命令序列寫入后,如果寫入的是編程命令,則選擇一個地址,并循環(huán)讀取這個地址的數(shù)據(jù)。若裝置仍處于編程狀態(tài)之中,DQ7輸出為寫入數(shù)據(jù)的補碼,而在編程完成后,DQ7輸出的是所選地址上的正確數(shù)據(jù)。如果寫入的是擦除命令,那么?當裝置處于擦除狀態(tài)時,則DQ7輸出為0,若擦除完成或擦除被中斷?DQ7輸出為1。選擇地址時應注意:若地址所在區(qū)域屬于FLASH中的保護區(qū)域,則DQ7輸出的FLASH狀態(tài)信息有效,有效時間只能持續(xù)大約1μs,然后輸出正確數(shù)據(jù)。而擦除命令擦除的范圍如果包括FLASH中的保護區(qū)域,那么命令將被忽略,此時DQ7輸出狀態(tài)信息有效,持續(xù)時間大約100μs。對FLASH的操作有時會出錯,出錯時,FLASH將處于不正常狀態(tài),DQ7可能永遠也不會輸出地址上的正確數(shù)據(jù),此時就需讀取DQ5的輸出信息,若為1則表示操作失敗。其軟件流程圖如圖3所示。

對FLASH的編程既可以用匯編語言,也可以用C語言,以下給出部分C代碼。該程序代碼可采用TI公司專門用于TI公司系列DSP編程的Code Com-poser Studio 編程工具進行編寫。

void erase_flash(short * flash_ptr)

{

short * ctrl_addr1=(short *)((int)flash_ptr+(0x555<<2));

/*此處0x555地址左移兩位,按16位存儲器來看,本來只需左移一位,但在計算式中?地址flash_ptr是先轉換成int型再計算的,而要寫入命令的地址0x555為16位地址,所以需乘2,因此應當再左移一位*/

short * ctrl_addr2=(short *)((int)flash_ptr+(0x2aa<<2));?

* ctrl_ addr1=0x00aa;

* ctrl_addr2=0x0055;

* ctrl_addr1=0x0080;

* ctrl_addr1=0x00aa;

* ctrl_addr2=0x0055;

* ctrl_addr1=0x0010;

}

void program_flash(short * source_ptr?short * flash ptr,short length)

{

short i?

short * ctrl_addr1=(short *)((int)flash_ptr+(0x555<<2));??

short * ctrl_addr2=(short *)((int)flash_ptr+0x2aa<<2));?

for(i=0;i<length;i++)

{

* ctrl_addr1=0x00aa;

* ctrl_addr2=0x0055;

* ctrl_addr1=0x00a0;

* flash_ptr++=*source_ptr?

}

}

在上面的程序中,對FLASH的命令序列的寫入地址有一個左移指令,即若應寫入命令的寄存器地址為0x555,實際編程時,應先對0x555左移若干位,然后再對得到的地址寫入命令。這是因為,TMS320C6000系列DSP為32位DSP,它的外部地址總線引腳的最低位(LSB)為EA2,即輸出地址的最低位為實際地址的第2位,而不會輸出第1位和第0位,但實際外接的FLASH可以是8位、16位、32位不等。如果連接非32位存儲器,在讀數(shù)據(jù)時?DSP的外部存儲器接口(EMIF)會自動將實際地址左移若干位,以使外部地址總線引腳的最低位EA2根據(jù)FLASH位數(shù)的不同輸出實際地址的第0位或第1位,然后再將幾次讀入的數(shù)據(jù)合成一個32位的值(外接FLASH的位數(shù)可以在EMIF寄存器中設置),而在寫數(shù)據(jù)時,就需要編程者手動進行移位,具體方法是?外接8位存儲器時左移2位,外接16位存儲器時左移1位。

2 用FLASH實現(xiàn)DSP的程序自引導

TMS320C6000系列DSP包括多個型號,各個型號的程序自引導方法一致,下面以TMS320C6713為例來介紹程序自引導的實現(xiàn)過程。

2.1 TMS320C6713DSP簡介

TMS320C6713是TI公司推出的TMS320C67xx系列浮點DSP中最新的一種芯片。TMS320C6713每周期可以執(zhí)行8條32位指令;支持32/64位數(shù)據(jù);具有最高225MHz、4.4ns指令周期的運行速度和1800MIPS或1350MFLOPS的處理能力;同時是有強大的外設支持能力;外部存儲器接口(EMIF)可以很方便地和SDRAM、SBSRAM、FLASH、SRAM等同步和異步存儲器相連,16位HPI接口可以和各種處理器?如PC、POWERPC等?接口;另外還有優(yōu)化的多通道緩存串口和多通道音頻串口(僅TMS320C6713),這些外部接口使設計人員可以很容易實現(xiàn)自己的應用系統(tǒng)。

2.2 TMS320C6713程序自引導功能的實現(xiàn)

斷電時用慢速ROM或FLASH存儲程序和初始化數(shù)據(jù),上電后引導到內(nèi)部或外部快速RAM中運行是現(xiàn)在普遍采用的一種設計DSP電路板的方法,該方法可靠、方便、靈活且成本較低。但對于不同的DSP有不同的程序自引導方法。本文只討論TMS320C6000系列DSP的引導方法。

和以往TI公司的DSP(如3x、4x)采用引導表由固化在DSP內(nèi)部的引導程序實現(xiàn)程序的自引導不同,TMS320C6000系列DSP采用的是一種新的引導方法,對于TMS320C6713,上電后,若選擇從EMIF引導程序,則DSP自動將位于地址空間CE1(0x90000000~0x9FFFFFFF)開頭的1kB代碼傳輸?shù)降刂房臻g0處。它的數(shù)據(jù)傳輸采用默認時序,用戶可以選擇外部程序存儲器的寬度(8位/16位/32位),然后由EMIF自動將幾次讀入的數(shù)據(jù)合成32位數(shù)據(jù)。傳輸由DSP中的EDMA通道以單幀的形式自動進行,傳輸完成后,程序從地址0處開始運行。因此,要在TMS320C671x中實現(xiàn)基于FLASH的自引導功能,必須將FLASH配置在DSP的CE1地址空間中。

以上工作均由DSP自動完成。很明顯,自動傳輸?shù)拇a并不能滿足絕大多數(shù)編程者對代碼長度的要求,因此可在這段代碼中加入數(shù)據(jù)傳輸功能,從而將實際工作中遠大于1kB的代碼由FLASH中讀入到用戶指定的存儲空間,然后再將程序跳到實際有用的代碼處運行。對FLASH編程并實現(xiàn)程序自引導的具體過程如下:

(1)對DSP正常運行程序的處理

Code Composer Studio(CCS)是TI公司開發(fā)的用于DSP產(chǎn)品的軟件開發(fā)工具。由CCS得到的代碼為目標文件格式(COFF),這種格式文件不能直接寫入FLASH,而要先用其它語言(如C)編寫文件,然后由轉換工具進行轉化。

在COFF格式下,程序被分成很多段(包括程序段、初始化數(shù)據(jù)段、未初始化數(shù)據(jù)段、自定義段等),每段都占據(jù)連續(xù)的存儲空間,段與段之間相互獨立。另外,在COFF文件中,除了段內(nèi)的用戶程序和數(shù)據(jù)外,還包含一些額外的信息,其中有COFF文件的版本、段的數(shù)量、段的長度和起始地址等,分析清楚這些信息,就可以編寫自己的文件轉換工具了。具體方法是:讀入COFF文件,根據(jù)格式分析該文件的內(nèi)容,再把用戶程序和數(shù)據(jù)部分提取出來,仍分成一個個段,并在每個段前加入起始位置和段長度信息,同時在最后一個段的末尾加上結束標志,最后寫入一個新的文件。在此過程中,因為COFF文件的字長為32bit,而FLASH寬度可能為8bit或16bit,因而要在兩者之間進行手工轉化。

(2)編寫boot程序

boot程序的大小不能超過1kB,它主要完成以下幾個功能:第一是配置DSP的EMIF寄存器,然后從FLASH中把各個段中的程序和數(shù)據(jù)拷貝到用戶指定的存儲器物理地址中,同時跳到程序的入口點。在此應當注意:C程序的入口點并非main(),而是c_int00,這是因為在調(diào)用main()函數(shù)之前,系統(tǒng)必須先建立C語言的運行環(huán)境。如為系統(tǒng)堆棧定義.stack段、建立初始化堆棧和禎指針、初始化全局和靜態(tài)變量等。另外,由于boot程序本身也是COFF文件格式,所以也需格式轉換。

(3)編寫FLASH燒寫程序

FLASH的燒寫程序可以根據(jù)前面的介紹來編寫,但要注意,應將boot程序寫入CE1空間開始的1kB中,而將DSP正常工作程序寫入1kB以后的地址空間中。

3 結束語

本文介紹了FLASH在系統(tǒng)編程和基于FLASH實現(xiàn)TMS320C6713 DSP程序自引導的過程。實際上,TMS320C6000系列DSP中其它類型(如C6201、C6701等)的boot也與本文所述相同,因此,完全可以相互借鑒。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉