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

基于DM642自啟動的FLASH燒寫原理研究及實現

2008-04-12 00:00:00劉發志朱曉鼎
現代電子技術 2008年22期

摘 要:便攜性與實時性的要求使得嵌入式系統需要具備自啟動功能,在DM642的平臺上,闡述FLASH的工作原理以及其與DM642的硬件結構,研究DM642從外圍FLASH自啟動及多級引導程序開發原理,并結合自己的實際經驗,針對使用CPLD和FPGA的不同系統,詳細介紹其FLASH在線編程的步驟,實現大型應用程序的自啟動加載DSP系統。

關鍵詞:FLASH;DM642;自啟動;引導加載

中圖分類號:TP333.12文獻標識碼:B

文章編號:1004373X(2008)2200804

Implementation and Principle Study of FLASH Burning Based

on DM642 Self-startup System

LIU Fazhi,ZHANG Dong,YANG Yan,ZHU Xiaoding

(School of Physics Science and Technology,Wuhan University,Wuhan,430072,China)

Abstract:Requirement of portability and real-time ability,the embedded system needs a self-starting function.Based on DM642 platform,the principle of FLASH memory and the hardware structure are introduced,DM642 self-startup procedure from the FLASH memory is studied.According to the writer′s own actual experience,it is an innovation that the development process and implementation method of multi-level bootloader for the system are proposed in detail used either CPLD or FPGA.A DSP self-startup system with a large-scale applications is realized.

Keywords:FLASH;DM642;self-startup;boot load

TMS320DM642(DM642)是TI公司發布的專門面向多媒體應用處理器,其工作頻率可達600 MHz,集成了視頻端口、音頻應用、以太網MAC等外設,可自啟動的特點使得其在便攜式和自動化系統中得到廣泛應用。本文在DM642平臺上,介紹FLASH燒寫原理并給出一套DM642的自啟動加載方案以及實際應用的一些經驗。

1 FLASH工作原理

FLASH是一種可以在線進行電擦寫,并在掉電后信息不丟失的非易失性存儲器,具有在線電擦寫、低功耗、大容量、擦寫速度快等特點,適用于需要實時寫入數據并且掉電保持的系統。

FLASH按其內部結構的不同可以分為NOR FLASH,NAND FLASH,OR FLASH及AND FLASH等,常用的是NOR FLASH和NAND FLASH,前者就是常說的閃存,而后者就是U盤和一些移動存儲設備的存儲介質。NOR FLASH使用字寫于的方式,而NAND FLASH只支持為頁的操作,同時NAND FLASH的數據線與地址線是復用的,雖然兩者的結構不同,但操作相似。本文采用的是AMD公司的NOR FLASH 芯片Am29LV033C,其容量是32 Mb(4 Mb×8),最快讀取速度70 ns,64個64 b的扇區,0.32 μm工藝技術,數據可保持20年不丟失。對于FLASH,讀操作比較簡單,只要從指定的地址讀出對應的數據即可,而寫操作和擦除操作必須通過往指定地址寫指定命令的方法來實現,且每次寫操作時首先要擦除要寫入區內容。其操作命令控制如表1所示:

2 DM642與FLASH的硬件連接

DM642有1個64位的EMIF接口,引腳上包括數據總線ED[63:0],地址總線EA[22:3],時鐘信號線,其可使能4個不同的空間(CEn,n=1-4),因此可將CE1空間配置成8位異步模式,作為FLASH的映射空間。然而EMIF口只有20根地址線,尋址空間只有1 Mb(220),小于FLASH的4 Mb(222)的地址空間,必須采用分頁的方式來訪問,這里利用CPLD(或者FPGA)來控制FLASH的高3位地址線進行分頁,每頁512 kb,分為8頁,一旦寫入FLASH的程序大于512 kb,通過控制頁寄存器進行分頁。硬件連接圖如圖1所示:

3 DM642自啟動原理

DM642啟動方式是通過上電時采樣引腳AEA[22,21]的電平來設置的。可以選擇NO BOOT(AEA[20,19]均為低電平)和從外部存儲器自啟動(AEA[20,19]均為高電平)以及HPI/PCI啟動。如果選擇從外部存儲器FLASH啟動,則在系統結束復位狀態后,DM642將FLASH空間(CE1空間,起始地址90000000H)的前1 kB復制到片內0地址開始的存儲單元中,并從0地址開始執行。用戶的應用程序往往大于1 kB,所以位于0地址的1 kB程序經常是一個裝載程序(又叫二級BootLoader),它用來完成將應用程序從FLASH中讀出放到RAM存儲器中,當裝載完成后,指向程序的入口地址c_int00()處并開始執行應用程序,這個過程也被叫作二次加載。

