使用linux的MTD tests support测试flash性能
在嵌入式linux開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)使用到nor flash,nand flash等存儲(chǔ)設(shè)備,由于flash的芯片型號(hào)和接口類(lèi)型較多,性能不一,我們需要對(duì)系統(tǒng)中使用的flash性能進(jìn)行分析,并對(duì)設(shè)備工作的穩(wěn)定性進(jìn)行測(cè)試。
flash設(shè)備在嵌入式系統(tǒng)中,會(huì)被驅(qū)動(dòng)為MTD分區(qū),在linux kernel中,提供了針對(duì)MTD的測(cè)試模塊,方面開(kāi)發(fā)人員對(duì)flash的功能,性能,穩(wěn)定性等進(jìn)行測(cè)試。
使用make ARCH=arm ?menuconfig打開(kāi)kernel配置界面,配置?"Device Drivers" -> "Memory Technology Device (MTD) support" -> "MTD tests support",該選項(xiàng)只可以配置為按模塊編譯,保存配置后退出。
使用make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules編譯代碼,生成測(cè)試工具模塊,存儲(chǔ)在目錄drivers/mtd/tests中,包括以下內(nèi)容:
mtd_nandecctest.ko:nand flash的ECC校驗(yàn)測(cè)試
mtd_pagetest.ko:nand flash的page讀寫(xiě)測(cè)試
mtd_speedtest.ko:MTD分區(qū)的讀寫(xiě)速度測(cè)試
mtd_subpagetest.ko:nand flash的sub-page接口測(cè)試
mtd_oobtest.ko:nand falsh的OOB區(qū)域讀寫(xiě)測(cè)試
mtd_readtest.ko:讀取整個(gè)MTD分區(qū)
mtd_stresstest.ko:隨機(jī)讀寫(xiě),擦除操作測(cè)試
mtd_torturetest.ko:該功能可用于做穩(wěn)定性或者壽命測(cè)試,隨機(jī)操作直到發(fā)生錯(cuò)誤
在實(shí)時(shí)ko文件進(jìn)行測(cè)試時(shí),可以通過(guò)dev=n指定要測(cè)試的MTD分區(qū),示例如下:
insmod mtd_stresstest.ko dev=9 count=1000 [ 3289.273771] ================================================= [ 3289.279826] mtd_stresstest: MTD device: 9 [ 3289.284079] mtd_stresstest: MTD device size 268435456, eraseblock size 131072, page size 2048, count of eraseblocks 2048, pages per eraseblock 64, OOB size 64 [ 3289.303250] mtd_stresstest: scanning for bad eraseblocks [ 3289.420267] mtd_stresstest: scanned 2048 eraseblocks, 0 are bad [ 3289.426534] mtd_stresstest: doing operations [ 3289.431031] mtd_stresstest: 0 operations done [ 3339.606972] mtd_stresstest: finished, 1000 operations done [ 3339.612992] =================================================當(dāng)mtd_stresstest測(cè)試發(fā)生操作錯(cuò)誤時(shí),會(huì)退出并答應(yīng)錯(cuò)誤信息,示例如下:
[root@AT8XXX ~]# dmesg |grep mtd_stresstest [591404.676252] mtd_stresstest: MTD device: 9 [591404.680577] mtd_stresstest: MTD device size 268435456, eraseblock size 131072, page size 2048, count of eraseblocks 2048, pages per eraseblock 64, OOB size 64 [591404.699798] mtd_stresstest: scanning for bad eraseblocks [591404.715081] mtd_stresstest: block 78 is bad [591404.723850] mtd_stresstest: block 159 is bad [591404.812382] mtd_stresstest: block 1752 is bad [591404.832925] mtd_stresstest: scanned 2048 eraseblocks, 3 are bad [591404.839259] mtd_stresstest: doing operations [591404.843859] mtd_stresstest: 0 operations done [591459.037353] mtd_stresstest: 1024 operations done [591510.529876] mtd_stresstest: 2048 operations done[594847.430017] mtd_stresstest: error: write failed at 0xf964000 [594847.436350] mtd_stresstest: error -5 occurred更多mtd test的信息參考 http://www.linux-mtd.infradead.org/doc/general.html
總結(jié)
以上是生活随笔為你收集整理的使用linux的MTD tests support测试flash性能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html5响应式的插件,Chocolat
- 下一篇: linux系统中查看系统内存或flash