在我的嵌入式系统上,我正在将密集视频流写入标清。我不挂载分区,只是写入/dev/mmcblk0p1
.一段时间后,我的写作过程挂起。我明白了
[16952.240000] INFO: task vrec:1297 blocked for more than 120 seconds.
[mmcqd]
吃了 90%,dmesg 向我展示
[64142.350000] mmc0: starting CMD13 arg e6240000 flags 00000015
[64142.350000] mmc0: req done (CMD13): 0: 00000c00 00000000 00000000 00000000
[64142.350000] mmc0: starting CMD13 arg e6240000 flags 00000015
[64142.350000] mmc0: req done (CMD13): 0: 00000c00 00000000 00000000 00000000
[64142.350000] mmc0: starting CMD13 arg e6240000 flags 00000015
[64142.350000] mmc0: req done (CMD13): 0: 00000c00 00000000 00000000 00000000
[64142.350000] mmc0: starting CMD13 arg e6240000 flags 00000015
[64142.350000] mmc0: req done (CMD13): 0: 00000c00 00000000 00000000 00000000
[64142.350000] mmc0: starting CMD13 arg e6240000 flags 00000015
[64142.350000] mmc0: req done (CMD13): 0: 00000c00 00000000 00000000 00000000
卡弹出/插入后一切正常。请帮我调试一下。
Linux内核:2.6.28.9
答案1
mmcqd
是负责I/O队列的内核进程。如果您由此获得较高的资源使用率,则意味着您的 SD 卡对于视频流而言速度太慢。
在这种情况下,您确实需要一张 10 级 SD 卡或专为视频流设计的 UHS 卡。弹出/插入后系统响应的原因是队列被清除。