国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于EDMA的TMS320C6713片外Flash自舉引導(dǎo)

發(fā)布時間:2010-12-14 19:07    發(fā)布者:designer
關(guān)鍵詞: eDMA , Flash , TMS320C6713 , 引導(dǎo)
在基于DSP的系統(tǒng)設(shè)計中,為了保證掉電時程序不丟失,總是將程序保存在非易失性存儲器中,以便系統(tǒng)在上電復(fù)位時可將其引導(dǎo)到DSP內(nèi)部的RAM中執(zhí)行。以TI公司的TMS320C6713浮點DSP和AMD公司的AM29LV040Flash存儲器為例,通過JTAG加載來設(shè)計一個完整的自舉引導(dǎo)方案。著重描述了引導(dǎo)引腳以及相關(guān)寄存器的設(shè)置,分析了采用EDMA傳輸方式將代碼從Flash復(fù)制到DSP的過程,并對引導(dǎo)程序給出基于匯編語言的代碼實現(xiàn)。工程實踐證明,該設(shè)計方案是可行、有效的。

在許多基于DSP的系統(tǒng)設(shè)計中,程序代碼總是保存在ROM、Flash或其他非易失存儲器中,以保證掉電時代碼仍存在,因此必須要解決引導(dǎo)裝載的問題。自舉引導(dǎo)(Bootload)是指系統(tǒng)上電時,DSP將一段存儲在外部非易失性存儲器的代碼搬移到內(nèi)部的高速存儲器單元中執(zhí)行(如片內(nèi)RAM)。本文以TI 公司的TMS320C6713(以下簡稱為C6713)浮點DSP和AMD公司的AM29LV040Flash存儲器為例,通過JTAG口加載來設(shè)計一個完整的引導(dǎo)裝載方案。

TMS320C6713的引導(dǎo)配置

外部信號BOOTMODE[4:3]決定了C6713的引導(dǎo)配置,在RESET信號的上升沿BOOTMODE[4:3]信號被獲取。C6713DSP只有2種引導(dǎo)方式:

(1)ROM/Flash引導(dǎo)。外部存儲器的一部分通過EDMA控制器拷貝到DSP內(nèi)部地址0處。盡管引導(dǎo)程序在器件從外部復(fù)位釋放后才開始執(zhí)行,但在 CPU被保持在內(nèi)部復(fù)位時,這個拷貝就進(jìn)行了。Flash寬度也通過BOOTMODE[4:3]選擇。在Flash寬度小于32bit的情況下,DSP通過EMIF讀取時,可以自動將相鄰的8bit字節(jié)或16bit半字打包形成32bit的指令字,并且這些數(shù)值在外部存儲器中可以通過設(shè)定HD8來確定 endian存儲模式。

(2)主機引導(dǎo)。核心CPU停留在復(fù)位狀態(tài),器件其余部分保持正常狀態(tài)。外部主機通過HPI或擴(kuò)展總線初始化CPU的存儲空間。在必要的初始化完成之后,主機在HPI控制寄存器的DSPINT位寫1,這個寫操作引起DSPINT信號的跳變,從而導(dǎo)致引導(dǎo)配置邏輯使CPU脫離復(fù)位狀態(tài),然后CPU從地址0處開始運行。

Flash引導(dǎo)模式的實現(xiàn)

硬件設(shè)計

C6713引導(dǎo)引腳說明如表1所列。

設(shè)計時將DSP主機口引腳HD[4:3]中的HD4通過下拉電阻接地,HD3通過上拉電阻接3.3V電源,即HD[4:3]=01B。C6713的 EMIF含有4個CE空間寄存器,由于Flash加載程序是從CE1空間搬入的,因此DSP的CE1與Flash(AM29LV040)的片選相連,這種連接將Flash的內(nèi)部地址映射到DSP的0x90000000處,從而完成了基本的硬件設(shè)計。DSP與Flash接口的硬件連接如圖1所示。





圖1 DSP與Flash的引腳連接

引導(dǎo)程序的設(shè)計

Flash存儲器的擦除

在對AM29LV040Flash進(jìn)行讀寫操作之前,應(yīng)對其進(jìn)行擦除,擦除操作需要6個總線周期:

(1)向555H地址的存儲單元寫入數(shù)據(jù)AAH;

(2)向2AAH地址的存儲單元寫入數(shù)據(jù)55H;

(3)向555H地址的存儲單元寫入數(shù)據(jù)80H;

