摘 要:介紹在TMS320C5410環境下對Am29LV200B Flash存儲器進行程序燒寫,并且實現了TMS320C5410上電后用戶程序并行自舉引導。
關鍵詞:Am29LV200B Flash DSP 并行自舉引導 自舉表
Flash是一種可在線進行電擦寫,掉電后信息不丟失的存儲器。它具有低功耗、大容量、擦寫速度快等特點,并且內部嵌入算法完成對芯片的操作,因而在數字信號處理系統中得到了廣泛的應用。本文通過一個完整的實例,介紹Am29LV200B Flash存儲器的燒寫方法,實現TMS320C5410(以下簡稱C5410)上電后用戶程序的并行自舉引導。
1 Am29LV200B Flash存儲器
1.1 Flash存儲器簡介
Am29LV200B是AMD公司生產的Flash存儲器,其主要特點有:3 V單電源供電,可使內部產生高電壓進行編程和擦除操作;支持JEDEC單電源Flash存儲器標準;只需向其命令寄存器寫入標準的微處理器指令,具體編程、擦除操作由內部嵌入的算法實現,并且可以通過查詢特定的引腳或數據線監控操作是否完成;可以對任一扇區進行讀、寫或擦除操作,而不影響其它部分的數據。本文中128K×16位Am29LV200B Flash 映射為C5410的片外數據存儲空間,地址為:0x8000~0xFFFF,數據總線16位,用于16位方式的并行引導裝載。128K的Flash ROM用32K地址分四頁進行訪問,上電加載程序時使用Flash ROM的第3頁。
1.2 Flash存儲器的操作命令
向Flash存儲器的特定寄存器寫入地址和數據命令,就可對Flash存儲器編程,但要按一定的順序操作,否則就會導致Flash存儲器復位。由于編程指令不能使“0”寫為“1”,只能使“1”變為“0”,而擦除命令可使“0”變為“1”,所以正確順序是先擦除,后編程。下面就介紹幾個常用的操作命令:編程命令、擦除命令、讀數據命令、復位命令。
①編程命令。該命令向Flash的指定地址中寫入數據,需要四個總線周期,前兩個是解鎖周期,第三個是建立編程命令,最后一個周期完成向編程地址中寫入編程數據,如表1所列。
由于向每個編程地址寫入數據都需要四個周期,所以在循環寫Flash時使用宏比較簡單。Flash ROM的首地址為0x8000,故偏移地址0x555對應物理地址就為0x8555。編程程序如下:
_WRITECOMMAND .macro pa,pd ;單一周期編程的寫命
;令宏,pa是編程地址,pd是編程數據
PSHM AR1
STM pa,AR1 ;AR1指向編程地址
LD pd,A
STL A,*AR1 ;把編程數據放入AR1的編程地址中
RPT #12
NOP
POPM AR1
.endm
_WRITEFlash .macro par,pdr ;編程宏,par是編程地址寄存
;器,pdr是存放編程數據的寄存器
_WRITECOMMAND #8555H,#0AAH ; 周期1(解鎖)
_WRITECOMMAND #82AAH,#055H ; 周期2(解鎖)
_WRITECOMMAND #8555H, #0A0H ; 周期3(建立)
LD pdr, A ; 周期4(編程)
STL A, par ; 把pdr寄存器中數據放入par
;寄存器的地址中
RPT #12
NOP
_JUDGE par, pdr ;檢測編程是否正確,見Flash
;的操作檢測
.endm
_WRITECOMMAND是實現一個周期編程的寫命令宏,而_WRITEFlash是完成對指定地址編程的四個完整周期。
、 擦除命令。該命令有片擦除和扇區擦除兩種,都需要6個總線周期,前兩個解鎖周期,第三個建立周期,四、五兩個解鎖周期,最后是片擦除或扇區擦除周期,如表2所列。一旦執行編程或擦除命令后,就啟動Flash的內部編程或擦除算法,自動完成編程或擦除操作。擦除程序如下:





