🛠 Mesurer le stockage du BPI-CM4 : eMMC, microSD et le palier NVMe
Objetivos
El BPI-CM4 ofrece tres rutas de almacenamiento muy diferentes: la eMMC de 16 GB del módulo (bus de 8 bits, mmc-hs200, 200 MHz), la microSD del carrier (4 bits, 50 MHz) y el PCIe Gen2 x1 dirigido al puerto mini-PCIe del carrier. Usted medirá cada ruta con fio y hdparm y las comparará con las referencias publicadas: eMMC ≈ 233 MB/s en lectura secuencial de 1 M (fio) o 148,8 MB/s (hdparm), SSD NVMe (Samsung 970 EVO Plus mediante adaptador mini-PCIe) ≈ 351 MB/s y 101 k IOPS en acceso aleatorio de 4 k — aproximadamente 100 veces la microSD en acceso de 4 k.
Material
- BPI-CM4 + carrier BPI-CM4IO bajo Armbian
- microSD de prueba (clase 10 como mínimo)
- Opcional: SSD NVMe M-key estándar montado en un adaptador mini-PCIe (el carrier NO tiene conector M.2)
- Fuente de alimentación estable de 5 V / 3 A
Código completo
sudo apt update && sudo apt install -y fio hdparm
# Lecture séquentielle 1 M sur le rootfs (adapter le périphérique)
sudo fio --name=seqread --rw=read --bs=1M --size=256M --runtime=30 \
--iodepth=32 --ioengine=libaio --direct=1 --filename=/root/testfile
sudo rm -f /root/testfile
# Repère hdparm (comparable aux chiffres du wiki vendor)
sudo hdparm -Tt /dev/mmcblk0 # eMMC du module
sudo hdparm -Tt /dev/mmcblk1 # microSD du carrier
# Score de stockage standardisé (procédure du wiki Banana Pi)
curl -fsSL https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
Verificación esperada
Lectura secuencial de la eMMC del orden de 150 a 230 MB/s según el lote (los chips eMMC son de segunda mano: Samsung HS200 o Rayson, las cifras varían de una tarjeta a otra); la microSD queda claramente por detrás, especialmente en acceso aleatorio de 4 k; si se monta un SSD NVMe, la puntuación de PiBenchmarks se dispara (el wiki cita 24550 frente a 5446 en eMMC).
Errores frecuentes
- Realizar la prueba de rendimiento en el dispositivo equivocado: verificar con lsblk qué mmcblk0/mmcblk1 es la eMMC y cuál es la SD.
- Concluir que hay una avería porque sus cifras difieren de las del wiki: el componente eMMC depende del lote de fabricación.
- SD llena o casi llena: las tasas de transferencia se desploman, pruebe con una tarjeta poco llena.
- Combinar SD UHS + puerto mini-PCIe ocupado y sufrir bloqueos del sistema: el fabricante documenta pci=pcie_bus_safe disableuhs en /boot/env.txt (consulte el tutorial de NVMe).
- Escribir el archivo de prueba en /root montado en solo lectura o saturado: fio falla sin un mensaje claro.
Otros tutoriales para esta placa
- Monter le module BPI-CM4 sur son carrier et réussir le premier boot
- Apprivoiser les LED et la touche ADC du carrier CM4IO
- Activer I2C, SPI et UART sur le BPI-CM4 : env.txt ou armbianEnv.txt
- Brancher un capteur BME280 sur l'I2C1 du carrier (GPIOX_17/18)
- Déplacer le rootfs sur un SSD NVMe via le port mini-PCIe
- Exploiter le NPU 5 TOPS de l'A311D pour l'inférence embarquée
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash