Saltar al contenido principal

Flasheo y Arranque

Tabla de particiones​

Las particiones de reCamera Pro se definen mediante RK_PARTITION_CMD_IN_ENV en la configuración de la placa:

32K(env),512K@32K(idblock),4M@1M(uboot),64K(misc),10M(recovery),11M(boot),3G(rootfs),-(userdata),
ParticiónTamañoDesplazamientoContenidoArchivo de imagen
env32 K0Tabla de particiones + argumentos de arranqueenv.img
idblock512 K32 KLoader (incluida la inicialización de la DDR)idblock.img
uboot4 M1 MU-Bootuboot.img
misc64 K—Flag de arranque de recuperación, etc.misc.img (esta placa usa recovery-misc.img)
recovery10 M—Sistema de recuperaciónrecovery.img
boot11 M—Kernel + DTBboot.img
rootfs3 G—Sistema de archivos raíz, ext4rootfs.img
userdataEspacio restante—ext4, montado en /userdatauserdata.img

Los tipos de sistema de archivos se especifican mediante RK_PARTITION_FS_TYPE_CFG=rootfs@IGNORE@ext4,userdata@/userdata@ext4: rootfs no se monta explícitamente en fstab (el kernel lo monta con root=PARTUUID=), mientras que userdata se monta en /userdata.

La línea de comandos del kernel desde chosen/bootargs en rv1126b-recamera2-v1.dts:

earlycon=uart8250,mmio32,0x20810000 console=ttyFIQ0 rw root=PARTUUID=614e0000-0000 rootfstype=ext4 rootwait snd_soc_core.prealloc_buffer_size_kbytes=16 coherent_pool=32K

El tamaño de CMA se controla mediante RK_BOOTARGS_CMA_SIZE="8M".

Permitir que el host detecte el dispositivo (configuración única)​

La herramienta de flasheo se comunica mediante USB Rockusb y necesita una regla udev (el VID 2207 es Rockchip):

sudo cp tools/linux/Linux_Upgrade_Tool/88-rockusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

tools/linux/SocToolKit/ también incluye 88-rockusb.rules y 38-disk.rules; instala ambas al usar la herramienta GUI.

Entrar en modo de flasheo​

El dispositivo debe estar en modo Maskrom o Loader para que upgrade_tool lo detecte:

  • Maskrom: apaga el dispositivo por completo, luego mantén pulsado el botón Maskrom/Recovery mientras lo enciendes (o cortocircuita el pin CLK de la eMMC a tierra). El host debería mostrar un dispositivo Rockchip como 2207:xxxx en lsusb.
  • Loader: si hay un U-Boot funcional instalado, ejecuta upgrade_tool db <loader> o interrumpe la cuenta regresiva de U-Boot para entrar en modo Loader.

Consulta el manual de hardware o el esquema para conocer la ubicación exacta del botón y el serigrafiado en reCamera Pro. Confírmalo en un dispositivo físico antes de añadir detalles aquí.

Comprueba si el dispositivo es detectado:

sudo tools/linux/Linux_Upgrade_Tool/upgrade_tool ld

ListDevice debería mostrar los dispositivos en modo de flasheo.

Flashear con rkflash.sh (recomendado)​

El script ./rkflash.sh en la raíz del SDK envuelve upgrade_tool; las rutas de las imágenes están fijas bajo output/image/.

sudo ./rkflash.sh              # Same as all: flash every partition
sudo ./rkflash.sh all
sudo ./rkflash.sh loader
sudo ./rkflash.sh uboot
sudo ./rkflash.sh boot # Flash the kernel only
sudo ./rkflash.sh rootfs # Flash the root filesystem only
sudo ./rkflash.sh userdata
sudo ./rkflash.sh recovery
sudo ./rkflash.sh misc
sudo ./rkflash.sh trust
sudo ./rkflash.sh rd # Reboot the device only
sudo ./rkflash.sh erase # Erase the entire flash

El segundo argumento puede especificar una ruta de imagen personalizada:

sudo ./rkflash.sh boot /path/to/my_boot.img

La secuencia real de comandos para el modo all (consulta project/rkflash.sh) es:

upgrade_tool ul -noreset download.bin     # Download loader without resetting
upgrade_tool di -p parameter.txt # Write partition table
upgrade_tool di -uboot uboot.img
upgrade_tool di -m misc.img
upgrade_tool di -r recovery.img
upgrade_tool di -b boot.img
upgrade_tool di -rootfs rootfs.img
upgrade_tool di -userdata userdata.img
upgrade_tool rd # Reset and reboot

Dos trampas importantes:

  • La rama de flasheo de update.img en rkflash.sh está comentada, por lo que ./rkflash.sh update no hace nada. Para flashear el paquete completo, ejecuta upgrade_tool uf directamente.
  • El modo all no flashea env.img; solo escribe parameter.txt. Si cambiaste RK_PARTITION_CMD_IN_ENV, ejecuta manualmente upgrade_tool di -p env.img o flashea update.img con uf.

Usar upgrade_tool directamente​

Versión de la herramienta v2.26 (tools/linux/Linux_Upgrade_Tool/revision.txt). Comandos comunes:

