On 01/06/2020 20:55, Niteesh G. S. wrote:
On Fri, May 29, 2020 at 6:49 PM Sebastian Huber
<sebastian.hu...@embedded-brains.de
<mailto:sebastian.hu...@embedded-brains.de>> wrote:
On 29/05/2020 12:41, Niteesh G. S. wrote:
Hello Sebastian,
> Hello,
>
> On Fri, May 29, 2020 at 12:52 PM Sebastian Huber
> <sebastian.hu...@embedded-brains.de
<mailto:sebastian.hu...@embedded-brains.de>
> <mailto:sebastian.hu...@embedded-brains.de
<mailto:sebastian.hu...@embedded-brains.de>>> wrote:
>
> Hello,
>
> since this code is not BSP-specific it should be located in
> cpukit. How
> many FreeBSD source files do you intend to import within
this project?
>
>
> This code depends on a bsp that has FDT support. We first
imported it to
> cpukit but then decided to move it to bsps/shared since we
weren't able to
> import BSP related files (bsp/fdt.h in this case) from cpukit.
Please think about how BSP dependencies can be avoided since this
will
also allow us to write unit tests for this infrastructure. One
option is
to add an API to register the device tree. BSPs which have a
device tree
do this before the API is used. Unit tests override the device
tree to
run the test cases.
From what I understood, the API will have the responsibility to
provide all objects
which will be used by the FreeBSD source. In the current case, it is
the DTB.
During testing, we override the DTB that will be supplied by the BSP
with a custom
one like the one in libfdt test. Please correct if I misunderstood it.
Can you please provide some pointers on how to implement one? Or
please point
to sources of something similar if available.
I can think of a really simple design where the API holds a reference
to the FDT blob
which it gets through the register function. Under normal operation,
the BSP will register
the FDT during start up. And while testing just the before running the
test we can override
the FDT reference by again registering with a custom FDT blob. But I
don't think this
would scale well in the future. So, please mention about the design
and implementation
of the API.
I think your proposed approach is fine in general.
The goal should be to move this stuff to cpukit and add tests for it to
the standard test suite (for example testsuites/libtests/devicetree*).
An alternative to registering a pointer would be to define a provider
function (currently this is bsp_fdt_get()). Tests can use a wrapper
function with support from the linker:
const void *test_device_tree;
const void *__wrap_bsp_fdt_get(void)
{
if (test_device_tree != NULL) {
return test_device_tree;
}
return __real_bsp_fdt_get();
}
This approach avoids the need to actively register a device tree. This
could simplify the low level startup a bit. The draw back is that it
needs a special feature of the linker for the tests.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel