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