TMS320VC5402(以下簡稱C5402)是TI公司的一款性價比極好的16位定點DSP芯片。由于C5402內部只有16K×16位RAM和4K×16位掩膜ROM,用戶程序必須存放在外掛的程序存儲器中。對程序存儲器的編程(即離線編程)通常是通過通用編程器完成的,即用戶將要寫入的程序轉換成編程器能夠接收的格式,再通過編程器寫入存儲器中。隨著芯片制造工藝的不斷提高,芯片集成度越來越高,存儲器正在向小型化、貼片式發展,從而使表面封裝或PLCC封裝的存儲器難以利用編程器編程。目前普遍采用的在系統編程ISP(In System Programming)技術不需要編程器,通過系統的DSP可直接對用戶板上的存儲器編程,這樣不僅節省了通用編程器及適配器的費用,還減少了頻繁插拔存儲器的麻煩,從而大量節省了系統開發時間,滿足了用戶程序在線更新的要求。外掛的程序存儲器通常選用容量大、存儲速度快、功耗低、性價比高的FLASH存儲器。
由于DSP仿真軟件編譯鏈接后生成的是二進制的COFF格式文件,不能直接寫入FLASH中,還需通過Hex轉換工具將COFF目標文件轉換為標準的ASCII碼十六進制格式(即Hex格式)。對于離線編程,只需將這種Hex文件直接作為編程器的輸入,即可寫入FLASH;而在系統編程,則是利用系統本身的DSP,通過軟件編程來實現整個燒寫過程。因此,如何對FLASH進行燒寫是整個在系統編程的一個關鍵。本文以一片C5402外掛一片FLASH存儲器構成的最小系統為實例,介紹采用C語言編寫FLASH燒寫程序,并通過DSP將用戶程序代碼寫入FLASH,從而實現在系統編程。
1 DSP與FLASH構成的最小系統
本系統的FLASH存儲器選用SST公司的SST39VF400A,用作DSP的數據空間。FLASH的片選信號/CE由DSP的數據空間選擇信號/DS和存儲器選通信號/MSTRB產生,讀使能信號/OE和寫使能信號/WE由DSP的讀寫脈沖信號R/W和/DS、/MSTRB組合產生。FLASH的地址線A0~A15和DSP的A0~A15直接相連,A16和A17接地。由于DSP數據空間0000H~3FFFH為存儲器映象寄存器、暫存器和片內RAM,對外部FLASH來講是不可見的,所以FLASH可操作的地址范圍為4000H~0FFFFH。設用戶程序從FLASH中8000H單元開始存放,則系統上電時引導程序就從數據空間的8000H單元開始搬運數據到DSP內部RAM指定區域,引導完畢后即跳轉到RAM中程序入口地址運行用戶程序。
2 SST39VF400A的在系統編程
2.1 芯片簡介及常用命令
SST39VF400A是SST公司的256K×16位FLASH存儲器,工作電壓3.3V、擦寫壽命100 000次,訪問時間70~90ns。用戶只需向其特定地址寫入特定的指令序列,那么通過這些命令用戶即可啟動內部寫狀態機,從而使其自動完成指令序列要求的內部操作,其中包括:復位、整片擦除、塊擦除、扇區擦除、操作字寫入等。
2.2 SST39VF400A編程操作
對采用在系統編程的FLASH存儲器,整個編程過程由用戶控制,因此用戶必須了解FLASH存儲器的各狀態位,以便知道編程或擦除是否結束。SST39VF400A內部提供兩種軟件檢查方法:檢查狀態位Data# Polling(DQ7)和Toggle Bit(DQ6)。現以檢查Toggle Bit(DQ6)位為例來具體說明SST39VF400A的編程及檢查機制。SST39VF400A在進行內部編程或擦除時,對任何地址進行連續讀取都會引起DQ6的跳變,當操作停止就會結束跳變。因此可以通過連續兩次讀取檢查DQ6的變化情況來判斷編程擦除操作是否完成。單字編程及檢查流程如圖1所示(其中WA為要寫入數據的存儲地址)。
3 C5402的并行引導裝載
通過在系統編程操作可以實現將用戶程序代碼寫入FLASH。如何確定FLASH中用戶程序代碼的存放格式并正確地引導裝載以實現脫機運行,則是整個在系統編程的重點之處。在C5402的五種引導方式中,并行引導是DSP系統最常用最簡單的引導方式。下面介紹C5402的并行16位引導裝載方法。
3.1 引導過程簡介
為了正確引導用戶程序,必須編制引導表,引導表要告訴引導程序采用何種引導方式、程序入口地址、各段的目標首地址和長度等。引導表的數據格式是由鏈接配置文件和HEX轉換配置文件決定的,鏈接配置文件定義各段存放的首地址和長度,而HEX轉換配置文件則定義引導方式、程序入口地址和引導表在外部存儲器中存放的首地址。引導程序可以從地址為0FFFFH單元的I/O端口或數據存儲器取得引導表的起始地址。本文介紹的是并行引導方式,引導過程如下:引導程序先從外部數據空間的0FFFFH單元(即FLASH的0FFFFH單元)讀取引導表起始地址,然后從該起始地址讀取引導標識。若為08AAH則為并行8位引導方式;若不是再從起始地址的下一單元讀取內容,看由此兩單元內容組成的16位字是否為10AAH,若是則為并行16位引導方式。最后從引導表指定的地址搬運各段代碼到片內RAM對應的地址,搬運完畢后即從程序入口地址執行用戶程序。由此可見,引導表的編制是引導過程的關鍵。下面結合實例具體介紹引導表的形成和裝載過程(設用戶程序為測試指示燈的程序,源文件為main.asm和vectors.asm源代碼省略)。
3.2 鏈接配置文件編寫
(文件名為TestLedLink.cmd)
MEMORY {
PAGE 0:
VEC: org=0100h, len=0080h ;中斷向量的首地址和塊長度
CODE: org=0180h, len=0F80h ;程序塊的首地址和塊長度
PAGE 1:
STACKS: org=1100h, len=0100h ;堆棧區的首地址和塊長度
DATA: org=1200h, len=1000h ;數據塊的首地址和塊長度
}
SECTIONS{
.vectors:> VEC PAGE 0 ;將中斷向量放入程序頁的VEC區
.text> CODE PAGE 0 ;將程序代碼放入程序頁的CODE區
.stack> STACKS PAGE 1 ;將堆棧放入數據頁的STACKS區
.bss> DATA PAGE 1 ;將未初始化變量放入數據頁的DATA區
.data> DATA PAGE 1 ;將初始化數據放入數據頁的DATA區
}
鏈接配置文件寫好后,通過DSP仿真軟件CCS編譯鏈接即可生成TestLed.out文件。在匯編時要注意,不論是DOS下的ASM500還是WINDOWS下的CCS都必須加上-v548開關量,否則不能生成正確的引導表。
3.3 HEX轉換配置文件編寫
(文件名為TestLedHex.cmd)
TestLed.out ;轉換的文件名,即編譯鏈接后的.out文件
-a ;ASCII-HEX格式
-map TestLed.mxp ;生成的映射文件名,可不生成該文件
-o TestLed.hex ;轉換后的HEX文件名
-memwidth 16 ;系統存儲器寬度為16位
-romwidth 16 ;ROM器件寬度為16位
-boot ;將COFF文件中各段轉換為引導表的格式(替代SECTIONS偽指令)
-bootorg 0x8000 ;引導表放在FLASH的8000H開始的單元
-e 0x0100 ;裝入引導表后程序運行的起始地址
HEX轉換配置文件寫好后,使用CCS提供的轉換工具HEX500將生成的COFF目標文件TestLed.out轉化為標準的ASCII—HEX格式的文件TestLed.hex。注意在轉換時一定要把TestLedHex.cmd文件的擴展名cmd加上。
3.4 構造引導表并寫入FLASH
經過HEX轉換生成的TestLed.hex文件內容。
文件開始為ASCII STX字符,結束為ASCII ETX字符,$A8000表示引導表存放的首地址,接下來的數據就是從8000H單元存放的引導表的內容,轉換后的TestLed.hex文件可直接由編程器燒寫進FLASH,也可通過在系統編程的方法由上述的DSP燒寫程序寫進FLASH。執行燒寫程序前需要編寫一個簡單的程序將.HEX文件中起始符、首地址、結束符等與引導表無關的信息去掉,并轉換為DSP能識別的文件格式(如.Dat),采用.copy或.include命令將該文件作為數據段嵌入燒寫進程序中同時注意在FLASH的0FFFFH單元寫入引導表起始地址8000H。燒寫FLASH后數據存放格式。
引導表燒寫進FLASH后,將MP/Mc引腳置低,上電復位后引導程序就會自動將FLASH中的用戶程序搬進片內RAM,搬運完畢后即跳轉到程序入口地址,高速運行用戶程序。
此方法適用于程序代碼小于16K的情況,將用戶程序全部導入C5402片內RAM中即可;當用戶程序較大而超過16K時,需要外擴程序存儲器,此時在引導表中需用到擴展的程序計數器(XPC),來尋址擴展的程序存儲空間。
責任編輯:gt
-
芯片
+關注
關注
456文章
51192瀏覽量
427317 -
FlaSh
+關注
關注
10文章
1642瀏覽量
148683 -
存儲器
+關注
關注
38文章
7528瀏覽量
164349
發布評論請先 登錄
相關推薦
DSP2812讀寫SST39VF800A之C++程序源碼
Flash型存儲器SST39SF020的特性及應用介紹
怎樣采用C5402外掛FLASH存儲器SST39VF400A去實現一種在系統編程?
單片機系統Flash存儲器在系統編程設計
![單片機<b class='flag-5'>系統</b><b class='flag-5'>Flash</b><b class='flag-5'>存儲器</b>在<b class='flag-5'>系統編程</b>設計](https://file1.elecfans.com//web2/M00/A5/FE/wKgZomUMOzCAYqYAAAAPSo05CGA464.jpg)
單片機的FLASH引導裝載系統設計
![單片機的<b class='flag-5'>FLASH</b>引導裝載<b class='flag-5'>系統</b>設計](https://file1.elecfans.com//web2/M00/A6/01/wKgZomUMOz-AQSwWAAAZec96FxA599.png)
串行A/D與C5402組成的數據采集系統
![串行<b class='flag-5'>A</b>/D與<b class='flag-5'>C5402</b>組成的數據采集<b class='flag-5'>系統</b>](https://file.elecfans.com/web2/M00/4A/1F/pYYBAGKhvJyAKdpbAAAe2mwjuVY535.png)
SST39LF200A/400A/800A/SST39VF200A/400A/800A原文資料數據手冊PDF免費下載(閃存技術)
![<b class='flag-5'>SST39LF200A</b>/<b class='flag-5'>400A</b>/800<b class='flag-5'>A</b>/<b class='flag-5'>SST39VF200A</b>/<b class='flag-5'>400A</b>/800<b class='flag-5'>A</b>原文資料數據手冊PDF免費下載(閃存技術)](https://file.elecfans.com/web2/M00/49/3A/poYBAGKhwJGANvlSAAATCVtpIEw386.png)
SST39VF401C/402C/SST39LF401C/402C中文資料數據手冊PDF免費下載(閃存技術)
![<b class='flag-5'>SST39VF401C</b>/402<b class='flag-5'>C</b>/<b class='flag-5'>SST39LF401C</b>/402<b class='flag-5'>C</b>中文資料數據手冊PDF免費下載(閃存技術)](https://file.elecfans.com/web2/M00/49/3A/poYBAGKhwJGAKVWwAAAbsliTDLg764.png)
SST39VF801C/802C/SST39LF801C/802C中文資料數據手冊PDF免費下載(閃存技術)
![<b class='flag-5'>SST39VF801C</b>/802<b class='flag-5'>C</b>/<b class='flag-5'>SST39LF801C</b>/802<b class='flag-5'>C</b>中文資料數據手冊PDF免費下載(閃存技術)](https://file.elecfans.com/web2/M00/49/3A/poYBAGKhwJGAGnPvAAAb7n5hblo773.png)
SST39VF1601/1602/SST39VF3201/3202原文資料數據手冊PDF免費下載(CMOS的SuperFlash技術)
![<b class='flag-5'>SST39VF</b>1601/1602/<b class='flag-5'>SST39VF</b>3201/3202原文資料數據手冊PDF免費下載(CMOS的SuperFlash技術)](https://file.elecfans.com/web2/M00/49/3B/poYBAGKhwJGAHCQgAAAeecTpA3k188.png)
SST39VF1681/SST39VF1682原文資料數據手冊PDF免費下載(CMOS的SuperFlash技術)
![<b class='flag-5'>SST39VF</b>1681/<b class='flag-5'>SST39VF</b>1682原文資料數據手冊PDF免費下載(CMOS的SuperFlash技術)](https://file.elecfans.com/web2/M00/49/3B/poYBAGKhwJGABt5oAAAWJORO7x0678.png)
基于SST39VF160芯片的Nor Flash操作
![基于<b class='flag-5'>SST39VF</b>160芯片的Nor <b class='flag-5'>Flash</b>操作](https://file1.elecfans.com//web2/M00/A7/2D/wKgZomUMQtSADuQcAAASOjrnFCM781.jpg)
基于SST39VF3201C/SST39VF3202C32 Mb (x16)多用途閃存
![基于<b class='flag-5'>SST39VF3201C</b>/<b class='flag-5'>SST39VF3202C</b>32 Mb (x16)多用途閃存](https://file.elecfans.com/web1/M00/55/F5/o4YBAFs2-b6AUuwOAABgcNonFmM695.png)
評論