999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

TMS320VC55X系列DSP的FLASH引導方法

2007-12-31 00:00:00呂曉明段發階
電子產品世界 2007年7期

摘要:本文以實際系統開發基礎為背景,闡述了TMS320C55X系列DSP對FLASH在線燒寫的方法,給出了系統的硬件連接示意圖和完整的燒寫程序,并研究了自舉引導的實現方法以及大程序的二次引導方法。

關鍵詞:TMS320C55X;FLASH;Bootloader;燒寫;二次引導

引 言

隨著數字信號處理技術的快速發展,DSP被廣泛的應用到各種數字信號處理系統中。最終開發的系統要想脫離仿真器運行,必須將程序代碼存儲在非易失性存儲器中。FLASH存儲器以其大容量和可在線編程等特點已成為DSP系統的一個基本配置。如何將程序燒寫進FLASH,并在上電時加載進DSP內部的RAM是FLASH在DSP系統中應用的兩個基本技術問題。本文以基于TI公司的TMS320VC5509A和ATMEL公司的AT49LVl024 FLASH開發的系統為背景,介紹該系統引導相關的硬件設計,燒寫軟件設計以及自舉引導、二次引導等實現方法。

TMS320VC55D9A的自舉引導

TMS320VC5509A每次上電復位后,在執行完一系列初始化(配置堆棧寄存器、關閉中斷、程序臨時入口、符號擴展、兼容性配置)工作后,根據事先配置的自舉模式,通過固化在ROM內的BOOTLOADER程序進行程序引導。VC5509A的引導模式選擇是通過四個模式選擇引腳BOOTM[0:3]的配置來完成的。在本系統中,采用EMIF(外部存儲接口)并行引導模式(16位數據寬度),則需將BOOTM[3:0]設置成1011即可。

通過EMIF接口可以靈活地和各種同步或異步存儲器件無縫連接。通過EMIF可以擴展VC5509A的存儲空間到128Mbit(SDRAM),存儲空間共被分為CE0-CE3。在EMiT的并行引導模式中,ROM中固化的Bootloader程序是以字地址0x200000為首地址開始加載程序。地址0x200000即位CEI空間的首地址,所以FLASH必須接在DSP的CEI空間上。在加載時,EMIF的CEI空間已經默認配置成異步靜態隨機存儲器(SRAM)接口,并且在時序上采用了最差情況設置(即最慢訪問速度),充分保證了時間裕量,使得程序代碼被順利的加載到DSP的內存中。

Bootloader在引導程序時,程序代碼是以引導表格式加載的。TMS320VC55x的引導表結構中包括了用戶程序的代碼段和數據段以及相應段在內存中的指定存儲位置,此外還包括了程序入口地址、部分寄存器的配置值、可編程延時時間等信息(見表1)。

其中,程序入口地址是引導表加載結束后,用戶程序開始執行的地址;寄存器配置數目決定了后面有多少個寄存器需要配置;只有當延時標志為0xFFFF時,延時才被執行;延時長度決定了在寄存器配置后延時多少個CPU周期后才進行下一個動作;段長度、段起始地址和數據則為用戶程序中定義的各個段的內容,并且可以重復添加;最后以0x00000000(32個0)作為引導表的結束標志。

要生成引導表,可以將CCS最終編譯生.成的out文件通過CCS自帶的hex55.exe轉換程序得到。將hex55.exe、.out文件、.cmd文件放在同一個文件夾中,通過dos命令格式調用hex55.exe,即可完成.out文件到hex格式的引導表文件的轉化。CMD文件用來提供引導表的相關配置信息,以下為一個CMD文件的實例:

FlashBootTest.out;輸入的.out文件

-boot;說明創建boot文件

-v5510:2;生成55X boot文件格式

-paralle116;使用串行加載方式

-a;ASCII格式

-reg_config 0xlc00,0x6cd2:在地址0xlc00

的寄存器寫入0x6cd2,配置CPU時鐘

-delay0x100;延時0x100個CPU時鐘周期

-o FlashBootTest.hex;輸出.hex文件

FLASH的燒s和自舉的實現

TMS320VC5509A和AT49LV1024的硬件設計

