AT29LV256的編程操作是以扇區(qū)為單位進行的。它內(nèi)部有64字節(jié)的數(shù)據(jù)緩沖器。如果寫入緩沖器的字節(jié)數(shù)不足64字節(jié),則編程時自動將未寫入的字節(jié)擦除為FFH。一旦某一扇區(qū)中的字節(jié)被裝入,這些字節(jié)將同時在內(nèi)部編程時間進行編程,此時若有數(shù)據(jù)裝入,則會產(chǎn)生不確定的數(shù)據(jù)。每一個新裝載的數(shù)據(jù)若要被編程,必須有WE由高到低的跳變,這一跳變需要在150μs內(nèi)完成,如果超過150μs,器件會自動進入扇區(qū)內(nèi)部編程方式。為了防止意外的編程操作,AT29LV256提供有軟件保護編程功能,在對Flash 的每個扇區(qū)進行編程時,必須先將3個命令字正確地寫入到對應的地址單元,然后才能向片內(nèi)編寫程序。在對每一個扇區(qū)編程之前,都要執(zhí)行相同的三字節(jié)指令序列,采用軟件保護編程的具體流程如圖1所示。

通過AT29LV256提供的軟硬件操作可識別芯片的系列號和型號。當按圖2順序?qū)懭肟刂谱趾螅纯勺x到產(chǎn)品識別碼1F和器件識別碼BC。器件識別完成后,若需開始編寫程序,則應退出器件識別,并延時20ms,為了減小編程的等待時間,AT29LV256提價有下列兩種檢測編程周期是否結束的方式:
(1) 循環(huán)檢測方式。該方式首先讀出寫入本扇區(qū)最后一個單元的內(nèi)容,若其I/O7位是寫入該單元真實值的反碼,則表明編程周期沒有結束;若為實際值,則表明編程結束。
(2) 檢測I/O6方式。該方式在扇區(qū)編程期間將連續(xù)讀出任意單元地址的內(nèi)容,若I/O6在連續(xù)讀出時狀態(tài)不一樣,說明編程沒有結束,若相同,則表明編程周期已經(jīng)結束。
2 C5402的自引導裝載模式
C5402上電后,通常首先檢查MP/MC引腳的狀態(tài):如果為高電平,說明DSP處于微處理器工作模式,此時便可從外部程序存儲器0FF80h地址處開始執(zhí)行用戶程序;若為低電平,說明DSP被設置為微計算機模式,此時則從片內(nèi)ROM的0FF80h地址開始執(zhí)行程序。另外,在C5402的0FF80h地址處存放著一條跳轉至0F800h處執(zhí)行DSP自行引導裝載(Bootloader)程序的指令。
當C5402執(zhí)行Bootloader程序時,將會按HPI引導裝載模式→串行EEPROM引導裝載模式→并行引導裝載模式→標準串行口引導裝載模式→I/O口引導裝載模式的順序循環(huán)檢測,以決定執(zhí)行哪種啟動模式。
C5402的并行引導裝載模式是將程序代碼數(shù)據(jù)從外界EEPROM或Flash的相應DSP數(shù)據(jù)尋址區(qū)中加載到片內(nèi)DARAM或系統(tǒng)的擴展存儲器SRAM內(nèi)。由于C5402的數(shù)據(jù)區(qū)尋址范圍最大為64k 字 ,因此在不自行編寫Bootloader程序的情況下,并行引導裝載模式最大只能裝載32k字的程序或數(shù)據(jù)。當程序數(shù)據(jù)大于32k時可將自己編寫的并行裝載內(nèi)核程序通過片內(nèi)裝載程序傳送到片內(nèi)DRAM中,然后再運行轉載內(nèi)核程序以將大于32k字的程序數(shù)據(jù)送到片外SRAM中。
若采用并行裝載模式對程序進行加載,則應根據(jù)并行裝載的格式來配置Flash的程序數(shù)據(jù)存儲空間?上仍冢模樱袑臄(shù)據(jù)空間FFFEH和FFFFH地址內(nèi)寫入要存放程序的地址,然后根據(jù)并行裝載的數(shù)據(jù)流將標識控制字、各個寄存器的初始化值、裝載后的起始運行地址、程序段的大小和裝載地址依次寫入Flash的存放程序地址中,最后再寫入所編寫的程序,表2所列是Flash中的并行引導源程序數(shù)據(jù)流。其程序段的大小以及起始運行地址可根據(jù)系統(tǒng)仿真時生成的.MAP文件來確定。
表2 Flash中的并行引導源程序數(shù)據(jù)流