二級BootLoader主要完成3個功能:

(1)初始化EMIF口,配置其寄存器;

(2)然后從FLASH的前半頁的1 kB以后開始把程序的各個段和數據拷貝到指定的存儲器物理地址中;

(3) 跳到C程序的人口點處c_int00()。由于Bootloader在FLASH中的位置是0x90000000~0x90000400,而Bootloader又是放在用戶程序中的。因此,為了在用戶成程序的.cmd文件中把Bootloader定位在程序段的起始位置。

圖2顯示了使用使用二級Bootloader的應用程序加載過程。

4 自啟動加載實現過程

利用DM642的在線編程能力,實現DM642的自啟動加載實現過程,大致分為一下幾個步驟:

4.1 應用程序建立

TI代碼產生工具產生的目標文件是一種模塊化的文件格式COFF格式。程序中的代碼和數據在COFF文件中是以段的形式組織。COFF文件是由文件頭、段頭、符號表以及段數據等數據結構組成;編譯器會將我們的應用程序轉換為COFF格式.out文件,編譯器是怎樣知道應用的程序段放在哪個存儲空間,這個工作是通過一個連接命令文件(.cmd)完成。這個文件里面就包含DSP和目標板的存儲器空間的定義以及代碼段、數據段是如何分配到這些存儲器空間的。

編寫連接命令文件可以利用DSP/BIOS提供的MEM(Memory Section Manager)模塊。其非常方便用戶管理和安排各數據程序段,而且其模板已經定義了一系列的常用存儲段(用戶可以通過窗口對話框修改段屬性),如果用戶要添加新的段,則需要修改用戶的連接命令文件。具體操作如下:創建BOOT 內存區,在System→MEM-Memory Section Manager,創建BOOT 段,起始地址為0,長度為0x400(1 kB),而且需要把內存段后移,從0x400開始,并把長度減去0x400。否則段重疊將導致之前寫入的數據被覆蓋。

創建連接命令文件,取代原有的BIOS自動產生的cmd 文件(videocfg.cmd)。在新建的cmd 文件中,包含原有的cmd 文件,并把添加.boot_load 段代碼映像到BOOT 內存區。內容如下:

-l videocfg.cmd

SECTIONS

{.BOOT>ISRAM}

這樣就成功創建了BOOT段并把其映射在ISRAM的前1 kb之中。也就是說在DM642自啟動上電以后,DM642會自動將FLASH中0x9000000~0x90000400復制到ISRAM的0x0~0x400段。

4.2 編寫二級加載程序

二級加載程序寫在一個匯編程序BOOT.asm(也就是BOOT段所存放的數據),并需添加到應用程序之中。對于boot.asm中內容中關于初始化化EMIF口以及調轉程序入口部分以省略,這里只給出關于拷貝應用程序代碼,如下:

COPY_TABLE .equ0x90000400

.sect \".boot_load\"

.global _boot

_boot:

mvkl COPY_TABLE,a3;拷貝表指針

mvkh COPY_TABLE,a3

ldw*a3++,b1;入口地址

copy_section_top:

ldw*a3++,b0;地址增1

ldw*a3++,a4;ram 起始地址

nop3

[!b0] b copy_done;是否拷貝完

nop5

copy_loop:

ldb*a3++,b5

subb0,1,b0;減數計數r

[ b0] b copy_loop;跳轉

[!b0] b copy_section_top

zero a1

[!b0] and3,a3,a1

stbb5,*a4++

[!b0] and-4,a3,a5

[ a1] add4,a5,a3

4.3 轉換成二進制文件

編譯器生成的COFF格式.out文件不能直接燒寫,現行的在系統編程的方法一般都是先把待加載程序(用戶程序)的.out文件(COFF格式)轉成HEX格式,然后去掉HEX格式文件的文件頭,再通過燒寫程序寫到FLASH里去。這里利用TI提供的hex6x二進制文件轉換工具,其可將out文件轉換為ASCII二進制文件。不過需要用戶正確設置hex6x的命令行文件,編寫完下列文件后雙擊out2hex.bat即可生成所要轉換的文件.hex

hex6x的命令行文件,用來設置轉換的一些參數,內容如下:

