文章采用dd工具,將/dev/zero 作為源文件來寫入到/mnt/data/stress-test-file文件中:
dd if=/dev/zero of=/mnt/data/stress-test-file bs=1M count=10
生成的stress-test-file文件大小為10M,內(nèi)容為全0。
基本思路就是獲取10M大小的數(shù)據(jù),寫入到測試文件中,然后再把測試文件中的內(nèi)容讀出來和0x00作比較,如果不為0x00說明Nand Flash可能出現(xiàn)了位反轉(zhuǎn)產(chǎn)生壞塊,就退出該nandflash的讀寫壓力測試。
按照博主的想法,我講源數(shù)據(jù)改為0x5a,寫入到測試文件。
1、產(chǎn)生10M大小 內(nèi)容為0x5a的文件:
!#/bin/bash
n=10000000
while [ $n -ne 0 ]
do
? ? echo -e '\0132\c' >> mydata
? ? ((n=n-1))
done
2、將源文件寫入到測試文件:
dd if= mydata of=/mnt/data/stress-test-file bs=1M count=10
3、修改判斷標(biāo)志
將原文中check_buf(buf, 0x00, ret)修改為check_buf(buf, 0x5a, ret)
該方法使用的讀寫操作包括dd工具都是基于文件系統(tǒng)(操作對象是源文件和測試文件,文件是基于文件系統(tǒng)),并沒有繞過FTL(flash tansfer layer)層。
FTL是Nand Flash的驅(qū)動層和文件系統(tǒng)層之間的一個均衡算法,不繞過FTL就沒有辦法對Nand Flash中固定的block做磨損測試,因為FTL會做一些均衡動作,使得Nand Flash的大部分塊都會被使用到而不是只使用某些塊。
所以這種方法并不能真正的實現(xiàn)nand flash的磨損測試。要實現(xiàn)nand flash的磨損測試,可以使用MTD tools,前提是nand flash的驅(qū)動是以MTD方式實現(xiàn)的(有的nand flash驅(qū)動是以block方式實現(xiàn))。以MTD方式實現(xiàn)的nand flash 驅(qū)動在Linux系統(tǒng)中會有./dev/mtd* 節(jié)點。