AT49LV1024是ATMEL公司3V供電系統的FLASH芯片,16位位寬,容量為64K字。VC5509A(PGE封裝)只有14條地址線,只能尋址16K字的SRAM空間。要想尋址64K字地址空間的話,FLASH地址線的高兩位則需要通過其他IO線控制。在本系統中通過GP104和GP106與FLASH的高兩位地址相連達到此目的,其連接示意圖如圖1所示。但是在Bootloader自舉引導程序的時候,并不能控制GPIO引腳,也就是只能引導最大16K字的程序。對于大于16K字的程序,則需要進行二次引導。

二次引導技術

所謂二次引導,通過DSP內部ROM固化的Bootloader引導用戶自己編寫一個引導程序,其功能和ROM內固化的Bootloader相同,再通過此引導程序加載系統最終運行的程序代碼,并在加載結束后,把PC值置為新的程序入口地址。由于在用戶編寫的引導程序中,可以控制GIP04和GP106,所以可達到64K字地址空間的尋址目的。其具體實現椎圖如圖2所示。

數據燒寫程序設計

FLASH的數據可直接讀取,但對FLASH的編程和擦除操作則需要通過一系列命令才能進行。AT49LVl024的寫操作只能將1變成0,而0變成1操作必須通過擦除操作進行。所以每次寫FLASH之前,必須進行片擦除,使存儲單元值變成0xFFFF,于能進行編程。

擦除命令:需要六個周期,其操作命令如表2所示。

編程命令需要四個周期,其操作命令如表3所示。

編程和擦除操作都需要一定的周期的時間(AT49LV1024的單字編程時間是20μs,整片擦除時間是10s),用戶可以通過查詢標志數據線DQ6和DQ7來確定編程或擦除是否完畢。當片子正處于編程或擦除狀態時,連續讀任意單元的值,DQ6的值將一直處于0、1交替變化,當編程或擦除結束時,讀DQ6則得到一個恒定值。本文即通過此方法來判斷操作是否結束。

根據FLASH的編程和擦除命令,編寫了相應的C語言程序如下,其中SetGPI046Addr(Addr)子程的作用是根據所傳遞的Addr值配置相應的GPI04和GPI06即高兩位地址的值。

·片擦除程序

#define FLASH_BASE_ADDR=0x200000;

//設定FLASH的基地址,CE1的首地址

void ChipErase(void)

{

SetGPI046Addr(0x5555);//設定FLASH的

地址值0x5555的GPI04和GPI06電平

*(volatile Uint16*)(FLASH_BASE_ADDR+0x5555)=0xaa;//向

FLASH的地址0x5555寫入0xaa

SetGPl046HiAddr(Ox2aaa);

*(volatile Uint16*)(FLASH_BASE_ADDR+0x2zna)=0x55;

SetGPI046HiAddr(0x5555);

*(volatile Uint16*)(FLASH_BASE_ADDR+0x5555)=0x80;

SetGPI046HiAddr(0x5555);

*(volatile Uint16*)(FLASH_BASE_ADDR+0x5555)=0xaa;

SetGPI046HiAddr(0x2aaa);

*(volatile Uint16*)(FLASH BASE_ADDR+0x2aaa)=0x55;

SetGPI046HiAddr(0x5555);

*(volatile Uint16*)(FLASH_BASE_ADDR+0x5555)=0x10;

WriteOrEraselsOve();//等待撩除完畢

}

·單字編程程序

void WriteWord(Uint16 Addr,Uint16 Val)

{

SetGPl046HiAddr(0x5555);

*(volatile Uint16*)

(FLASH_BASE ADDR+0x5555)=0xaa;

SetGPl046HiAddr(0x2aaa);

*(volatile Uint16*)

(FLASH_BASE_ADDR+0x2aaa)=0x55;

SetGPI046HiAddr(0x5555);

*(volatile Uint16*)

(FLASH 13ASE_ADDR+0x5555)=0xa0;

SetGH046HiAddr(Addr);

*(volatile Uint16*)(FLASH_BASE_ADDR+

Addr)=Val;//寫進編程數據

WriteOrEraselsOver();//等待編程結束

}

·編程和擦除結束確認程序

void WriteOrEraselsOver(void)

