Saltar al contenido principal

Compilar el firmware completo

Flujo de trabajo en tres pasos​

cd recamera-pro-sdk-v1.0.10
./build.sh lunch # 1. Select a board configuration
./build.sh all # 2. Build and package the images
ls output/image/ # 3. Inspect the outputs

./build.sh all ejecuta estas etapas en orden: sysdrv (U-Boot + kernel + rootfs) → media → app → recovery → firmware (empaquetado de la imagen).

Ejecutar ./build.sh sin argumentos ejecuta allsave por defecto (all + save). Esto también archiva imágenes, parches e información de compilación bajo IMAGE/. En CI, ejecuta explícitamente ./build.sh all si no quieres el archivo.

Seleccionar una configuración de placa​

./build.sh lunch

El script lista y numera los 50 archivos BoardConfig-*.mk bajo project/cfg/. Sus nombres siguen este patrón:

BoardConfig-"boot-medium"-"power-scheme"-"hardware-version"-"application-scenario".mk

Para reCamera Pro, elige una de las dos configuraciones bajo BoardConfig_Recamera2/:

Archivo de configuraciónDescripción
BoardConfig_Recamera2/BoardConfig-EMMC-RK801-RV1126B_V1-IPC_64BIT.mk64 bits, recomendada; usa aarch64-rockchip1240-linux-gnu
BoardConfig_Recamera2/BoardConfig-EMMC-RK801-RV1126B_V1-IPC.mkVersión de 32 bits

El número del menú puede cambiar entre versiones del SDK porque las entradas se ordenan por nombre de archivo. No codifiques de forma rígida el número en documentación, scripts o configuración de CI; usa el nombre de archivo completo en su lugar.

Selección no interactiva (recomendada para CI)​

lunch acepta directamente un nombre de archivo de configuración, evitando el menú interactivo:

./build.sh lunch BoardConfig-EMMC-RK801-RV1126B_V1-IPC_64BIT.mk

Después de la selección, la raíz del SDK contiene un enlace simbólico llamado .BoardConfig.mk que apunta al archivo seleccionado:

ls -l .BoardConfig.mk
./build.sh info # Check the current configuration, defconfig, DTS, partition table, and all RK_* variables

Referencia completa de comandos de build.sh​

Compilaciones de componentes​

ComandoDescripción
envGenerar la imagen de la partición env (tabla de particiones y argumentos de arranque)
metaCompilar/exportar cabeceras meta multimedia; opcional, se gestiona automáticamente al compilar aplicaciones
ubootCompilar U-Boot
kernelCompilar el kernel
rootfsCompilar el sistema de archivos raíz con Buildroot
driverCompilar módulos de controladores del kernel (.ko)
sysdrvCompilar U-Boot + kernel + rootfs
mediaCompilar bibliotecas multimedia como mpp / rockit / rkaiq / rga / iva
appCompilar aplicaciones de referencia (depende de media; media debe compilarse primero)
recoveryCompilar el sistema de recuperación
toolCompilar herramientas para el PC host
mcuCompilar el firmware RT-Thread del lado MCU. Este comando se gestiona antes del análisis normal de argumentos; usa ./build.sh mcu [configuration]

Comandos de empaquetado y de sistema completo​

ComandoDescripción
allCompilar y empaquetar todas las imágenes necesarias para arrancar el sistema
allsaveEjecutar all + save; el valor predeterminado cuando no se proporciona ningún argumento
firmwareEmpaquetar todas las imágenes necesarias para arrancar el sistema
updateimgEmpaquetar todas las imágenes de partición en update.img
unpackimgExtraer un paquete update.img
otaEmpaquetar el archivo de actualización OTA update_ota.tar
factoryCrear una imagen de flasheo de fábrica usando tools/linux/SocToolKit
sdcard_upgradeCrear una imagen de actualización por tarjeta SD
saveArchivar imágenes, parches e información de depuración en IMAGE/; save xml también guarda el manifiesto del repositorio

Limpieza​

ComandoDescripción
cleanLimpiar todas las salidas de compilación
clean uboot / clean kernel / clean driver / clean rootfs / clean sysdrvLimpiar el componente seleccionado
clean media / clean app / clean recoveryLimpiar media, aplicaciones o recovery

Menús de configuración​

ComandoDescripción
kernelconfigAbrir menuconfig del kernel; al salir, guardar automáticamente la configuración de vuelta a defconfig con savedefconfig
buildrootconfigAbrir menuconfig de Buildroot y guardar el defconfig al salir

kernelconfig primero guarda una instantánea defconfig.before. Si la configuración no ha cambiado, omite savedefconfig.

Arranque seguro y comandos avanzados​

ComandoDescripción
dmCrear imágenes device-mapper para particiones cifradas o con verity
dm-key-genGenerar una clave de device-mapper
secure-boot-key-genGenerar claves de arranque seguro

Obtener ayuda (ten cuidado con esto)​

