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