使用linux的MTD tests support测试flash性能

本文为gp_scorpius原创文章:http://blog.csdn.net/gp_scoprius/article/details/53257056


嵌入式Linux开发过程中,经常会使用到nor flash,nand flash等存储设备,由于flash的芯片型号和接口类型较多,性能不一,我们需要对系统中使用的flash性能进行分析,并对设备工作的稳定性进行测试

flash设备在嵌入式系统中,会被驱动为MTD分区,在linux kernel中,提供了针对MTD的测试模块,方面开发人员对flash的功能,性能,稳定性等进行测试。

使用make ARCH=arm  menuconfig打开kernel配置界面,配置 "Device Drivers" -> "Memory Technology Device (MTD) support" -> "MTD tests support",该选项只可以配置为按模块编译,保存配置后退出。

使用make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules编译代码,生成测试工具模块,存储在目录drivers/mtd/tests中,包括以下内容:

mtd_nandecctest.ko:nand flash的ECC校验测试

mtd_pagetest.ko:nand flash的page读写测试

mtd_speedtest.ko:MTD分区的读写速度测试

mtd_subpagetest.ko:nand flash的sub-page接口测试

mtd_oobtest.ko:nand falsh的OOB区域读写测试

mtd_readtest.ko:读取整个MTD分区

mtd_stresstest.ko:随机读写,擦除操作测试

mtd_torturetest.ko:该功能可用于做稳定性或者寿命测试,随机操作直到发生错误


在实时ko文件进行测试时,可以通过dev=n指定要测试的MTD分区,示例如下:

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. insmod mtd_stresstest.ko dev=9 count=1000  
  2. [ 3289.273771] =================================================  
  3. [ 3289.279826] mtd_stresstest: MTD device: 9  
  4. [ 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  
  5. [ 3289.303250] mtd_stresstest: scanning for bad eraseblocks  
  6. [ 3289.420267] mtd_stresstest: scanned 2048 eraseblocks, 0 are bad  
  7. [ 3289.426534] mtd_stresstest: doing operations  
  8. [ 3289.431031] mtd_stresstest: 0 operations done  
  9. [ 3339.606972] mtd_stresstest: finished, 1000 operations done  
  10. [ 3339.612992] =================================================  

当mtd_stresstest测试发生操作错误时,会退出并答应错误信息,示例如下:

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [root@AT8XXX ~]# dmesg |grep mtd_stresstest  
  2. [591404.676252] mtd_stresstest: MTD device: 9  
  3. [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  
  4. [591404.699798] mtd_stresstest: scanning for bad eraseblocks  
  5. [591404.715081] mtd_stresstest: block 78 is bad  
  6. [591404.723850] mtd_stresstest: block 159 is bad  
  7. [591404.812382] mtd_stresstest: block 1752 is bad  
  8. [591404.832925] mtd_stresstest: scanned 2048 eraseblocks, 3 are bad  
  9. [591404.839259] mtd_stresstest: doing operations  
  10. [591404.843859] mtd_stresstest: 0 operations done  
  11. [591459.037353] mtd_stresstest: 1024 operations done  
  12. [591510.529876] mtd_stresstest: 2048 operations done  
  13.   
  14. [594847.430017] mtd_stresstest: error: write failed at 0xf964000  
  15. [594847.436350] mtd_stresstest: error -5 occurred  

更多mtd test的信息参考 http://www.linux-mtd.infradead.org/doc/general.html
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值