Pular para o conteúdo principal

Solução de Problemas do BSP

A regra geral é identificar primeiro a camada com falha. Este SDK possui cinco camadas, cada uma com métodos de depuração diferentes:

1. Host environment     → setup_build_env.sh --check / ./build.sh check
2. Build → build.sh logs, make info, help <component>
3. Images and flashing → output/image/, upgrade_tool, serial console
4. System boot → serial console at 1500000, init scripts, /var/log
5. Application/runtime → /var/log/Recamera2_developer.log, processes, ports, configuration

1. Ferramentas Gerais de Diagnóstico​

ComandoFinalidade
./build.sh checkVerificar dependências de compilação no host
./build.sh infoImprimir o BoardConfig atual, todas as variáveis RK_* não vazias, make info dos três SDKs de componentes e verificações de domínio de energia
./build.sh help <component>Imprimir o comando make real e os argumentos de um componente para que você possa reproduzi-lo manualmente
make -C project/app/<app> V=1Habilitar saída detalhada para a compilação de um aplicativo
make V=1 -C media/samplesHabilitar saída detalhada para mídia (um V não vazio desativa o modo silencioso CMD_DBG=@)
./build.sh DEBUG appRecompilar com -O0 -g e pular o stripping durante o empacotamento
./build.sh ASAN appRecompilar com AddressSanitizer para investigar problemas de memória
/bin/sdkinfo no dispositivoIdentificar a compilação e o BoardConfig em execução no dispositivo
cat /etc/ota_version no dispositivoVerificar a versão do firmware

build.sh define trap 'err_handler' ERR; em caso de falha, ele imprime a função e o número da linha que falharam. Procure no log por err_handler ou Error: para localizar o problema rapidamente.

2. Problemas de Ambiente do Host e de Compilação​

SintomaCausaSolução
./build.sh --help abre o menu de seleção de placalunch não foi executado; o script verifica .BoardConfig.mk antes de analisar os argumentosExecute ./build.sh lunch primeiro; depois help / --help irão funcionar
Not found tool aarch64-rockchip1240-linux-gnu-gcc, please install first !!!Diretório da toolchain ausente ou não executávelConfirme que tools/linux/toolchain/aarch64-rockchip1240-linux-gnu/bin/ existe; se necessário, faça source em tools/linux/toolchain/<tc>/env_install_toolchain.sh
*** error: Please Check Configure !!! / build app depend on media libs and header filesA compilação do app foi iniciada antes da mídia ser compiladaExecute ./build.sh media primeiro e confirme que output/out/media_out/{include,lib} existe
Build rootfs is not yet complete, packaging cannot proceed!O arquivo tar do rootfs não foi geradoExecute ./build.sh rootfs e verifique output/out/sysdrv_out/rootfs_glibc_rv1126b.tar
Não está claro qual app falhou na compilaçãoproject/app/Makefile compila apps em série com $(foreach) e sai na primeira falhaReproduza a compilação com make -C project/app/<app> V=1
App em Rust (recamera_services) produz um binário armv7O Makefile do app usa por padrão armv7-unknown-linux-gnueabihfExecute make SERVICE_TARGET=aarch64-unknown-linux-gnu
cross relata um erro ou travaDocker está parado ou o usuário não está no grupo dockerExecute sudo systemctl start docker; faça logout e login novamente
Compilação do frontend em Node falhaVersão do Node.js é inferior a 18Execute nvm use 18 ou use a versão instalada por setup_build_env.sh
Versão do CMake é muito antigarecamera_ipc requer CMake ≥3.21Use o CMake instalado por setup_build_env.sh e verifique a ordem do PATH
Erros de compilação relacionados a protobuflibprotobuf-dev / protobuf-compiler ausenteExecute sudo apt install libprotobuf-dev protobuf-compiler
Erros inesperados após trocar de placaSaídas das configurações antiga e nova estão misturadasExecute ./build.sh clean e depois compile novamente
Disco cheioAs saídas do Buildroot, kernel e mídia são grandesMantenha pelo menos 20 GB livres (100 GB recomendados); use du -sh output sysdrv/source/buildroot para localizar o uso
Problemas de permissão após uma compilação como rootSaídas de compilação pertencem ao rootExecute sudo chown -R $USER:$USER . e compile novamente
Scripts se comportam incorretamente porque links simbólicos estão ausentesArquivos foram transferidos via WindowsExtraia novamente o arquivo tar original; veja Download and Extract

3. Problemas de Gravação (Flashing)​

