Como depurar o problema de inicialização?

0

Estou trabalhando em montar um sistema personalizado no Black Beaglebone. As coisas funcionam a maior parte do tempo, mas de vez em quando, o sistema falha ao inicializar quando ligado. Isso nunca acontece quando um cabo de depuração serial é conectado (para que eu possa assistir às mensagens do u-boot e do kernel).

No entanto, o que eu descobri é que, nos raros momentos em que falha, se eu conecto um cabo serial, acho que estou sentado em um prompt de inicialização. Se eu configurar manualmente o u-boot para carregar o kernel e tudo a partir daí, eu posso inicializar apenas encontrar (ele pode ler o eMMC e tal).

Meu primeiro pensamento foi que havia algum tipo de ruído na linha serial que estava causando o u-boot quebrar (o padrão é quebrar no espaço em 2 segundos, eu acredito). No entanto, eu recompilei o u-boot para usar um atraso de 0 segundo (não espera pela barra de espaço), mas isso não resolveu o problema.

Como posso descobrir por que o u-boot está parado sem conectar um cabo serial durante a inicialização (porque isso faz com que o problema desapareça; Heisenbug)? Existe algum tipo de registro ativado que eu possa acessar?

    
por Dave 06.04.2018 / 18:14

1 resposta

1

Eu tive uma placa uma vez onde o pino Uart RX foi amarrado ao chão. Então, o u-boot sempre viu uma tecla pressionada.

Não sabe qual versão você está usando ...

Em

/common/autoboot.c

função

static int abortboot_normal(int bootdelay)

pouco antes do retorno, adicione a linha

abort = 0;

Isso não retornará nenhuma tecla pressionada.

    
por 06.04.2018 / 20:06