TMS320C672x系列浮點DSP的EMIF研究與應用
Flash在讀操作中類似于普通的ROM,在寫操作中需要使用一些特殊命令字,按一定的順序編程,且可隨時編程,編程命令根據器件參考資料。對Flash的讀/寫流程如圖7所示。
由表1知,對Flash進行16位數據寫操作時每次偏移地址需要左移1位,即:*(short int*)(0x90000000+i*2)=shortint i://對Flash的i地址寫入16位數據i由于此Flash高位地址線為擴展的地址線,必然導致訪問Flash時地址不連續。每次只能連續訪問Flash內部4 Kx16 Bit空間,即0x9000_0000~0x9000_1FFE。需要訪問高地址空間時,首先通過設置相應的GPIO引腳或者通過數據線利用CPLD設置Flash的相應高地址線;然后再分別操作低位地址線進行讀寫,便可完成對高地址空間的讀寫。
4 EMIF并行Flash自啟動
4.1 Flash自啟動過程
在實際應用中通常把代碼和數據表存放在外部的非易失性存儲器Flash中。TMS320C672X系列DSP片上的Bootloader工具只能將1KB的代碼搬移到內部RAM。但是在通常情況下,用戶應用程序的大小都會超過1 KB,所以需要在外部Flash的前1 KB范圍內預先存放一小段程序,待片上Bootloader工具把此段代碼搬移入內部并開始執行后,由此段代碼將Flash中剩余的用戶應用程序搬移入內部RAM中。Flash中前1 KB代碼為二級Bootloader。系統上電或復位時,DSP內部固化的啟動代碼會自動將位于Flash地址空間(0x90000000~0x9FFFFFFF)開頭的1 KB代碼傳輸到RAM存儲空間,這就是一次引導。很明顯,一次引導的代碼并不能滿足絕大多數編程者對代碼長度的要求,因此就需要二次引導過程。二次引導是將DSP一次引導的1 KB代碼編寫成一個搬移程序,搬移程序將用戶的主程序搬移到高速RAM中,并且搬移完成后自動跳轉至主程序入口處運行主程序。由于硬件設計中Flash的地址不連續,因此對高位地址線的控制需要在搬移程序中實現。圖8為使用二級Bootloader的流程圖。
二級Bootloader代碼的編寫必須使用匯編語言,因為在執行二級Bootloader時C的運行環境還未建立起來。
4.2 Flash的燒寫方法
應用程序和二次Boot編寫和編譯完成之后,便可使用TI公司提供的FlashBurn工具完成Flash燒寫,燒寫完成后需要重新上電或復位,便可實現自啟動。此FlashBurn工具雖然燒寫方法較為直觀,但是過程復雜,首先需要下載一個.out文件(FBTC)至DSP系統中,實現對Flash的操作;其次FlashBurn工具不能識別.out文件,只能接收.hex的十六進制文件,必須將.out文件轉換為.hex文件。
因此,用戶可以自己根據Flash器件的操作方法編寫燒寫程序,避免文件格式轉換的繁瑣。首先把用戶應用程序(包括二級Bootloader)編譯生成的.out文件轉載到DSP的RAM中,然后根據要求編寫Flash燒寫程序,把燒寫程序的.out文件裝載到DSP的另一塊區域(注意修改cmd文件中地址范圍,避免兩次裝載可能產生的地址覆蓋),執行程序完成Flash的燒寫。注意:燒寫到Flash中的應用程序前面12個字節用于存放_c _int00地址、應用程序字節數、應用程序在RAM中的起始地址,這12個字節需要在燒寫過程中添加。
5 結束語
本文主要研究了TMS320C672x系列DSP EMIF接口的功能和使用方法,并針對SDRAM和Flash器件討論了EMIF的具體硬件接口設計和軟件配置;同時分析了TMS320C672x系列的自啟動過程,提出了兩種燒寫Flash的方法。該應用方法經實驗驗證,確實可行并易于實現。
存儲器相關文章:存儲器原理
評論