Hi,
On 03.08.2017 13:11, Johannes Kliemann wrote:
I tried to use Nova without Bender with Multiboot2. Basically it works, but when I omit Bender, there's no serial output from either Nova or Genode. I couldn't find out what Bender does different to enable serial on Nova.
the task of Bender is to relocate modules to higher physical memory and to detect PCI serial cards and determine the I/O ports to use them actually. Bender writes this information to a area called Bios Data Area (BDA).
The NOVA microhypervisor and 'core' of Genode look into this area and use the information obtained from there to program and to drive the UART/serial device.
By removing Bender, you effectively have no valid information in the BDA anymore, and so you don't get any serial output.
What is missing to enable serial on Nova alone?
If you don't want to use Bender, but want to have serial output, then you have to hardcode the I/O ports for your target machine specifically in the sources of NOVA and 'core', see [0] and [1].
[0] https://github.com/alex-ab/NOVA/blob/r9/src/console_serial.cpp#L35 [1] https://github.com/genodelabs/genode/blob/master/repos/base-nova/src/core/co...
PS: It also seems that Benders Multiboot2-header [1] is not specification conform. The tags type and flags are defined as double word but according to the specification [2] these are u16 so this should be a word only.
You're right, I'm going to change it. Thanks!
Cheers,
Alex.