mmcqd trava e queima a CPU no dispositivo embarcado

mmcqd trava e queima a CPU no dispositivo embarcado

No meu sistema embarcado estou gravando um fluxo de vídeo intensivo em SD. Eu não monto partições, apenas escrevo em arquivos /dev/mmcblk0p1. Depois de um tempo, meu processo de escrita trava. eu recebo

[16952.240000] INFO: task vrec:1297 blocked for more than 120 seconds.

[mmcqd]come 90% e o dmesg me mostra

[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

Depois de ejetar/injetar um cartão, tudo funciona bem. Por favor, ajude-me a depurá-lo.

Kernel Linux: 2.6.28.9

Responder1

mmcqdé um processo do kernel responsável pela fila de E/S. Se você estiver obtendo um alto uso de recursos com isso, isso significa que seu cartão SD está muito lento para o stream de vídeo.

Em casos como esse, você realmente precisa de um cartão SD classe 10 ou de um cartão UHS projetado para streaming de vídeo. A razão pela qual o sistema responde após uma ejeção/inserção é porque a fila foi limpa.

informação relacionada