Сбой при загрузке Linux с помощью Spike?

Я использовал Spike для загрузки Linux с помощью инструментов riscv, но последовательность загрузки Linux, похоже, останавливается на отключенной Bootconsole [early0].

Я попытался добавить в командную строку ядра root = / dev / vda ro console = ttyS0, но не сработало. Те же настройки консоли работают и в QEMU. Также проверил файл .config на наличие строки CONFIG_HVC_RISCV_SBI = y. Это было там. Все еще не могу пройти мимо.

Пробовал с ядром Linux версий с 4.19 по 5.2. Не повезло. Я здесь что-то не так делаю?

Шаги, которые я сделал:

Скомпилированный linux с набором инструментов Riscv, скомпилированный riscv-pk с помощью ../configure --host = riscv64-unknown-elf --with-payload = [путь к vmlinux] использовал "Spike bbl" для запуска изображения spike.

Пожалуйста, дайте мне знать, если потребуется дополнительная информация.

Извини, нуб здесь.

Присоединение терминального вывода

bbl loader
OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
Linux version 4.19.59 (root@AsusFX504) (gcc version 8.2.0 (GCC)) #2 SMP Sat Jul 20 05:11:32 IST 2019
bootconsole [early0] enabled
initrd not found or empty - disabling initrd
Zone ranges:
  DMA32    [mem 0x0000000080200000-0x00000000ffffffff]
  Normal   empty
Movable zone start for each node
Early memory node ranges
  node   0: [mem 0x0000000080200000-0x00000000ffffffff]
Initmem setup node 0 [mem 0x0000000080200000-0x00000000ffffffff]
software IO TLB: mapped [mem 0xfa3fe000-0xfe3fe000] (64MB)
elf_hwcap is 0x112d
percpu: Embedded 17 pages/cpu s29912 r8192 d31528 u69632
Built 1 zonelists, mobility grouping on.  Total pages: 516615
Kernel command line: 
Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
Sorting __ex_table...
Memory: 1988760K/2095104K available (5468K kernel code, 329K rwdata, 1751K rodata, 193K init, 806K bss, 106344K reserved, 0K cma-reserved)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
rcu: Hierarchical RCU implementation.
rcu:    RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns
Console: colour dummy device 80x25
console [tty0] enabled
bootconsole [early0] disabled

person Sriram Sridhar    schedule 20.07.2019    source источник
comment
Чтобы увидеть, что там, вы можете добавить keep_bootcon в командную строку ядра.   -  person 0andriy    schedule 21.07.2019


Ответы (2)


Это может быть связано с тем, что в вашем Linux config включен виртуальный терминал. Отключение виртуального терминала может решить вашу проблему.

В Linux make menuconfig перейдите по адресу: -

Место нахождения:

  • -> Драйверы устройств
  • -> Символьные устройства

и отключите Виртуальный терминал.

Symbol: VT [=y]    n                                                                                                                                                                                 
Type  : bool                                                                                                                                                                                          
Prompt: Virtual terminal 
person anoopknr    schedule 21.07.2019

Как упоминалось ранее, причина в том, что VT включен, поэтому в ядре есть фиктивный буфер кадра VT, который просто никуда не денется, но вам не нужно его отключать. console=ttyS0 тоже не будет работать, так как SPIKE его не эмулирует. Обратите внимание, что это не будет работать и на HiFive Unleashed, поскольку последовательные терминалы имеют ttySIF0 и ttySIF1. Вы хотите console=hvc0, и SPIKE сможет продолжить работу оттуда, например. в вашем ядре .config:

CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="earlyprintk console=hvc0"
CONFIG_CMDLINE_FORCE=y
person borancar    schedule 03.09.2019