SintomaCausaSolução
upgrade_tool ld não lista o dispositivoNão está em modo Maskrom / Loader; regra udev ausente; não executado com sudoInstale 88-rockusb.rules, depois execute udevadm control --reload-rules && udevadm trigger; confirme que lsusb mostra um dispositivo 2207:; use sudo
Permission denied ao executar upgrade_toolPermissão de execução foi perdida durante a extraçãoExecute chmod +x tools/linux/Linux_Upgrade_Tool/upgrade_tool
./rkflash.sh update não faz nadaO branch está comentado no scriptExecute sudo upgrade_tool uf output/image/update.img
Comportamento inesperado da partição após ./rkflash.sh allall não grava env.imgExecute upgrade_tool di -p output/image/env.img manualmente (ou use parameter.txt)
./build.sh sdcard_upgrade não produz saídaA configuração de placa Recamera2 não define RK_SDCARD_UPGRADE_UBOOT_DEFCONFIG; check_config retorna silenciosamenteAdicione as variáveis necessárias à configuração da placa; veja System Customization (DTS / Kernel / Buildroot / Overlay)
Dispositivo fica inutilizável após interrupção da gravaçãoLoader não foi gravado completamenteForce o modo Maskrom, execute upgrade_tool ul download.bin e depois grave novamente
Writing 'xxx' failedTamanho da imagem não corresponde ao tamanho da partiçãoVerifique se boot.img tem menos de 11 M e rootfs.img tem menos de 3 G

4. Problemas de Boot​

O console serial é o único canal confiável: 1500000 8N1, console=ttyFIQ0.

Sintoma no console serialDiagnósticoSolução
Nenhuma saídaLoader / DDR não iniciou, ou a conexão serial / taxa de baud está erradaConfirme 1500000 baud; regrave idblock.img + download.bin; meça o sinal TX serial
U-Boot aparece e depois paraProblema na imagem do kernel ou no DTBRegrave boot.img; verifique RK_KERNEL_DTS
Kernel panic - not syncing: VFS: Unable to mount root fsrootfs não corresponde ao boot, ou o PARTUUID mudouUse boot e rootfs da mesma compilação; após mudanças de partição, regrave o env
Reinicializações repetidas com mensagens de watchdog no serialUm processo bloqueado impediu a atualização do watchdog (-T 30)Pare S15watchdog e investigue; verifique se há um processo travado
Sistema inicia mas não tem redeScript udhcpc ou problema de prioridade de DNSVeja a seção de solução de problemas de rede em Device Access and Debugging
Hora está errada por um número inteiro de horasS20hwclock usa --hctosys --utc, embora o comentário diga que o RTC armazena hora localConfirme se o RTC armazena UTC ou hora local e ajuste o script se necessário
Não é possível entrar no Linux, mas o U-Boot funcionarootfs está corrompidoGrave apenas o rootfs com sudo ./rkflash.sh rootfs

Verifique a sequência de boot com:

# ls /etc/init.d/ /oem/usr/etc/init.d/          # Available startup scripts
# dmesg | head -50 # Early kernel logs
# cat /var/log/Recamera2_developer.log | head # Application logs
# ps w # Processes that actually started

5. Problemas em Tempo de Execução e de Aplicação​

Biblioteca Compartilhada Não Encontrada​

# ldd /userdata/my_app
  • librockit.so, librknnrt.so etc. ausentes → LD_LIBRARY_PATH não inclui /oem/usr/lib. Shells de login o definem via /etc/profile.d/RkEnv.sh; para contextos sem login (scripts de init, cron), faça source nesse arquivo ou exporte a variável explicitamente.
  • Biblioteca de terceiros ausente → a biblioteca não está no rootfs. Habilite o pacote Buildroot correspondente; veja System Customization (DTS / Kernel / Buildroot / Overlay).
  • Em tempo de link, você também pode precisar de -Wl,-rpath,/oem/usr/lib; veja Choose a Development Path.

Incompatibilidade de Arquitetura / ABI​

# file /userdata/my_app        # Must be ARM aarch64

Exec format error significa que o binário foi compilado para x86-64. GLIBC_2.xx not found significa que a toolchain do host é mais nova que o runtime do dispositivo de destino.

Problemas de Vídeo​

