开端
sd卡的驱动在kernel 中的/drivers/mmc/host,kernel 为mmc的驱动设计了一套testcase。标准容量的卡要进行35个测试。整个测试的返回有通过: OK 失败:false 和不支持usupport.这个测试设计的相当完备,从单block 到多block,连续页,随机页的都有,还有一些错误的testcase来测试驱动的健壮性。当进行完驱动的移植之后应该首先进行这个內建的测试,通过了在精心性能和可靠性测试。 测试的驱动需要依赖debugfs文件系统。
menuconfig 配置:
配置debug文件系统
file hacking->debug filesystem
file hacking->linux kernel dump test tool module
选择host_test
device drivers->mmc/sd/sdio card support->mmc host test driver
在板端运行:
挂载debug文件系统
mount -t debugfs none /sys/kernel/debug \n
指定test的设备
echo mmc:b368 >/sys/bus/mmc/drivers/mmcblk/unbind \n
echo mmc0:b368 >/sys/bus/mmc/drivers/mmc_test/bind \n
开启测试
echo 0 >/sys/kernel/debug/mmc0/mmc0/\b:368/test \n
运行结果:
` 17:13:20[ 168.747430] mmc1: Starting tests of card mmc1:1234...
17:13:20[ 168.749621] mmc1: Test case 1. Basic write (no data verification)...
17:13:20[ 168.799306] mmc1: Result: OK
17:13:20[ 168.799350] mmc1: Test case 2. Basic read (no data verification)...
17:13:20[ 168.806214] mmc1: Result: OK
17:13:20[ 168.808311] mmc1: Test case 3. Basic write (with data verification)...
17:13:20[ 168.961830] mmc1: Result: OK
17:13:20[ 169.057921] mmc1: Test case 4. Basic read (with data verification)...
17:13:20[ 169.157578] mmc1: Result: OK
17:13:20[ 169.261899] mmc1: Test case 5. Multi-block write...
17:13:20[ 169.372623] mmc1: Result: OK
17:13:21[ 169.445194] mmc1: Test case 6. Multi-block read...
17:13:21[ 169.549062] mmc1: Result: OK
17:13:21[ 169.658536] mmc1: Test case 7. Power of two block writes...
17:13:21[ 169.755747] mmc1: Result: UNSUPPORTED (by card)
17:13:21[ 169.853020] mmc1: Test case 8. Power of two block reads...
17:13:21[ 169.936878] mmc1: Result: UNSUPPORTED (by card)
17:13:21[ 170.032919] mmc1: Test case 9. Weird sized block writes...
17:13:21[ 170.129968] mmc1: Result: UNSUPPORTED (by card)
17:13:21[ 170.294625] mmc1: Test case 10. Weird sized block reads...
17:13:21[ 170.400823] mmc1: Result: UNSUPPORTED (by card)
17:13:22[ 170.474103] mmc1: Test case 11. Badly aligned writ e... 17:13:22[ 170.574804] mmc1: Result: FAILED
17:13:22[ 170.670796] mmc1: Test case 12. Badly aligned read...
17:13:22[ 170.777936] mmc1: Result: FAILED
17:13:22[ 170.873225] mmc1: Test case 13. Badly aligned multi-block write...
17:13:22[ 170.962525] mmc1: Result: FAILED...
结果说明
结果分为三类
UNsupported(by card) 测试用的sd卡不支持,比如<2G 不支持max block
FAILED 测试失败,需要去分析的,有几个错误不用担心,这只是测驱动的,重要的是保证功能测试。
OK 测试通过。