ComandoPropósito
ldListDevice: lista los dispositivos en modo de flasheo
cd <n>ChooseDevice: selecciona un dispositivo cuando hay varios conectados
ul <loader> [-noreset] [EMMC]UpgradeLoader: descarga el loader a memoria
db <loader>DownloadBoot
uf <update.img> [-noreset]UpgradeFirmware: flashea el paquete completo
di -p [parameter.txt]Escribe la tabla de particiones
di -b [boot.img]Escribe la partición boot
di -rootfs [rootfs.img]Escribe la partición rootfs
di -u [userdata.img]Escribe la partición userdata
di -r [recovery.img]Escribe recovery
di -m [misc.img]Escribe misc
plPartitionList: lee la tabla de particiones del dispositivo
`ef [loaderfirmware]`
rdResetDevice: reinicia
sn [serial-number] / rsnEscribe / lee el número de serie (con project/app/recamera_utils/sn_tool)
sfi [firmware]ShowFirmwareInfo: muestra información del firmware
`exf [firmwareloader] [dir]`
gpt [parameter] [out.gpt]Genera una GPT a partir de la tabla de particiones
rl [startSec] [len] [file] / wl [startSec] [sizeSec] [file]Lee / escribe datos LBA

Ejemplo:

cd tools/linux/Linux_Upgrade_Tool
sudo ./upgrade_tool ld
sudo ./upgrade_tool ul ../../../output/image/download.bin
sudo ./upgrade_tool uf ../../../output/image/update.img
sudo ./upgrade_tool rd

Para obtener todos los detalles de los comandos, consulta 命令行开发工具使用文档.pdf y readme.txt en el mismo directorio.

Flasheo con GUI​

  • Linux: tools/linux/SocToolKit/SocToolKit (GUI Qt; instala primero 38-disk.rules y 88-rockusb.rules).
  • Windows: descarga Rockchip RKDevTool por separado; el SDK no incluye la herramienta para Windows.

Crear una imagen de fábrica​

./build.sh factory

Esto usa tools/linux/SocToolKit/bin/linux/programmer_image_tool para desempaquetar output/image/update.img en output/image/factory/. El tipo de imagen se selecciona a partir de RK_BOOT_MEDIUM (ajustado a emmc para esta placa). Los medios NAND también pasan parámetros de bloque/página/OOB, que pueden sobrescribirse con RK_NAND_BLOCK_SIZE y variables relacionadas.

Imagen de actualización por tarjeta SD​

./build.sh sdcard_upgrade

El directorio de salida es output/image/sdcard_upgrade/.

No disponible para esta configuración de placa: sdcard_upgrade requiere RK_SDCARD_UPGRADE_UBOOT_DEFCONFIG y ..._FRAGMENT, pero ninguna de las variables está definida en BoardConfig_Recamera2/BoardConfig-EMMC-RK801-RV1126B_V1-IPC_64BIT.mk. check_config en build.sh omite silenciosamente el comando con return 0. Para habilitar las actualizaciones por tarjeta SD, añade ambas variables a la configuración de la placa (normalmente también RK_SDCARD_UPGRADE_SCREEN_ENABLE).

Flujo de arranque y recuperación​

  • RK_ENABLE_RECOVERY=y, RK_MISC=recovery-misc.img: la partición misc contiene el flag de arranque de recuperación.
  • Se entra en modo de recuperación escribiendo el flag en misc y reiniciando, o activándolo desde una aplicación de capa superior (flujo OTA).
  • RK_OTA_RESOURCE="boot.img rootfs.img": OTA actualiza solo las particiones boot y rootfs.
  • El restablecimiento de fábrica usa el mecanismo de flag proporcionado por RK_ENABLE_OTA=y (el comentario de la configuración de la placa dice “Used for set/get factory reset flag”).

Consulta OTA y Lanzamientos de Firmware para más detalles.

Verificar después de flashear​

Conecta la consola serie después de encender (1500000 8N1; consulta Acceso al Dispositivo y Depuración). Deberías ver los registros de arranque de U-Boot → kernel → rootfs, seguidos del banner ASCII de reCamera desde overlay-buildroot-banner/etc/motd.

Después de abrir una shell, verifica:

# cat /proc/version              # Kernel 6.1.157
# uname -m # aarch64
# cat /proc/cmdline # Should match bootargs in the DTS
# cat /etc/os-release # Buildroot version information
# ls /oem /userdata # Confirm partitions are mounted
# cat /run/board_id.env # Baseboard / expansion-board detection result

Problemas comunes​

SíntomaCausaSolución
upgrade_tool ld no lista el dispositivoFalta la regla udev / no está en modo de flasheo / no se ejecuta como rootInstala la regla y ejecuta udevadm trigger; confirma el modo Maskrom; ejecútalo con sudo
Permission denied al ejecutar upgrade_toolSe perdió el permiso de ejecución durante la extracciónEjecuta chmod +x tools/linux/Linux_Upgrade_Tool/upgrade_tool
No hay salida serie después de flashear; el sistema no arrancaLoader/idblock no se flasheó o las versiones no coincidenEjecuta rkflash.sh all de nuevo y confirma que download.bin e idblock.img provienen de la misma compilación
Pánico del kernel al montar rootfsboot.img y rootfs.img provienen de compilaciones diferentesReconstruye todo y flashea de nuevo, o al menos flashea boot y rootfs juntos
Problemas después de cambiar los tamaños de particiónenv / parameter no se actualizóFlashea env.img (di -p) por separado o flashea update.img con uf
./rkflash.sh update no hace nadaLa rama está comentadaUsa upgrade_tool uf output/image/update.img

Soporte técnico y debate sobre el producto​

Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a distintas preferencias y necesidades.

Loading Comments...