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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > TMS320C6701 DSP自動加載研究

          TMS320C6701 DSP自動加載研究

          作者: 時間:2009-11-11 來源:網(wǎng)絡(luò) 收藏

          下面是用/BIOS配置工具在內(nèi)存空間中劃分好的各段開始地址及長度,其中EDFLASH就是外部FLASH上用于二次的地址空間。代碼則存放在FLASH的首地址,也就是0x1400000。

          1.2 轉(zhuǎn)換文件格式,得到燒寫文件(.h)
          程序編譯好后輸出的是COFF格式的.out文件,這種文件無法直接寫進(jìn)FLASH,所以只能將其轉(zhuǎn)換為其他FLASH支持的格式。一般來說,對FLASH燒寫的傳統(tǒng)方法是通過CCS自帶的格式轉(zhuǎn)換器hex6x把.out文件轉(zhuǎn)換為FLASH可識別的十六進(jìn)制格式(如Motorola-S、ASCII-Hex等),再用專門的編程器將其燒寫到FLASH芯片中保存。該方法的實現(xiàn)需要使用專門的FLASH燒寫器,實際應(yīng)用中較為不便,本工程中,在CCS環(huán)境下,通過JTAG口,完全由控制對FLASH進(jìn)行燒寫和擦除,實現(xiàn)了對外部FLASH的在線編程。
          由于燒寫是在CCS程序中實現(xiàn),所以首先要把.out格式的目標(biāo)文件轉(zhuǎn)換為工程中可包含的.h文件。根據(jù)前面提到的方法,需要把工作程序編譯后得到的代碼段和數(shù)據(jù)段分別寫進(jìn)FLASH中的不同地址,這就需要將COFF文件中的代碼段和數(shù)據(jù)段分別提取出來。具體做法是:使用CCS中“FiIe-Data-Save分別把代碼段和數(shù)據(jù)段保存為dat文件(code.dat和data.dat),代碼段和數(shù)據(jù)段的具體起始地址及長度可以參考程序連接后生成的連接過程結(jié)果說明文件(后綴為.map,其中記錄了段的各種詳細(xì)信息,從中還可以知道各段的地址分配是否正確)。雖然保存下來的代碼段和數(shù)據(jù)段都是.dat格式,但其內(nèi)容已經(jīng)是我們所需要的DSP工作需要的底層機器碼,所以只需要將其作為一個數(shù)組的內(nèi)容,再給數(shù)組加上合適的類型定義,就可以直接將其格式改為能在CCS工程中直接調(diào)用的.h文件(code.h和data.h)。這樣也就巧妙地解決了格式轉(zhuǎn)換問題。
          1.3 燒寫FLASH
          有了.h格式的燒寫文件,下面就只需要再編寫一個用于擦除和燒寫FLASFI的DSP工作程序,由DSP控制并通過JTAG線操作FLASH芯片,燒寫和擦除時要按照FLASH芯片手冊中的要求先向指定地址寫入指定關(guān)鍵字。注意代碼和數(shù)據(jù)應(yīng)分別寫入FLASH中相應(yīng)的存儲地址。以上三步完成后,DSP就可以在重新加電時實現(xiàn)引導(dǎo):首先從地址0x1400000處搬移64 KB初始化程序到片內(nèi)運行,然后再從地址0x1410000處剩余的代碼和數(shù)據(jù)。


          2 結(jié) 語
          實際工程中的應(yīng)用證明了上述方法可以使在脫離上位機的情況下實現(xiàn)上電后運行,并且穩(wěn)定可靠,操作方便,使用JTAG線和仿真器就可完成所有操作。該方法只要對一些存儲空間的配置稍作修改即可用于C6000系列其他DSP芯片的自動加載。另外,本文思路也可推廣到其他DSP芯片的自動加載設(shè)計中。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 研究 加載 自動 DSP TMS320C6701 DSP

          評論


          相關(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); })();