基于NAND FLASH的大容量視頻存儲系統的設計
3 系統軟件設計
系統上電復位加載完程序之后,程序對寄存器初始化完成后就進入循環等待狀態,準備接收中心控制發送的命令。當通過PPI接收到命令后,就對命令進行分析,判斷中心控制板要存儲板完成什么操作,如視頻文件存儲、下載、剪切、復制或刪除等等。文件存儲流程圖如圖4所示。本文引用地址:http://www.104case.com/article/165555.htm
當上位機通過網絡給中心控制板發送開始命令后,中心控制板首先發送開始拍攝命令和拍攝視頻參數給前端視頻壓縮系統,建立TCP鏈接,然后發送開始命令給存儲板。存儲板接收到中心控制分系統發送過來的命令后,首先讀取文件列表到DSP的SDRAM當中,DSP檢索出其中的文件個數和最后一個文件的存儲地址,在SDRAM中添加新文件表項到當前的文件列表,然后擦除先前存儲在FLASH中的文件列表后重新寫入修改過后的文件列表。根據系統壓縮的要求,如果前端壓縮后的碼流速度為2 Mb/s,為了使得DSP集中處理數據,我們擬定中心控制板和存儲板之間每4 s傳輸一次數據。由于每次壓縮后的數據長度不是一個既定數,因此只能按照最大數據長度來傳輸,即每次傳輸1 MB。由于PPI接口寄存器位寬的限制,每次傳輸數據長度不能超過(128K-1)B,我們設定每次傳輸長度為100 KB,財DSP通過PPI接收的數據需要通過11次才能接收完畢。中心控制分系統把有效數據長度作為一個參數放置在數據的末尾,存儲板按照這個參數對緩存到SDRAM中的數據進行處理,剩余無效數據拋掉。
4 壞塊的檢測處理
由于制作工藝等原因,NAND FLASH在出廠時會存在隨機分布的壞塊,另外FLASH在使用過程中也會造成壞塊。如果冒然對壞塊進行操作,會造成數據的丟失,影響數據的完整性。另外,在檢測編程和擦除結束標志時,FLASH的I/O返回的狀態不穩定,會導致程序進入無限等待狀態,這樣會大大影響整個系統的性能。因此,有必要對FLASH進行壞塊檢測和處理。
檢測壞塊的方法有兩種:一種方法是利用芯片出廠時廠家給的壞塊信息,它被廠家標記在壞塊的第一頁和第二頁的備用空間的首字節中,即頁內地址(列地址)為4 096的字節中。如果這兩個字節都是0xFF,則表明當前塊不是壞塊,否則為壞塊。另一種方法是將當前塊先擦除,然后讀出當前塊的數據,如果讀出的數據不全是0xFF,則表明此塊為壞塊(考慮到不使用備用空間)。
由于壞塊與有效塊相互獨立,互不影響,所以對FLASH進行操作時只要將壞塊跳過即可。考慮到本系統的視頻數據采用文件的形式存儲,也就是說在讀寫操作之前DSP需要準確知道文件的存儲地址,包括文件的開始地址和結束地址,所以必須要將檢測出來的壞塊表存儲在DSP的存儲器中。如果將壞塊列表存放在NAND FLASH中,會存在一個問題:存 放壞塊列表的地方本身就在壞塊區該如何處理,如果做特殊處理的話會影響程序的一致性。另外,每次搜索之前都得把壞塊列表從NAND FLASH中讀出來,這樣的話程序會進入好幾次中斷,從而影響整個程序的流程。考慮到程序燒寫FLASH有16 Mb,而DSP程序不超過20 KB,于是可以將壞塊列表放在程序燒寫FLASH中,也就是說程序燒寫FLASH既存放程序,又存放壞塊列表。這樣,DSP可以對壞塊列表進行直接訪問。
5 結語
在整個系統的測試過程中,本部分工作正常,對NAND FLASH的訪問能跳過壞塊,保證數據的正確性和完整性。另外,如何采用流水線方式提高存儲速率是今后研究的重點。
評論