<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          作者: 時間:2016-10-22 來源:網(wǎng)絡(luò) 收藏

          摘要:文中詳細(xì)描述了TMS320C6727兩種方式,并給出了在工程應(yīng)用的實現(xiàn)方法。這兩種方法都避免了在設(shè)計過程中使用外部程序存儲芯片,節(jié)約了布線空間和設(shè)計成本。在過程中,主機能夠驗證寫入芯片的數(shù)據(jù),提高了系統(tǒng)的可靠性。

          本文引用地址:http://www.ex-cimer.com/article/201610/309287.htm

          TMS320C6727是TI公司的浮點信號處理芯片,該芯片具有處理速度快,運算精度高的特點,因此被廣泛的使用。對該芯片進(jìn)行應(yīng)用程序加載通常采用的Parallel Flash方式,該方式需要一片外部存儲芯片,加載程序相對復(fù)雜,在加載的過程中具有不可預(yù)知性。對于具有上位主機的系統(tǒng)來說,采用0 SLAVE方式進(jìn)行時,不僅不需要外部程序存儲芯片,同時在引導(dǎo)的過程中可以嚴(yán)格的驗證寫入DSP芯片內(nèi)的數(shù)據(jù),具有更高的可靠性和靈活性。

          1 引導(dǎo)方式配置

          TMS320C6727(DSP)有,0,Parallel FLASH,I2C1等多種引導(dǎo)方式,不同的引導(dǎo)方式是通過芯片上電時讀取外部引腳配置確定的,本文主要對0 Slave兩種引導(dǎo)方式進(jìn)行詳細(xì)介紹。引導(dǎo)方式的選擇見表1,圖1中描述了硬件實現(xiàn)方法。

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計
          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          根據(jù)圖1,當(dāng)選擇HPI引導(dǎo)方式時,電阻R255焊接,斷開電阻R254。當(dāng)選擇SPI0 SLAVE方式時斷開電阻R255,同時焊接R254,R256,R259和R260。

          2 SPI0 SLAVE方式

          在芯片上電后通過確定BOOT引腳的配置來選擇SPI0SLAVE引導(dǎo)方式,然后DSP運行固化在芯片內(nèi)部的BOOTLOADER程序。DSP芯片的BOOTLO ADER引導(dǎo)程序主按照AIS通信協(xié)議與外部器件的通信,完成程序加載并運行。AIS協(xié)議的基本結(jié)構(gòu)如圖2所示。

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          AIS協(xié)議分為3個傳輸過程:SWS-POS-OS;具體描述如下:

          1)SWS階段主要用來同步主機與DSP之間的通信連接,在這個過程中主機向DSP發(fā)送同步數(shù)據(jù)0x5853,同時主機進(jìn)行接收,當(dāng)主機接收到的數(shù)據(jù)位0x5253后,表示主機與DSP之間同步完成,并進(jìn)行POS階段。

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          2)POS階段主機首先發(fā)送數(shù)據(jù)0x5853590B,并收到從DSP發(fā)送的數(shù)據(jù)0x5852590B,然后主機向DSP發(fā)送一個數(shù)據(jù)N,在正確接收到數(shù)據(jù)N后,主機依次向DSP發(fā)送數(shù)據(jù)1-N,并收到相應(yīng)的數(shù)據(jù),在整個過程中,如果數(shù)據(jù)接收出錯,則返回到SWS階段。如果正確接收,則進(jìn)入OS階段。

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          3)OS階段,主機首先向DSP發(fā)送一個AIS命令數(shù)據(jù),所有的AIS命令數(shù)據(jù)都是以0x5853xxxx的格式組成的,當(dāng)主機在向DSP發(fā)送命令數(shù)據(jù)時,主機會收到相應(yīng)的返回數(shù)據(jù),該數(shù)據(jù)的格式為0x5253xxxx。通過判斷接收的數(shù)據(jù)可以在OS階段監(jiān)控數(shù)據(jù)的寫入是否正常,當(dāng)出現(xiàn)異常時,返回到SWS階段,并從新開始正個過程。

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          3 HPI方式

          相對于SPI SLAVE方式,HPI加載方式則要簡單的多,首先在DOS界面下利用HEX6X執(zhí)行一個命令文件,把COFF文件轉(zhuǎn)換成一個可下載的ASCII文件。命令文件的設(shè)置如下:

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          根據(jù)上面的命令文件,最終生成的ASCII文件每一行以‘:’開頭,具體的格式如表2所示。

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          由表2可以看出,當(dāng)COFF文件轉(zhuǎn)換后的長度大于64kbytes時,長度信息將無法表示,為了避免產(chǎn)生這種情況,當(dāng)數(shù)據(jù)長度大于64kbytes時,會自動增加一行,該行的主要功能是對地址進(jìn)行線性擴展,在其下一行又從零開始,具體如下:

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計
          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          x.map文件包含有執(zhí)行程序在DSP中的入口地址信息(entry point)和各段的分配地址(dest)和長度(size)信息。上電后,上位機根據(jù)這些信息寫入到DSP的相應(yīng)的地址,當(dāng)整個文本文件傳輸完成后,向地址0x10000714中寫入DSP程序執(zhí)行的入口地址,然后向地址0x10000718中寫入數(shù)據(jù)0x01使DSP開始運行。工作流程見圖6。

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          上位機實現(xiàn)加載的程序如下(C語言):

          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計
          TMS320C6727 DSP兩種引導(dǎo)方式設(shè)計

          4 結(jié)束語

          文中介紹了TMS320C6727DSP芯片的兩種引導(dǎo)方式,這兩種方式都是通過上位主機對DSP芯片加載應(yīng)用程序,有利于DSP算法的改進(jìn),同時在不該變硬件的基礎(chǔ)上能夠通過簡單的上位機程序就能對板卡進(jìn)行擴展應(yīng)用。這兩種方法的上位機控制程序具有簡單易懂和便于移植的特點。兩種方法的區(qū)別在于,HPI方式由于是并行工作,因此速度很高,缺點是占用的引腳多,在硬件設(shè)計時對布線要求很高,而SPI0SLAVE方式以串行工作,相對來說程序加載時間相對較長,但是所需要的引腳很少,對于布線空間的要求低。在實際應(yīng)用中該兩種方式應(yīng)根據(jù)不同的實際情況進(jìn)行選擇。以上兩種方式在實踐中已經(jīng)被驗證是穩(wěn)定可靠并可行的。



          關(guān)鍵詞: DSP HPI SPI 引導(dǎo)

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();