mmcqd trava e queima a CPU no dispositivo embutido

3

No meu sistema incorporado, estou escrevendo um fluxo de vídeo intensivo para o SD. Eu não montei partições, apenas escrevo para /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 um cartão ejetar / injetar tudo funciona bem. Por favor, ajude-me a depurá-lo.

kernel do Linux: 2.6.28.9

    
por synther 03.10.2013 / 11:27

1 resposta

4

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

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

    
por 03.10.2013 / 14:11