(4)向555H地址的存儲單元寫入數(shù)據(jù)AAH;

(5)向2AAH地址的存儲單元寫入數(shù)據(jù)55H;

(6)向555H地址的存儲單元寫入數(shù)據(jù)10H;

完成上述操作后,F(xiàn)lash存儲器完全擦除。

在CCS環(huán)境下,用C語言編寫上述操作如下:

voidFlash_Erase()

{

*(char*)FLASH_ADR1=0xAA;

*(char*)FLASH_ADR2=0x55;

*(char*)FLASH_ADR1=0x80;

*(char*)FLASH_ADR1=0xAA;

*(char*)FLASH_ADR2=0x55;

*(char*)FLASH_ADR1=0x10;

}

根據(jù)前面的設(shè)計,F(xiàn)lash的內(nèi)部地址已經(jīng)映射到C6713的CE1空間,其開始地址為0x90000000。因此FLASH_ADR1,F(xiàn)LASH_ADR2的定義如下:

#define FLASH_ADR1 0x90000555

#define FLASH_ADR2 0x900002AA

匯編源代碼文件

對于C6713而言,DSP上電復(fù)位后,EDMA自動從CE1空間拷貝1KB數(shù)據(jù)(引導(dǎo)代碼應(yīng)定位與此)到地址0處,然后從0地址處開始執(zhí)行引導(dǎo)代碼指令。本引導(dǎo)代碼的主要功能是將用戶程序段從Flash復(fù)制到DSP內(nèi)部RAM中,然后再跳轉(zhuǎn)到程序的入口處開始執(zhí)行主程序。在引導(dǎo)程序內(nèi)復(fù)制程序段要使用 EDMA,以快速、靈活地實現(xiàn)DSP存儲空間內(nèi)數(shù)據(jù)的搬移。數(shù)據(jù)搬移的源/目的可以是片內(nèi)存儲器、片內(nèi)外設(shè)或外部器件。而此時需要對EDMA的源、目的地址、搬移長度以及基本的傳輸方式進(jìn)行相關(guān)的設(shè)置,如表2所示,然后運用匯編語言編程加入到引導(dǎo)程序即可。







核心引導(dǎo)程序如下:

.sect“.BootCode” ;將引導(dǎo)代碼分配到BootCode段中

.global myBootCode

.ref_c_int00 ;C程序的入口地址

MVKL .S1EDMA0_OPT ,A5

MVKL . S10x50010001 ,B4 ;低16bit寫入寄存器

MVKH .S1EDMA0_OPT ,A5

MVKH .S10x50010001 ,B4 ;高16bit寫入寄存器

STW .D1B4,*A5 ;裝載EDMA的OPT參數(shù)

MVKL .S1EDMA0_SRA ,A5

MVKL .S10x90001000 ,B4 ;低16bit寫入寄存器

MVKH .S1EDMA0_SRA ,A5

MVKH .S10x90001000 ,B4 ;高16bit寫入寄存器

STW.D1B4,*A5 ;裝載EDMA的SRC參數(shù)

....

....

接下來啟動EDMA復(fù)制主程序段:CPU可以通過寫事件置位寄存器(ESR)啟動一個EDMA通道。 ESR中某一位寫1時,將強行觸發(fā)對應(yīng)的事件。程序如下:

MVKL .S10x00000001, B4

MVKL .S1EDMA_ESR, A5 ;低16bit寫入寄存器

MVKH .S1EDMA_ESR, A5

MVKH .S10x00000001, B4 ;高16bit寫入寄存器

STW .D1 B4, *A5 ;將ESR第一位置1

NOP5

傳輸
   

結(jié)束后,跳轉(zhuǎn)到C程序的入口地址 _c_int00處,開始執(zhí)行主程序:

MVKL .S2_c_int00, B0

MVKH .S2_c_int00, B0

B.S2B0

NOP5

鏈接命令文件

鏈接命令文件是DSP開發(fā)過程中生成可執(zhí)行文件(.out)必不可少的一個環(huán)節(jié)。它對段的功能有2 個,一是將由匯編器產(chǎn)生的COFF格式的OBJ文件作為輸入塊,當(dāng)有多個文件進(jìn)行鏈接時,將相應(yīng)的段結(jié)合在一起生成可執(zhí)行輸出模塊;二是重新定位,將輸出的段分配到存儲器中的指定地址。

