TMS320VC55x系列DSP在線燒寫方法研究
3 并行Flash的燒寫
3.1 數據燒寫程序設計
Flash的數據可直接讀取,但對Flash的編程和擦除操作則需要通過一系列命令才能進行。SST39VF200的寫操作只能將1變成0,而O變成l必須通過擦除操作進行。所以每次寫Flash之前必須進行片擦除,使存儲單元值變成0xFFFF才能進行編程。擦除命令需要6個周期,編程命令需要4個周期,操作命令如表4所示H。
編程和擦除操作都需要一定周期的時間(SST39VF200的單字編程時間是14μs,整片擦除時間是70 ms)。用戶可以通過查詢標志數據線DQ6和DQ7確定編程或擦除是否完畢。當器件正處于編程或擦除狀態時,連續讀任意單元的值,D06的值將一直在O、l之間交替變化。當編程或擦除結束時,讀DQ6則得到一個恒定值。這里即通過此方法判斷操作是否結束。
根據Flash的編程和擦除命令,編寫了相應的C語言程序,其中在TMS320VC55x系列1)SP中,對外接存儲器的訪問要調用庫函數far_poke()和far_peek()。這2個函數包含在extaddr.h>頭文件中,并且尋址的地址為字地址。以下給出擦除程序,寫操作與此類似。表5為對外接存儲器讀寫的庫函數。
3.2 程序的燒寫實現
系統在CCS仿真環境下對Flash進行在線編程。先建立一個Flash的燒寫工程,并在工程中將要燒寫進Flash的自舉加載表文件通過CCS的LOADDATA功能直接加載進DSP的內存。根據加載的首地址和數據長度,在仿真環境下燒進Flash中。當然也可以直接在程序中定義一個數組,將DAT文件中的數據賦值給該數組的元素,然后將該數組的每個元素寫入Flash。在運行燒寫程序之前,要先對EMIF進行設置,因為EMIF默認的是接8位異步存儲器,可以通過調用GEL菜單中Init_CE0_Async_16命令完成。
4 結語
闡述了一種針對TMS320VC55x系列DSP簡單有效的Flash燒寫方法,并提出了程序自舉加載的實現方法。討論的加載方法包括硬件設計及相關程序,已在筆者實際開發的高精度數據采集項目中使用并成功運行。
評論