<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 基于CCS的DSP片外Flash直接燒寫(xiě)設計

基于CCS的DSP片外Flash直接燒寫(xiě)設計

作者: 時(shí)間:2009-09-10 來(lái)源:網(wǎng)絡(luò ) 收藏
引言
自加載后能夠正常運行,關(guān)鍵是中原程序代碼的正確。編譯生成的.out格式文件不能直接用于,在TI公司給出的技術(shù)文檔閉中,首先將.out文件利用其HEX工具轉換為.hex格式文件,然后利用工具將.hex格式映像文件寫(xiě)入到片外Flash中。.out格式到.hex格式轉換操作,需要編寫(xiě)特定格式的命令文件;將.hex格式文件燒寫(xiě)到Flash,需要嚴格按照.hex文件中的數據存放格式,編寫(xiě)相應的Flash燒寫(xiě)程序。對于初學(xué)者而言命令文件、燒寫(xiě)程序的編寫(xiě)則不容易理解和掌握,其中任何一個(gè)環(huán)節出現錯誤都將導致Flash燒寫(xiě)的失敗。這里提出了一種簡(jiǎn)單且方便可行的DATA直接燒寫(xiě)方法,不需要數據格式的轉換,保存有效的燒寫(xiě)DATA后,只需編寫(xiě)簡(jiǎn)單且容易理解的燒寫(xiě)程序即可完成Flash在線(xiàn)燒寫(xiě)。

2 DATA直接燒寫(xiě)原理
TMS320C671l提供含有DEBUG模塊的JTAG接口,可以通過(guò)JTAG接口訪(fǎng)問(wèn)內部寄存器和掛在CPU總線(xiàn)上的設備,對內部所有部件進(jìn)行編程。在工程開(kāi)發(fā)初始階段,一般都是通過(guò)JTAG口采用硬件仿真器進(jìn)行調試,將編譯生成的.out文件,通過(guò)仿真器加載到DSP板卡系統中,加載成功后,會(huì )彈出一個(gè)Disassembly(反匯編)窗口,如圖l所示。

本文引用地址:http://dyxdggzs.com/article/188658.htm

從窗口中可以看到程序加載的位置、對應的機器指令和匯編語(yǔ)言指令。DSP器件正常工作,支持二進(jìn)制機器指令代碼,仿真器加載.out文件的操作完成了.out格式到.hex格式的轉換,將DSP運行所需要的二進(jìn)制機器指令代碼加載到DSP板卡。其加載的位置可由中的cdb配置文件設定,也可以用戶(hù)編寫(xiě)Linking文件指定。雖然.out文件不能直接用于片外Flash燒寫(xiě),但CCS具有存儲器內的數據保存和加載功能,所以,在仿真器加載.out完成后,將存儲器中的二進(jìn)制機器指令數據保存起來(lái),再通過(guò)JTAG口采用在線(xiàn)編程的方式,將保存下來(lái)的數據燒寫(xiě)到片外Flash中。這就不必進(jìn)行.out格式到.heX格式的轉換,可方便容易地完成片外Flasn直接燒寫(xiě),這就是DATA直接燒寫(xiě)原理。

3 COFF段設置及保存與二級加載設計
3.1 COFF段設置

CCS編譯成功后生成一個(gè).map文件,在文件中可以查看存儲器的使用情況,COFF段運行地址,加載地址及段的長(cháng)度。COFF段按屬性可分為Initialized和Unintialized,Initialized段需要在DSP上電復位時(shí)從加載地址搬移到運行地址。要得到在線(xiàn)燒寫(xiě)方便且有效的DATA,必須為COFF段指定特定的運行地址,然后將運行地址上的DATA進(jìn)行保存.DSP上電復位后的加載操作則實(shí)現DATA從Flash到運行地址上的還原。
COFF段運行地址的指定可以手動(dòng)編寫(xiě)Linking文件,應用DSP/BIOS操作系統時(shí)也可直接對MEM屬性進(jìn)行設置。這里選用的TMS320C6711器件,內部RAM為64 K,在程序小于64 K、RAM不做他用時(shí),將COFF段運行地址全部指定在內部RAM。因為T(mén)MS320C6711上電復位自加載l K大小的程序,大多數情況下遠不能滿(mǎn)足需求,需采用二級加載的方式,將自加載的1K字節指令代碼設計成二級加載程序,完成剩余代碼的搬移。DSP上電復位結束后是從內部RAM的零地址開(kāi)始執行,需要將內部RAM零地址開(kāi)始的1 K大小的存儲區域分配給二級加載程序代碼段,剩余的內部RAM作為存儲其他COFF段使用。內部RAM劃分情況如表l所示。

應用DSP/BIOS操作時(shí),圖2給出在.cdb文件中對COFF段運行地址的設置。二級加載程序.boot段不能通過(guò).cdb文件設置,需要在工程的Linking文件中以下面的格式設定其運行地址:


在沒(méi)有應用DSP/BIOS,而是手動(dòng)編寫(xiě)Linking文件時(shí),需要以同樣的格式在SECTIONS大括弧內設定所需要加載的COFF段。
3.2 DATA保存與二級加載設計
由于TMS320C67ll自加載的l K程序不能滿(mǎn)足需求,需要進(jìn)行二級加載程序設計。DATA方法二級加載的實(shí)質(zhì)就是將運行地址下的有效數據通過(guò)二級加載從外部Flash還原到運行地址下,使程序能夠按照仿真器模式那樣的狀態(tài)正常運行。二級加載所需要的正確EMIF配置,二級加載方式以及加載結束后跳轉到C語(yǔ)言入口函數_c_int00()等設計在很多資料中都有介紹,在此不予贅述。這里主要介紹用于二級加載所需要的DATA保存操作,以及二級加載程序中,搬移表源地址,目的地址及其長(cháng)度的設計方法。
文中3.1部分將COFF段運行地址指定為IRAM,在編譯生成的.map文件中,可看到圖3所示的COFF段信息。從COFF段可看到其運行起始地址,長(cháng)度及屬性信息,將.out文件通過(guò)仿真器加載到DSP中后,根據.map文件保存屬性為Initialized的COFF段。在保存操作中發(fā)現Initialized段可能不連續,需要分多個(gè)數據段進(jìn)行保存。當Uninitialized段與相鄰的Initialized段大小比較可忽略時(shí),可將Initialized段間的Uninitialized段一起保存起來(lái),它不會(huì )影響二級加載后程序的運行,這樣做既能減少需要保存數據段的個(gè)數,又能簡(jiǎn)化保存操作,二級加載程序及在線(xiàn)燒寫(xiě)程序的設計。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Flash CCS DSP 燒寫(xiě)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>