Нет ввода в командной строке U-Boot - PullRequest
0 голосов
/ 20 мая 2018

Похоже, я либо заблудился в навыках гугла для ответа, либо пропустил слишком очевидный вариант в конфигурации.В любом случае, у меня есть последняя версия U-Boot для x86, которая работает до командной строки, где, к сожалению, я ничего не могу напечатать.

Добавлены отладочные отпечатки в getc () драйвера ns16550покажите, что на самом деле ввод есть, хотя на экране нет эха и нет фактического выполнения команды, если я правильно наберу его и нажму Enter.

fdtdec_get_config_string: bootcmd
fdtdec_get_config_int: bootsecure
fdtdec_get_int: bootsecure: (not found)
=> getc() d
getc() d
getc() 70
getc() 72
getc() 69
getc() 6e
getc() 74
getc() 65
getc() 6e
getc() 76
getc() d

(в нем Enter , Введите и printenv + Введите )

Там только последовательный интерфейс, поэтому я не могу переключиться на альтернативный.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Проблема возникла в сломанном оборудовании (на самом деле это симуляция), где не работает выравниваемый доступ к байтам ввода / вывода.Итак, что происходит между следующим кодом:

if (!(serial_in(&com_port->lsr) & UART_LSR_DR))
    return -EAGAIN;

Поскольку LSR имеет адрес 0x3fd (смещение 5), serial_in() возвращает 0xFF и, таким образом, пропускает возврат отсюда, предполагая, что данные доступны, при чтенииRBR несколько раз возвращает 0x00.

Решением является либо исправление аппаратного обеспечения, либо создание для него собственного последовательного драйвера.

0 голосов
/ 21 мая 2018

U-Boot не использует ни Xon / Xoff, ни аппаратное рукопожатие.Пожалуйста, убедитесь, что они отключены в вашем эмуляторе терминала.

Эти три переменные среды влияют на то, какая консоль используется:

  • stderr = serial
  • stdin = serial
  • stdout = serial

Пожалуйста, проверьте их значение.

...