[Full]
完整版
[Rss]
訂閱
[Xml]
無圖版
[Xhtml]
無圖版
Rss
& SiteMap
曙海教育集團(tuán)論壇
http://www.bjzhda.cn
曙海教育集團(tuán)論壇
◎
曙海教育集團(tuán)論壇
→
DSP6000系統(tǒng)開發(fā)
→
TMS320VC55X系列DSP的FLASH引導(dǎo)方法
共2 條記錄, 每頁顯示 10 條, 頁簽:
[1]
[瀏覽完整版]
標(biāo)題:TMS320VC55X系列DSP的FLASH引導(dǎo)方法
1樓
wangxinxin
發(fā)表于:2010-11-22 14:36:22
以下內(nèi)容含腳本,或可能導(dǎo)致頁面不正常的代碼
<font face="Arial"><strong>引言 </strong> 隨著數(shù)字信號(hào)處理技術(shù)的快速發(fā)展,DSP被廣泛的應(yīng)用到各種數(shù)字信號(hào)處理系統(tǒng)中。最終開發(fā)的系統(tǒng)要想脫離<a class="aBlue" href="http://shop.icbuy.com/product/list/36.html" target="_blank"><font class="f14">仿真器</font></a>運(yùn)行,必須將程序代碼存儲(chǔ)在非易失性<a class="aBlue" href="http://shop.icbuy.com/product/list/49.html" target="_blank"><font class="f14">存儲(chǔ)器</font></a>中。FLASH<a class="aBlue" href="http://shop.icbuy.com/product/list/49.html" target="_blank"><font class="f14">存儲(chǔ)器</font></a>以其大容量和可在線編程等特點(diǎn)已成為DSP系統(tǒng)的一個(gè)基本配置。如何將程序燒寫進(jìn)FLASH,并在上電時(shí)加載進(jìn)DSP內(nèi)部的RAM是FLASH在DSP系統(tǒng)中應(yīng)用的兩個(gè)基本技術(shù)問題。本文以基于TI公司的TMS320VC5509A和ATMEL公司的AT49LV1024 FLASH開發(fā)的系統(tǒng)為背景,介紹該系統(tǒng)引導(dǎo)相關(guān)的硬件設(shè)計(jì),燒寫軟件設(shè)計(jì)以及自舉引導(dǎo)、二次引導(dǎo)等實(shí)現(xiàn)方法。</font> <table align="left" border="0"> <tbody> <tr> <td valign="top" align="left" width="310" height="260"><!--文章頁大屏幕廣告--> <iframe style="BORDER-RIGHT: #e6e6e6 0px="0px" solid; BORDER-TOP: #e6e6e6 0px="0px" solid; BORDER-LEFT: #e6e6e6 0px="0px" solid; WIDTH: 300px; BORDER-BOTTOM: #e6e6e6 0px="0px" solid; HEIGHT: 250px; BACKGROUND-COLOR: #ffffff" name="icbuy_ad" marginwidth="0" marginheight="0" src="http://java09.icbuy.com/icbuyas/adPV.html?adlId=146&t=0.36223334325308565" frameborder="0" scrolling="no"></iframe></td></tr></tbody></table> <font face="Arial"><strong>TMS320VC5509A的自舉引導(dǎo) </strong> TMS320VC5509A每次上電復(fù)位后,在執(zhí)行完一系列初始化(配置堆棧寄存器、關(guān)閉中斷、程序臨時(shí)入口、符號(hào)擴(kuò)展、兼容性配置)工作后,根據(jù)事先配置的自舉模式,通過固化在ROM內(nèi)的BOOTLOADER程序進(jìn)行程序引導(dǎo)。VC5509A的引導(dǎo)模式選擇是通過四個(gè)模式選擇引腳BOOTM[0:3]的配置來完成的。在本系統(tǒng)中,采用EMIF(外部存儲(chǔ)接口)并行引導(dǎo)模式(16位數(shù)據(jù)寬度),則需將BOOTM[3:0]設(shè)置成1011即可。 通過EMIF接口可以靈活地和各種同步或異步<a class="aBlue" href="http://shop.icbuy.com/product/list/49.html" target="_blank"><font class="f14">存儲(chǔ)器</font></a>件無縫連接。通過EMIF可以擴(kuò)展VC5509A的存儲(chǔ)空間到128Mbit(SDRAM),存儲(chǔ)空間共被分為CE0~CE3。在EMIF的并行引導(dǎo)模式中,ROM中固化的Bootloader程序是以字地址0x200000為首地址開始加載程序。地址0x200000即位CE1空間的首地址,所以FLASH必須接在DSP的CE1空間上。在加載時(shí),EMIF的CE1空間已經(jīng)默認(rèn)配置成異步靜態(tài)隨機(jī)<a class="aBlue" href="http://shop.icbuy.com/product/list/49.html" target="_blank"><font class="f14">存儲(chǔ)器</font></a>(SRAM)接口,并且在時(shí)序上采用了最差情況設(shè)置(即最慢訪問速度),充分保證了時(shí)間裕量,使得程序代碼被順利的加載到DSP的內(nèi)存中。 Bootloader在引導(dǎo)程序時(shí),程序代碼是以引導(dǎo)表格式加載的。TMS320VC55x的引導(dǎo)表結(jié)構(gòu)中包括了用戶程序的代碼段和數(shù)據(jù)段以及相應(yīng)段在內(nèi)存中的指定存儲(chǔ)位置,此外還包括了程序入口地址、部分寄存器的配置值、可編程延時(shí)時(shí)間等信息(見表1)。 其中,程序入口地址是引導(dǎo)表加載結(jié)束后,用戶程序開始執(zhí)行的地址;寄存器配置數(shù)目決定了后面有多少個(gè)寄存器需要配置;只有當(dāng)延時(shí)標(biāo)志為0xFFFF時(shí),延時(shí)才被執(zhí)行;延時(shí)長(zhǎng)度決定了在寄存器配置后延時(shí)多少個(gè)CPU周期后才進(jìn)行下一個(gè)動(dòng)作;段長(zhǎng)度、段起始地址和數(shù)據(jù)則為用戶程序中定義的各個(gè)段的內(nèi)容,并且可以重復(fù)添加;最后以0x00000000(32個(gè)0)作為引導(dǎo)表的結(jié)束標(biāo)志。 要生成引導(dǎo)表,可以將CCS最終編譯生 成的.out文件通過CCS自帶的hex55.exe轉(zhuǎn)換程序得到。將hex55.exe、.out文件、cmd文件放在同一個(gè)文件夾中,通過dos命令格式調(diào)用hex55.exe,即可完成.out文件到hex格式的引導(dǎo)表文件的轉(zhuǎn)化。CMD文件用來提供引導(dǎo)表的相關(guān)配置信息,以下為一個(gè)CMD文件的實(shí)例: FlashBootTest.out; 輸入的.out文件 -boot; 說明創(chuàng)建boot文件 -v5510:2; 生成55X boot文件格式 -parallel16; 使用串行加載方式 -a; ASCII格式 -reg_config 0x1c00,0x6cd2; 在地址0x1c00 的寄存器寫入0x6cd2,配置CPU時(shí)鐘 -delay 0x100; 延時(shí)0x100 個(gè)CPU 時(shí)鐘周期 -o FlashBootTest.hex; 輸出.hex文件 </font><font face="Arial"><strong>FLASH的燒寫和自舉的實(shí)現(xiàn) TMS320VC5509A和AT49LV1024的硬件設(shè)計(jì) </strong> AT49LV1024是ATMEL公司3V供電系統(tǒng)的FLASH芯片,16位位寬,容量為64K字。VC5509A(PGE封裝)只有14條地址線,只能尋址16K字的SRAM空間。要想尋址64K字地址空間的話,FLASH地址線的高兩位則需要通過其他IO線控制。在本系統(tǒng)中通過GPIO4和GPIO6與FLASH的高兩位地址相連達(dá)到此目的,其連接示意圖如圖1所示。但是在Bootloader自舉引導(dǎo)程序的時(shí)候,并不能控制GPIO引腳,也就是只能引導(dǎo)最大16K字的程序。對(duì)于大于16K字的程序,則需要進(jìn)行二次引導(dǎo)。</font> <font face="Arial"><img src="http://www.icbuy.com/upload/info/news/content/20070803/0202493001186105643.jpg" border="0" twffan="done"/></font> <font face="Arial">圖1 VC5509A和AT49LV1024的硬件連接示意圖 </font><font face="Arial"><strong>二次引導(dǎo)技術(shù) </strong> 所謂二次引導(dǎo),通過DSP內(nèi)部ROM固化的Bootloader引導(dǎo)用戶自己編寫一個(gè)引導(dǎo)程序,其功能和ROM內(nèi)固化的Bootloader相同,再通過此引導(dǎo)程序加載系統(tǒng)最終運(yùn)行的程序代碼,并在加載結(jié)束后,把PC值置為新的程序入口地址。由于在用戶編寫的引導(dǎo)程序中,可以控制GIPO4和GPIO6,所以可達(dá)到64K字地址空間的尋址目的。其具體實(shí)現(xiàn)框圖如圖2所示。</font> <font face="Arial"><img src="http://www.icbuy.com/upload/info/news/content/20070803/0639783001186105643.jpg" border="0" twffan="done"/></font> <font face="Arial">圖2 TMS320VC 5509A二次引導(dǎo)框圖 </font><font face="Arial"><strong>數(shù)據(jù)燒寫程序設(shè)計(jì) </strong> FLASH的數(shù)據(jù)可直接讀取,但對(duì)FLASH的編程和擦除操作則需要通過一系列命令才能進(jìn)行。 AT49LV1024的寫操作只能將1變成0,而0變成1操作必須通過擦除操作進(jìn)行。所以每次寫FLASH之前,必須進(jìn)行片擦除,使存儲(chǔ)單元值變成0xFFFF,才能進(jìn)行編程。 擦除命令:需要六個(gè)周期,其操作命令如表2所示。 編程命令需要四個(gè)周期,其操作命令如表3所示。 編程和擦除操作都需要一定的周期的時(shí)間(AT49LV1024的單字編程時(shí)間是20ms,整片擦除時(shí)間是10s),用戶可以通過查詢標(biāo)志數(shù)據(jù)線DQ6和DQ7來確定編程或擦除是否完畢。當(dāng)片子正處于編程或擦除狀態(tài)時(shí),連續(xù)讀任意單元的值,DQ6的值將一直處于0、1交替變化,當(dāng)編程或擦除結(jié)束時(shí),讀DQ6則得到一個(gè)恒定值。本文即通過此方法來判斷操作是否結(jié)束。 根據(jù)FLASH的編程和擦除命令,編寫了相應(yīng)的C語言程序如下,其中SetGPIO46Addr(Addr)子程的作用是根據(jù)所傳遞的Addr值配置相應(yīng)的GPIO4和GPIO6即高兩位地址的值。 ·片擦除程序 #define FLASH_BASE_ADDR=0x200000; //設(shè)定FLASH的基地址,CE1的首地址 void ChipErase(void) { SetGPIO46Addr(0x5555); //設(shè)定FLASH的 地址值0x5555的GPIO4和GPIO6電平 *(volatile Uint16 *)(FLASH_BASE_ADDR+0x5555) = 0xaa; //向 FLASH的地址0x5555寫入0xaa SetGPIO46HiAddr(0x2aaa); *(volatile Uint16 *)(FLASH_BASE_ADDR+0x2aaa) = 0x55; SetGPIO46HiAddr(0x5555); *(volatile Uint16 *)(FLASH_BASE_ADDR+0x5555) = 0x80; SetGPIO46HiAddr(0x5555); *(volatile Uint16 *)(FLASH_BASE_ADDR+0x5555) = 0xaa; SetGPIO46HiAddr(0x2aaa); *(volatile Uint16 *)(FLASH_BASE_ADDR+0x2aaa) = 0x55; SetGPIO46HiAddr(0x5555); *(volatile Uint16 *)(FLASH_BASE_ADDR+0x5555) = 0x10; WriteOrEraseIsOver(); //等待擦除完畢 } ·單字編程程序 void WriteWord (Uint16 Addr, Uint16 Val) { SetGPIO46HiAddr(0x5555); *(volatile Uint16 *) (FLASH_BASE_ADDR+0x5555) = 0xaa; SetGPIO46HiAddr(0x2aaa); *(volatile Uint16 *) (FLASH_BASE_ADDR+0x2aaa) = 0x55; SetGPIO46HiAddr(0x5555); *(volatile Uint16 *) (FLASH_BASE_ADDR+0x5555) = 0xa0; SetGPIO46HiAddr(Addr); *(volatile Uint16 *) (FLASH_BASE_ADDR+ Addr ) = Val; // 寫進(jìn)編程數(shù)據(jù) WriteOrEraseIsOver(); //等待編程結(jié)束 } ·編程和擦除結(jié)束確認(rèn)程序 void WriteOrEraseIsOver(void) { volatile Uint16 LastDQ6,CurrentDQ6; SetGPIO46HiAddr(0x0); LastDQ6= (*(volatile Uint16 *)FLASH_BASE_ADDR)&0x40; //取DQ6的值 CurrentDQ6=(*(volatile Uint16 *)FLASH_BASE_ADDR)&0x40; While(1) //等待兩次連續(xù)讀DQ6的相等 { LastDQ6=CurrentDQ6; CurrentDQ6=(*(volatile Uint16*)FLASH_BASE_ADDR)&0x40; if(LastDQ6==CurrentDQ6) break; //當(dāng)兩次連續(xù)讀DQ6的相等時(shí),跳 出循環(huán) } } 本系統(tǒng)采用CCS仿真環(huán)境下對(duì)FLASH在線編程。先建立一個(gè)FLASH的燒寫工程,并在工程中將要燒寫進(jìn)FLASH引導(dǎo)表文件,通過CCS的LOAD DATA功能直接加載DSP的內(nèi)存中,根據(jù)加載的首地址和數(shù)據(jù)長(zhǎng)度,在仿真環(huán)境下燒進(jìn)FLASH中。值得注意的是,程序加載的內(nèi)存空間不能和FLASH的燒寫程序重疊,否則將燒寫失敗。 需要補(bǔ)充的是,經(jīng)HEX55.exe轉(zhuǎn)化后的hex格式的引導(dǎo)表文件是不能直接導(dǎo)入CCS中的。CCS只支持其特別規(guī)定的DAT格式文件通過LOAD DATA導(dǎo)入內(nèi)存中,所以引導(dǎo)表在導(dǎo)入之前必須先進(jìn)行轉(zhuǎn)化。轉(zhuǎn)化成DAT格式文件這個(gè)工作可以通過VC編寫一個(gè)簡(jiǎn)單的C語言轉(zhuǎn)化程序來實(shí)現(xiàn)。</font> <font face="Arial"><strong>結(jié)語 </strong> 本文闡述了一種針對(duì)TMS320VC55x系列DSP簡(jiǎn)單有效的FLASH燒寫方法,并提出了程序自舉引導(dǎo)的實(shí)現(xiàn)方法,包括大程序二次引導(dǎo)的實(shí)現(xiàn)方法。本文討論的引導(dǎo)方法包括硬件設(shè)計(jì)及相關(guān)程序已在實(shí)際開發(fā)CMOS圖像采集項(xiàng)目中使用,并成功運(yùn)行</font>
說明:
上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運(yùn)行.
共2 條記錄, 每頁顯示 10 條, 頁簽:
[1]
Copyright © 2000 - 2009
曙海
教育集團(tuán)
Powered By
曙海教育集團(tuán)
Version 2.2
Processed in .03101 s, 2 queries.
[Full]
完整版
[Rss]
訂閱
[Xml]
無圖版
[Xhtml]
無圖版
主站蜘蛛池模板:
久久水蜜桃亚洲AV无码精品
|
国产又猛又黄又爽
|
丰满少妇好紧多水视频
|
欧美一区二区久久精品
|
美女的尿口视频网站
|
好吊操视频在线
|
久久精品国产久精国产一老狼
|
久久精品人成免费
|
欧美性一交激情视频在线
|
午夜天堂一区人妻
|
色综合天天综合网国产成人网
|
国产精品无码一区二区在线
|
一根巨茎走天下小说
|
日产乱码卡一卡2卡3视频
|
亚洲性无码av在线
|
波多野结衣无内裤护士
|
四只虎免费永久观看
|
99久久免费国产精精品
|
婷婷色香五月综合激激情
|
久久精品国产99久久丝袜
|
欧美zoozzooz性欧美
|
交换配乱吟粗大SNS84O
|
精品国产一二三产品价格
|
国产床戏无遮挡免费观看网站
|
99r在线播放
|
成人年无码av片在线观看
|
五月婷婷电影网
|
波多野结衣一区二区三区高清在线
|
国产小视频免费
|
99精品国产在热久久无毒不卡
|
小鲜肉同性同志videosbest
|
久久婷婷国产综合精品
|
樱花草在线社区www
|
亚洲综合第二页
|
麻豆成人精品国产免费
|
日韩欧美亚洲精品
|
好大好硬好深好爽想要之黄蓉
|
久久国产精品无码HDAV
|
最新中文字幕av专区
|
亚洲欧美综合国产不卡
|
激情另类小说区图片区视频区
|