{

volmile Uint16 LastDQ6,CurrentDQ6;

SetGPI046HiAddr(0x0);

LastDQ6=(*(volatile Uint16*)FLASH_BASE_ADDR)0x40;//取DQ6的值

CurrentDQ6=(*(volatile Uint16*)FLASH_BASE_ADDR)0x40;

While(1)//等待兩次連續讀DQ6的相等

{

LastDQ6=CurrentDQ6;

CurrentDQ6=(*(VolatileUint16*)FLASH BASE_ADDR)0x40;

if(LastDQ6==CurrentDQ6)

break;//當兩次連續讀DQ6的相等時,跳

出循環

}

}

本系統采用CCS仿真環境下對FLASH在線編程。先建立一個FLASH的燒寫工程,并在工程中將要燒寫進FLASH引導表文件,通過CCS的LOAD DATA功能直接加載DSP的內存中,根據加載的首地址和數據長度,在仿真環境下燒進FLASH中。值得注意的是,程序加載的內存空間不能和FLASH的燒寫程序重疊,否則將燒寫失敗。

需要補充的是,經HEX55.exe轉化后的hex格式的引導表文件是不能直接導入CCS中的。CCS只支持其特別規定的DAT格式文件通過LOADDATA導入內存中,所以引導表在導入之前必須先進行轉化。轉化成DAT格式文件這個工作可以通過VC編寫一個簡單的C語言轉化程序來實現。

結 語

本文闡述了一種針對TMS320VC55x系列DSP簡單有效的FLASH燒寫方法,并提出了程序自舉引導的實現方法,包括大程序二次引導的實現方法。本文討論的引導方法包括硬件設計及相關程序已在實際開發CMOS圖像采集項目中使用,并成功運行。

主站蜘蛛池模板: 国产激情国语对白普通话| 亚洲成人高清在线观看| 亚洲人成高清| 在线观看精品国产入口| 亚洲动漫h| 第九色区aⅴ天堂久久香| 欧美日韩午夜| 九九免费观看全部免费视频| 欧美亚洲中文精品三区| 四虎综合网| 国产哺乳奶水91在线播放| 青青草国产免费国产| 亚洲黄网在线| 在线观看亚洲人成网站| 日韩毛片在线播放| 亚洲另类色| 日韩色图在线观看| 国产毛片网站| 澳门av无码| 国产高清免费午夜在线视频| av尤物免费在线观看| 18禁高潮出水呻吟娇喘蜜芽| 2021最新国产精品网站| 日韩一级毛一欧美一国产| 网久久综合| 久久香蕉国产线看观看式| 操美女免费网站| 欧类av怡春院| 欧美一级高清视频在线播放| 欧美日韩激情| 一本久道热中字伊人| 成人中文在线| 亚洲福利视频一区二区| 无码区日韩专区免费系列 | 久久精品无码国产一区二区三区| 最近最新中文字幕在线第一页| 毛片在线区| 久草视频福利在线观看| 97久久免费视频| 久久永久视频| 在线观看国产黄色| 成人在线观看一区| 91福利片| 国产日韩丝袜一二三区| 久久国产精品影院| 三级欧美在线| 一级一级一片免费| 国产精品久久自在自线观看| 欧洲一区二区三区无码| 国产一级无码不卡视频| 亚洲成人网在线观看| 久久婷婷综合色一区二区| 人妻夜夜爽天天爽| 国产超碰在线观看| 99在线视频精品| 热99精品视频| 国产成人精品一区二区三区| 在线毛片网站| 一级黄色欧美| 亚洲第一视频网| 2021天堂在线亚洲精品专区| 亚洲精品不卡午夜精品| 国产成人亚洲毛片| 日韩高清一区 | 2021亚洲精品不卡a| 国产精品亚洲欧美日韩久久| 免费高清毛片| 国产全黄a一级毛片| 精品国产成人av免费| 国产精品视频第一专区| 99精品伊人久久久大香线蕉 | 国产黄在线免费观看| 日本国产精品| 亚洲日本精品一区二区| 亚洲综合婷婷激情| 久久永久免费人妻精品| 四虎永久免费地址在线网站| 天堂va亚洲va欧美va国产| 一区二区日韩国产精久久| www亚洲精品| 尤物精品国产福利网站| 国产在线日本|