Hello everyone,
I am in need of some friendly advice. I am working on getting an application
running, which I compiled for PowerPC using the qoriq_e500 BSP
(https://docs.rtems.org/branches/master/user/bsps/bsps-powerpc.html#qoriq-qoriq).
Due to the current lack of a physical board, I want to have it run in QEMU on
the ppce500 machine (https://www.qemu.org/docs/master/system/ppc/ppce500.html).
I have RTEMS on head 25ba67963aa23dff4fbe87a2e0c56b8c011cdf8a and set
everything up via the source builder at head
423d98d2058a7dac0921f9a13113b024696236b9 (so my state is from early June).
I have created the application image und started it up inside QEMU via the
U-Boot bootloader.
However, my application runs into a fatal error
(QORIQ_FATAL_FDT_NO_BUS_FREQUENCY) early on, and then gets stuck trying to
print (what I assume is) an error message (see the following stack trace):
```
(gdb) bt
#0 ns16550_polled_putchar (base=0x2001148 <qoriq_uart_context_0>, out=13 '\r')
at ../../../bsps/shared/dev/serial/ns16550-context.c:535
#1 0x0004f1e0 in rtems_putc (c=10 '\n') at
../../../cpukit/libcsupport/src/rtems_putc.c:49
#2 0x0004d264 in _IO_Vprintf (put_char=0x4f1a8 <rtems_put_char>,
arg=arg@entry=0x0, fmt=0x1004311 "%s\n",
fmt@entry=0x1004310 "\n%s\n", ap=ap@entry=0x2389e80
<_ISR_Stack_area_begin+7872>) at ../../../cpukit/dev/iovprintf.c:133
#3 0x00044e44 in vprintk (fmt=fmt@entry=0x1004310 "\n%s\n",
ap=ap@entry=0x2389e80 <_ISR_Stack_area_begin+7872>)
at ../../../cpukit/libcsupport/src/vprintk.c:45
#4 0x00040df4 in printk (fmt=fmt@entry=0x1004310 "\n%s\n") at
../../../cpukit/libcsupport/src/printk.c:41
#5 0x0003d410 in bsp_fatal_extension (source=RTEMS_FATAL_SOURCE_BSP,
always_set_to_false=<optimized out>, code=2561)
at ../../../bsps/shared/start/bspfatal-default.c:66
#6 0x0004cc90 in _User_extensions_Iterate (arg=arg@entry=0x2389f48
<_ISR_Stack_area_begin+8072>,
visitor=0x4cb88 <_User_extensions_Fatal_visitor>,
direction=direction@entry=CHAIN_ITERATOR_FORWARD)
at ../../../cpukit/score/src/userextiterate.c:194
#7 0x0004889c in _User_extensions_Fatal (error=2561,
source=RTEMS_FATAL_SOURCE_BSP)
at ../../../cpukit/include/rtems/score/userextimpl.h:467
#8 _Terminate (the_source=the_source@entry=RTEMS_FATAL_SOURCE_BSP,
the_error=the_error@entry=2561)
at ../../../cpukit/score/src/interr.c:55
#9 0x0003d0b8 in rtems_fatal (fatal_code=2561,
fatal_source=RTEMS_FATAL_SOURCE_BSP) at
../../../cpukit/include/rtems/fatal.h:160
#10 bsp_fatal (code=QORIQ_FATAL_FDT_NO_BUS_FREQUENCY) at
../../../bsps/include/bsp/fatal.h:222
#11 initialize_frequency_parameters () at
../../../bsps/powerpc/qoriq/start/bspstart.c:89
#12 bsp_start () at ../../../bsps/powerpc/qoriq/start/bspstart.c:178
#13 0x00047808 in rtems_initialize_executive () at
../../../cpukit/sapi/src/exinit.c:135
#14 0x0003c68c in boot_card (cmdline=<optimized out>) at
../../../bsps/shared/start/bootca
#15 0x0000412c in bsp_section_start_begin () at
../../../bsps/powerpc/qoriq/start/start.S:
```
I suspect that the flattened device tree is not being loaded correctly, which
also leads to the application not being able to push out characters to UART.
Further investigation went as follows:
During initialize_frequency_parameters() in bsps/powerpc/qoriq/start/bspstart.c
(https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/bsps/powerpc/qoriq/start/bspstart.c),
the first call to fdt_node_offset_by_prop_value() returns the negative node
integer -9, which, if I traced everything correctly, means I have run into the
error FDT_ERR_BADMAGIC, telling me I don't have a real device tree present at
all.
I then went a step back and followed the flow of
initialize_frequency_parameters() from the beginning, ending up in
bsp_fdt_get() of bsps/shared/start/bsp-fdt.c
(https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/bsps/shared/start/bsp-fdt.c).
At this point I found out that BSP_DTB_IS_SUPPORTED is not defined, as only the
array bp_fdt_blob exists and is accessed. This array is filled with the
pre-initialized `0xdeadbeef` values and does not contain any meaningful data.
My question is:
I fail to see the mechanism by which a real FDT should have been available at
this point. Is there a detail or some magic that I am missing here that would
make this work usually? I could not find any trace of any linker scripts or any
routines that are used to add content to the blob/array.
Kind Regards,
Daniel
_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users