Я пытаюсь загрузить предварительно скомпилированное ядро на машине, созданной QEMU.
Настроена последовательная периферия, и я успешно могу загрузить предварительно скомпилированный образ U-boot для этой машины.
В U-Bootвсе последовательные операции ввода-вывода работают отлично (адресация памяти и адрес UART также подготавливаются в настройках машины). Используя опцию -nographic, я могу читать и писать в командной строке UBoot.
Я могу выполнить команду bootm в Uboot, чтобы загрузить ядро в RAM и загрузить его. Последняя строка, которую я вижу: «Распаковка Linux ... готово. Загрузка ядра ...».
И вот у меня черный экран.
Основное отличие состоит в том, что ядро работает, потому что, используя удаленный сеанс GDB, я вижу, что оно печатает выходные данные, такие как Banner, и дополнительную информацию, используя функции printk. Но на экране QEMU у меня его нет.
Вопрос: где в ядре на ранней стадии выполняется установка console = ttyS0,115200? Я пытался искать в исходных кодах ядра и не могу найти место для отладки проблемы.
Как ядро знает, что передать на последовательный порт перед его установкой? Есть ли буфер RAM Ring?
Любые подсказки?