./build.sh help          # Print usage
./build.sh help media # Show the actual make command used for media
./build.sh help kernel # Likewise for kernel; also works with uboot/rootfs/sysdrv

Trampa habitual: antes de lunch, ./build.sh --help puede abrir primero el menú de selección de placa en lugar de mostrar la ayuda. El script comprueba .BoardConfig.mk antes de analizar los argumentos y fuerza la selección de placa si falta el enlace. Ejecuta primero ./build.sh lunch; después de seleccionar una placa, --help / help pueden mostrar la información de uso.

help <component> es especialmente útil porque revela el comando make subyacente y los argumentos que usa build.sh, lo que facilita reproducir una compilación manualmente o diagnosticar un problema.

Modificadores del modo de compilación​

Antepone un comando con DEBUG o ASAN para cambiar el modo de compilación:

./build.sh DEBUG app     # -O0 -g -ggdb -pg
./build.sh ASAN app # -O0 -g -ggdb -fsanitize=address -fno-stack-protector -fno-omit-frame-pointer -fsanitize-recover=all
./build.sh app # Default RELEASE: -Os; strip binaries during packaging

En modo RELEASE, el empaquetado ejecuta strip, excepto en libpthread*.so* y ld-*.so* (la depuración de pthread de gdb y valgrind requieren símbolos sin recortar). Los módulos del kernel (.ko) solo reciben --strip-debug. El modo DEBUG omite el stripping y también instala símbolos de depuración de libc (runtime_lib/libc, lib.tar.bz2).

Compilaciones incrementales​

./build.sh app                             # Rebuild applications only; fastest when changing application code
./build.sh app && ./build.sh firmware # Rebuild applications and repackage the images
./build.sh kernel # Rebuild the kernel only
./build.sh clean app && ./build.sh app # Clean and rebuild applications when needed

Compilar una aplicación directamente (ejecuta primero lunch):

make -C project/app/recamera_notify        # Build one application
make -C project/app/recamera_notify distclean

Compilar media por separado (ejecuta primero lunch; media se puede compilar de forma independiente del resto del SDK):

make -C media

Salidas de compilación​

output/image/ — Imágenes flasheables​

ArchivoDescripción
download.binPrograma del lado del dispositivo usado para la comunicación de flasheo; se carga solo en la memoria de la placa
idblock.imgLoader, incluyendo la inicialización de la DDR
uboot.imgU-Boot
env.imgTabla de particiones y argumentos de arranque
boot.imgImagen del kernel incluyendo el DTB
rootfs.imgSistema de archivos raíz (ext4)
recovery.imgSistema de recuperación (RK_ENABLE_RECOVERY=y en esta configuración de placa)
misc.imgPartición misc usada para el flag de arranque de recovery; esta configuración de placa usa recovery-misc.img
userdata.imgPartición userdata (ext4, montada en /userdata)
update.imgPaquete completo para todas las particiones; se puede usar para una actualización
parameter.txtTexto de la tabla de particiones usado por rkflash.sh

output/out/ — Salidas intermedias​

DirectorioDescripción
media_out/include/ y lib/ de media, usados como dependencias de aplicaciones
app_out/Salidas de aplicaciones fusionadas en el rootfs bajo bin/lib/share/etc/root durante el empaquetado
rootfs_glibc_rv1126b/Directorio de empaquetado del rootfs
sysdrv_out/Salidas de sysdrv
oem/, userdata/, ramdisk/Contenidos de la partición OEM, userdata y el ramdisk de recovery
S20linkmount, S21appinitScripts generados de montaje de particiones e inicio de aplicaciones OEM

Tiempo esperado para la primera compilación​

Un ./build.sh all completo incluye una compilación completa de Buildroot y puede tardar desde decenas de minutos hasta varias horas, dependiendo de los núcleos de CPU y el almacenamiento. En la primera ejecución, Buildroot extrae sysdrv/tools/board/buildroot/buildroot-2023.02.6.tar.gz y descarga/compila muchos paquetes, por lo que se requiere una conexión a internet. Las compilaciones incrementales son mucho más rápidas porque solo recompilan los componentes cambiados.

Para la primera compilación, considera usar screen o tmux y guardar el log:

./build.sh all 2>&1 | tee build_$(date +%Y%m%d_%H%M).log

Lista de comprobación previa a la compilación​

  • ./setup_build_env.sh ha finalizado, y el resumen de versión no muestra ninguna herramienta requerida como NOT INSTALLED.
  • ./build.sh lunch seleccionó BoardConfig_Recamera2/...IPC_64BIT.mk, y el enlace simbólico .BoardConfig.mk existe.
  • ./build.sh info informa rv1126b-recamera2-v1.dts para RK_KERNEL_DTS.
  • Quedan al menos 20 GB de espacio libre en disco en la partición del SDK (se recomiendan 100 GB o más).
  • Si cambiaste la configuración de la placa, ejecuta primero ./build.sh clean.

A continuación, flashea las imágenes en la placa: Flasheo y arranque.

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...