SintomaCausaSolução
Sample não consegue abrir VI / nó de dispositivo está ocupadorkipc já possui o dispositivoExecute sh /oem/usr/bin/RkLunch-stop.sh e tente novamente; restaure o serviço ao terminar
Imagem toda preta ou verdeSensor não detectado ou arquivo de IQ ausenteExecute `dmesg
Cores erradas ou muito ruídoArquivo de IQ não corresponde ao sensorCompare RK_CAMERA_SENSOR_IQFILES com o sensor instalado
Não é possível receber o stream RTSPgo2rtc não habilitou a porta externa 554Verifique [video.0.rtsp] enable em /userdata/config/rkipc.ini e depois reinicie S50go2rtc
Interface Web mostra vídeo, mas um player externo nãoAPI do go2rtc está vinculada a 127.0.0.1Use WebRTC em :8555 ou encaminhe a porta 1984 via SSH
Número de /dev/videoN mudouVersões diferentes de firmware enumeram dispositivos de forma diferenteVerifique no dispositivo com v4l2-ctl --list-devices; não codifique o número de forma fixa

Consulte docs/zh/media/Rockchip_Trouble_Shooting_Linux_VENC_CN.pdf para o guia de solução de problemas de vídeo da Rockchip.

Problemas de NPU / IA​

SintomaCausaSolução
rknn_init falhaModelo não foi convertido para rv1126b, ou as versões do Toolkit e do Runtime não correspondemConverta novamente com target_platform='rv1126b'; verifique a versão de librknnrt.so da placa (baseline interno 2.3.2)
Saída de inferência completamente erradaIncompatibilidade de pré-processamento (mean/std, RGB/BGR, NCHW/NHWC, política de resize)Verifique os parâmetros do script de exportação em vez de adivinhar
Resultados imprecisosConjunto de calibração INT8 não é representativoPrimeiro estabeleça um baseline FP16, depois quantize novamente com um conjunto de calibração melhor
OOM / processo encerradoLLM / VLM usa memória demaisVerifique memory_usage com rkllm_benchmark_demo; tente uma quantização menor
Inferência lentaApenas um núcleo da NPU está em usoDefina rknn_set_core_mask(ctx, RKNN_NPU_CORE_0_1)
Desempenho degrada após longa execuçãoThermal throttlingVerifique o status térmico; veja docs/zh/bsp/Rockchip_Developer_Guide_Thermal_CN.pdf
Saída do VLM ilegível ou inesperadaTokens especiais de visão não correspondemPasse img_start / img_end / img_content em tempo de execução

Problemas de áudio​

Consulte a tabela de problemas em Audio Development. O problema mais comum é abrir hw:0,0 diretamente em vez de usar dsnoop, resultando em Device or resource busy.

Serviços e portas​

# netstat -tlnp        # 22 / 7681 / 21 / 8555 / 1984 / 8765 / 554 / 5554
# ps w | grep -E 'rkipc|gmgr|skt2ws|tmir|rcisd|go2rtc|ttyd|notify'
# /etc/init.d/S49notify start|stop
# /oem/usr/etc/init.d/S50go2rtc restart

Se o SSH rejeitar uma senha correta, o bloqueio do PAM pode ter sido acionado (5 falhas / 300 segundos). O arquivo de estado é /userdata/config/system/login_lock.json; reiniciar limpa esse estado.

Se a página do ttyd indicar que o usuário não é permitido, a lista de permissão em ssh-login-whitelist.sh contém apenas root e admin.

Se o FTP não mostrar o diretório de configuração, hide_file / deny_file em vsftpd.conf o ocultam intencionalmente. Use SFTP em vez disso.

Logs​

# tail -f /var/log/Recamera2_developer.log    # Human-readable
# tail -n 100 /var/log/Recamera2.log # JSON for programmatic parsing
# dmesg # Kernel logs

Os logs ao vivo via WebSocket na porta 8765 vinculam-se a 127.0.0.1. A partir do host, use ssh -L 8765:127.0.0.1:8765 root@<IP>.

Memória e desempenho​

O kernel tem nós de depuração habilitados; inspecione-os com:

# cat /proc/rk_cma/*        2>/dev/null      # CONFIG_RK_CMA_PROCFS
# cat /proc/rk_dmabuf/* 2>/dev/null # CONFIG_RK_DMABUF_PROCFS
# cat /proc/rk_memblock/* 2>/dev/null # CONFIG_RK_MEMBLOCK_PROCFS
# cat /proc/rk_rga/* 2>/dev/null # CONFIG_ROCKCHIP_RGA_PROC_FS
# ls /sys/kernel/debug/ # CONFIG_DEBUG_FS

Os nomes exatos dos nós dependem do dispositivo e ainda precisam de verificação de hardware. Observe que RK_BOOTARGS_CMA_SIZE="8M" define uma região CMA pequena; verifique isso primeiro se grandes alocações contíguas falharem.

Coredumps estão habilitados com CONFIG_ELF_CORE=y. __BUILD_ENABLE_COREDUMP_SCRIPT() em build.sh pode gerar um script de habilitação. Use-o junto com IMAGE/.../DEBUG_FILES/kernel/vmlinux.tar.bz2 e um cross-gdb para analisar um dump.

6. Informações a incluir em um relatório de bug​

Para um relatório interno ou um problema Rockchip (consulte docs/en/Rockchip_User_Guide_Bug_System_EN.pdf), colete estas informações em uma única passagem:

# On the host
./build.sh info > info.txt 2>&1
cat IMAGE/*/build_info.txt

# On the device
/bin/sdkinfo
cat /etc/ota_version
uname -a && cat /proc/cmdline
dmesg > dmesg.txt
cat /var/log/Recamera2_developer.log > app.log
cat /run/board_id.env
netstat -tlnp
ps w

Inclua também o log completo de boot serial (1500000 baud), os passos de reprodução e o caminho para o arquivo IMAGE/..._RELEASE_TEST/.

Constatações de análise estática de código-fonte, suas evidências, impacto e status de verificação são coletados em Source Review and Known Issues para manter as auditorias de manutenção separadas dos procedimentos operacionais. Se você encontrar um comportamento relacionado, verifique-o primeiro em relação aos arquivos e à versão atual do SDK.

Suporte técnico e discussão sobre o produto​

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...