user′s_programe.out

-a // Select ASCII hex file format for output

-memwidth 8// Generate output for an 8-bit wide FLASH device

-boot//為所有的段創建一個boot表

-map h263loopback.map //Generate .map file

ROMS

{FLASH: org = 0x90000000,len = 0x80000,rowidth = 8,files ={ user′s_programe.hex}

}

//ROM下大括號中定義的文件長度,0x80000為每頁512 kB

需注意的是在各文件中文件名必須一致,否則將提示找不到該文件。

4.4 FLASH燒寫過程

正如上文所述,FLASH寫操作和讀擦除操作必須通過往指定地址寫指定命令的方法來實現,用戶可以自己編寫程序來完成,也使用TI提供的FLASHburn工具來燒寫,通過執行FBTC.out的內容來完成FLASH的讀寫和擦除。因為FLASH寫入時只有數據為0時才進行寫入,數據為1時則什么也不做,所以每次燒寫之前都需要將FLASH擦除干凈。

對于使用CPLD與FPGA燒寫程序略微有些不同,其原因在于FPGA是掉電數據就丟失了,因此每次都需要燒寫FPGA的配置osd_fpa_rev4_ahex.hex(放在第0頁的后半頁),而且在應用程序中還需添加EVMDM642_fpgaLoad(0x90040000)語句,自啟動過程中完成往FPGA寫配置的過程,這樣FPGA才能夠工作。而CPLD掉電數據仍在,故不需要這樣做。

小程序燒寫(所謂小程序是指在第0頁就能存放下的程序,對于使用FPGA的系統因其第0頁后半頁已被使用,故其只能放下256 kb的小程序,而對于CPLD,存放小程序為1頁大小512 kb)與大程序燒寫也略微有些區別,小程序不用分頁,直接利用FLASHburn工具來燒寫,需注意的是在FLASHburn工具在Downloading 欄中,File to burn 項填入要燒寫的用戶程序的.hex 文件,logical Addr 填入0x0。FLASH Physical項填入0x90000000,Bytes 項填入0x400000。大程序則需要利用CPLD/FPGA分頁,具體實現方法是利用1個變量不斷的計數,每拷貝1個數據(8 b)計數值加1,并將計數值與0xffff(64 k×8 b=512 kb),一但大于則通知分頁寄存器加1,開始往下一頁來拷貝程序。這里在CPLD/FPGA中設置地址為0x9008001A的寄存器,對應與FLASH的高3位地址線,往這一頁寫入的值(0~7)就代表了第幾頁,需要修改FBTC642.pjt的FLASH的基地址為0x9008001A。

下面介紹如何實現將應用程序能放在FLASH的任意頁,而不用從第0頁開始,特別是使用FPGA的大程序燒寫,就必須這樣做,因為如果從第0燒寫大程序將覆蓋FPGA的配置程序。在FLASH的前1 kB中存放原來的boot段用來拷貝存放在FLASH的9000000400以后的程序,而放在9000000400以后的程序就是snd_bootload,它是用來拷貝放在FLASH第二頁0x90010000以后的程序。所以對于FPGA的大程序,需要燒寫3個HEX文件并要求遵循一定順序。首先應用程序FPGA的配置程序在第0頁后半頁;然后下載運行fpga.out確保FPGA工作;然后燒寫應用程序,修改FLASHburn工具在Downloading 欄中logical Addr 填入0x100000(第二頁);最后燒寫snd_bootload程序。對于CPLD則只需后面2步,這樣就成功完成大程序的燒寫。

5 結 語

文章結合自己實際開發經驗,給出對于FLSAH燒寫的原理和一些方法與經驗的總結,對于FPGA+DM642是用的TI的EVM評估板,而CPLD+DM642則是使用的是自己的開發板,通過燒寫FLASH,成功完成視頻圖像處理的應用程序自啟動運行。

參 考 文 獻

[1] AMD.Am29lv033c Datasheet.2003.

[2]Texas Insturments.TMS320C6000 EMIF to ExternalFLASH Memory.Literature Number:SPRA568A,February 2002.

[3]Texas Insturments.TMS320 DSP/BIOS Users Guide.Literature Number:SPRU423E,March,2004.

[4]Texas Insturments.Creating a Second-Level Bootloader for FLASH Bootloading on TMS320C6000 Platform with Code Composer Studio.Literature Number:SPRA999A,August 2004.