編寫命令文件時,有時希望將代碼裝入存儲器的一個地方,而在另一個地方運行。例如:一些關(guān)鍵的執(zhí)行代碼必須裝在系統(tǒng)的ROM中,但希望在較快的RAM中運行。鏈接器提供了一個處理該問題的簡單方法。利用SECTIONS偽指令選項可讓鏈接器定位2次。第一次使用裝載關(guān)鍵字load設(shè)置裝入地址,再使用運行關(guān)鍵字run設(shè)置它的運行地址。裝載地址確定段的原始數(shù)據(jù)或代碼裝入的地方,而任何對段的引用則參考它的運行地址。在應(yīng)用中必須將該段從裝載地址復(fù)制到運行地址,本引導(dǎo)程序便使用EDMA方式完成這一復(fù)制過程。鏈接命令文件(boot.cmd)如下:

MEMORY

{

VEC:ORG=0x00000000,LEN=0x00001000

PMEM:ORG=0x00001000,LEN=0x00004000

CEVEC:ORG=0x90000000,LEN=0x00001000

CEPMEM:ORG=0x90001000,LEN=0x00004000

}

以上設(shè)置是將整個存儲器分成具有不同名稱的存儲區(qū)域。VEC,PMEM代表內(nèi)部RAM的兩塊存儲空間,而CEVEC,CEPMEM代表Flash內(nèi)的兩塊存儲空間。對目標(biāo)文件中各段的加載地址和運行地址在SECTIONS段實現(xiàn)。

SECTIONS

{

.BootCode:load=CEVEC;用戶的引導(dǎo)代碼段定位在Flash的最開始。

.text:load=CEPMEM,run=PMEM;用戶程序段裝載于

Flash空間,而運行在C6713內(nèi)部RAM中。

}

通過JTAG口的Flash在線燒寫

用匯編語言編寫一個搬移程序,內(nèi)容僅是Flash的擦除過程,以及對EDMA的多次操作構(gòu)成的由片內(nèi)RAM到片外Flash的寫入過程。把該搬移程序直接嵌入主程序中,這樣程序代碼長度很短,不會占用過多的主程序空間。在主機引導(dǎo)方式下,通過JTAG口load后,手工更改PC值使其指向這段代碼,控制其運行結(jié)束,完成自舉程序的在線燒寫。而在此之后,這段短小的搬移程序不會被主程序中任何一段代碼所調(diào)用。

結(jié)束語

工程實際應(yīng)用表明該方法是切實可行的,與以往Flash引導(dǎo)程序編寫方法相比避免了目標(biāo)代碼的格式轉(zhuǎn)換,利用EDMA直接搬移,無需編程器,F(xiàn)lash也不需頻繁拆卸,利于工程上的快速開發(fā)。
本文地址:http://www.qingdxww.cn/thread-46723-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點和對其真實性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 無線充電基礎(chǔ)知識及應(yīng)用培訓(xùn)教程2
  • 為何選擇集成電平轉(zhuǎn)換?
  • 無線充電基礎(chǔ)知識及應(yīng)用培訓(xùn)教程3
  • 想要避免發(fā)生災(zāi)難,就用MPLAB® SiC電源仿真器!
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产xxxxx免费视频 | 久草国产精品 | 国内成人自拍视频 | 国产成人禁片免费观看 | 韩国日本免费不卡在线观看 | 毛片基地看看成人免费 | 国产区久久 | av.www| 亚洲动漫在线观看 | 成人青青草 | 亚洲孕交 | 999yy成年在线视频免费看 | 亚洲特级片 | 男女做www免费高清视频 | 欧美网站在线播放 | 色妞色综合久久夜夜 | 欧美日韩中文字幕免费不卡 | 韩剧网最新的韩国电视剧免费观看 | 日韩毛片在线播放 | 成年女人免费毛片视频永久 | 天天在线欧美精品免费看 | a毛片免费 | 久久不卡精品 | 欧美一区a | 九色在线免费观看 | 国产麻豆精品hdvideoss | 色老头成人免费视频天天综合 | 天堂va在线高清一区 | 免费观看黄a一级视频日本 免费观看黄a一级视频 | 日韩大片免费看 | 亚洲国产一区在线精选 | 欧美日本一区亚洲欧美一区 | 欧美又大又粗又长又硬 | 黄色片视频免费看 | 在线观看视频网站www色 | 天堂网免费视频 | 亚洲自拍偷拍图 | 四虎影视在线免费观看 | 乱一色一一区二区三区 | 国产韩国在线 | 国产精品嫩草影院在线看 |