Esta é apenas uma resposta parcial.
Consegui melhorar o desempenho para cerca de 19MB / s ao duplicar o relógio.
Eu não sei o quanto mais posso empurrar isso. Eu nem tenho certeza do relógio que estou dobrando no momento. Eu acabei de encontrar /sys/kernel/debug/mmc
e estava mexendo com isso.
Também vi mencionar que o valor timing spec
abaixo está definido para valores mais interessantes, como "sd high-speed", então tentarei analisar isso.
rolf@deb:~$ sudo cat /sys/kernel/debug/mmc0/ios
[sudo] password for rolf:
clock: 25000000 Hz
actual clock: 25000000 Hz
vdd: 21 (3.3 ~ 3.4 V)
bus mode: 2 (push-pull)
chip select: 0 (don't care)
power mode: 2 (on)
bus width: 2 (4 bits)
timing spec: 0 (legacy)
signal voltage: 0 (3.30 V)
driver type: 0 (driver type B)
rolf@deb:~$ sudo cat /sys/kernel/debug/mmc0/clock
25000000
rolf@deb:~$ sudo dd if=/dev/mmcblk0 of=/dev/null bs=512
^C73953+0 records in
73952+0 records out
37863424 bytes (38 MB, 36 MiB) copied, 3.55635 s, 10.6 MB/s
rolf@deb:~$ echo 50000000 | sudo tee /sys/kernel/debug/mmc0/clock
50000000
rolf@deb:~$ sudo cat /sys/kernel/debug/mmc0/ios
clock: 50000000 Hz
actual clock: 50000000 Hz
vdd: 21 (3.3 ~ 3.4 V)
bus mode: 2 (push-pull)
chip select: 0 (don't care)
power mode: 2 (on)
bus width: 2 (4 bits)
timing spec: 0 (legacy)
signal voltage: 0 (3.30 V)
driver type: 0 (driver type B)
rolf@deb:~$ sudo dd if=/dev/mmcblk0 of=/dev/null bs=512
^C225761+0 records in
225760+0 records out
115589120 bytes (96 MB, 92 MiB) copied, 4.94934 s, 19.4 MB/s
Atualização:
Meu cartão é classificado como Classe 10 UHS-I.
Parece que o controlador está sendo ajustado para o modo de velocidade SD mais lento, mais antigo (portanto, mais compatível), que é de 25Mhz, sinal de 3,3V, 12,5MB / seg.
Ao bater manualmente a freqüência para 50Mhz, eu teria colocado no modo "High Speed" (25MB / seg, spec 1.10).
No Windows, ele estaria rodando em modo UHS-I, SDR104 - 104MB / seg. O modo SDR104 tem uma frequência de 208MHz e tensão de sinal de 1,8V.
Ainda não encontrei uma maneira de definir manualmente o modo de barramento ou a voltagem, que é necessária para aumentar ainda mais a frequência sem o risco de danificar o hardware.