[5]李方慧,王飛.TMS320C6000系列DSPS 原理與應用\\.2版.北京:電子工業出版社,2005.

[6]聞亭科技發展有限責任公司.TDS642EVM 多路實時圖像處理平臺\\.2005.

[7]北京瑞泰發展有限責任公司.ICETEK-DM642-IDK-MT圖像語音和網絡系統硬件、軟件使用說明書和實驗指導書\\.2005.

[8]李興友,游志勝.基于DM642的大容量FLASH引導加載方法研究與實現\\.計算機應用,2005,25(8):1 929-1 941.

[9]胡嘉凱,蔣建國,齊美彬.基于TMS320DM642的FLASH在系統編程方法\\.電子設計應用,2006(4):110-111,120.

[10]周世新.大容量FLASH與DSP接口技術的實現\\.無線電工程,2006,36(3):57-58,62.

[11]江思敏,劉暢.TMS320C6000 DSP應用開發教程\\.北京:機械工業出版社,2005.

[12]常傳文,茅文深.DM642上利用DMA和CACHE優化內存存取實例\\.現代電子技術,2007,30(22):145-147.

[13]路錦正.基于DM642DSP的MPEG4視頻解碼算法優化設計\\.現代電子技術,2007,30(4):80-82,91.

作者簡介 劉發志 男,1984年出生,湖北武漢人,碩士研究生。研究方向為信息處理與微系統。

張 東 男,1963年出生,廣東梅縣人,副教授。研究方向為信息處理與微系統,通信,數據庫技術。

楊 艷 女,副教授。研究方向為圖像分析與處理。

朱曉鼎 男,1984年出生,湖北廣水人,碩士研究生。研究方向為信息處理與微系統。

主站蜘蛛池模板: 亚洲精品无码高潮喷水A| 亚洲欧洲综合| 色妺妺在线视频喷水| 免费在线成人网| 奇米精品一区二区三区在线观看| 国产系列在线| 一级毛片无毒不卡直接观看 | 波多野结衣二区| 最新国产你懂的在线网址| 亚洲最大福利网站| 成人国产精品一级毛片天堂| 国产精品久久自在自线观看| 伊人激情久久综合中文字幕| 欧美成人午夜影院| 色哟哟精品无码网站在线播放视频| 中文字幕调教一区二区视频| 国产菊爆视频在线观看| 四虎永久在线精品影院| 亚洲天堂免费观看| 亚洲欧美不卡| 亚洲精品综合一二三区在线| 国产精品高清国产三级囯产AV| 亚洲第一视频网| 久久无码高潮喷水| 最新无码专区超级碰碰碰| 天天色天天综合网| 免费人欧美成又黄又爽的视频| 夜夜高潮夜夜爽国产伦精品| 欧美人与牲动交a欧美精品| 亚洲天堂伊人| 国产在线视频二区| 中文字幕无码制服中字| 国产超碰一区二区三区| 老司机久久99久久精品播放| 亚洲欧美成人综合| 尤物国产在线| 欧美日在线观看| 国产精品综合色区在线观看| 999精品色在线观看| 91精品国产情侣高潮露脸| 亚洲精品国产成人7777| 国产欧美网站| 久久公开视频| 亚洲 欧美 中文 AⅤ在线视频| 伊人91在线| 亚洲国产清纯| 欧美一级黄色影院| 在线中文字幕网| 一级一级一片免费| 国产爽爽视频| 国产极品粉嫩小泬免费看| 亚洲无码精品在线播放| 一区二区理伦视频| a毛片在线| 国产一区二区人大臿蕉香蕉| 伊人久久婷婷五月综合97色 | 国产jizz| 在线亚洲小视频| 免费一级大毛片a一观看不卡| 91青青视频| 狼友视频一区二区三区| 国产超碰一区二区三区| 精品视频91| 天天色天天操综合网| 亚洲精品你懂的| 亚洲a级毛片| 久久semm亚洲国产| 国产福利一区视频| 亚洲色欲色欲www网| 国产成人综合在线视频| 中国一级特黄视频| 国产欧美日韩在线在线不卡视频| 欧美日韩另类在线| 亚洲人成网站观看在线观看| 精品人妻AV区| 成人免费一区二区三区| 欧美激情网址| 最近最新中文字幕免费的一页| 色偷偷男人的天堂亚洲av| 日韩东京热无码人妻| 91黄色在线观看| 亚洲国产日韩欧美在线|