Hello Chris,

Am 23.06.21 um 10:41 schrieb Chris Johns:
Hi Christian,

Thanks for the reply.

My uboot SD card does not have any FDT blobs so this is the reason for the
failure. We seem to now have a dependency on an FDT. I have played a bit and
found the cause of the error:

https://git.rtems.org/rtems/tree/bsps/shared/ofw/ofw.c#n86

I have no problem with the FDT being used in RTEMS but I do have some concerns
about how we handle things. A hard error here is a bit abrupt and maybe just not
having the drivers installed and available would be a better solution. An app
will fail when the driver does not exist. On the other hand a hard error is fine
if we packaged the FDT blob in the executable, something we currently do not do.

The big advantage of the FDT is that we can support multiple Beagle variants without problems. Big disadvantage is that we need the FDT.

With the current direction, sooner or later (or maybe already implemented) the BSP will also get the information for the serial interface from the FDT. As soon as that happens, it won't be really possible to start a useful application without the FDT.

What would be alternative approaches? We could continue to add special cases in the code for variants. Or we could basically write a similar source of information like the FDT. In that case most likely it would be the better idea to write a minimal FDT that is linked into the BSP.


I think we should consider the single executable approach to handling FDT blobs,
that is embedding the blob into RTEMS. This is not something we can reach in a
simple single step plus we have the licensing issue but I feel we can make it
happen.

It's really quite easy to embedd a DTB into the executables. Difficult part is compiling the FDT to a DTB. After that it's only using rtems_bin2c to convert it into a c file and return a pointer to that array in bsp_fdt_get().

Disadvantage (beneath licensing) of a FDT blob in the binary is that the binary then is fixed for one beagle variant. If the FDT is separate, the same binary works for pocketbeagle or BBB. But that's only a small disadvantage. It only means that we need more variants.


The first step I am looking at is the building of the FDT source with includes.
A command in the rtems-tool that is installed would be a good first step. The
FreeBSD script is a good base but it is all a bit awkward to get to and use.

I agree that this would be a great improvement. We could use that kind of tool regardless what solution we find.

I think the big problem with FDTs is that they can have difficult licenses. GPL is the most prominent example and it's the case for a lot of FDTs based on the Linux sources. But it could also be a blob with some odd vendor license generated by some toolchain (for example for FPGA / CPU combo chips like Zynq).

Possible approaches are:

1) Do something similar like FreeBSD: Add a "GPL" or maybe rather a "other licenses" subdirectory to RTEMS and collect FDTs there. We could put a defined FreeBSD FDT export, special blobs or similar into that directory. A BSP can then generate (for example with your planned tool) the matching blob from these sources and provide it as a separate file in the default case. Alternatively a BSP option with a clear name (like "BSP_I_WANT_TO_INTEGRATE_GPL_LICENSED_FDT_BLOB_INTO_THE_BINARY") could link it directly into the binary.

2) Keep the FDTs with odd licenses in a separate repo or on an FTP. That won't allow to link them into the binaries but it would keep the tree clean of other licenses.

From my point of view, the first one would be an OK solution - at least if no one finds a better one. It would need a good structure and a good idea how to make it absolutely clear that the code is not RTEMS licensed. Beneath that it would need clear rules that it is _only_ for FDT so that we avoid getting other non-RTEMS-licensed code there too. But it should be somehow possible and it would simplify the handling for the user.

Best regards

Christian


Chris

On 23/6/21 5:10 pm, Christian Mauderer wrote:
Hello Chris,

there is no new requirement that I know of. The driver should parse the same FDT
fields that have been parsed by libbsd earlier. It only want's to avoid the
double initialization that had been done by RTEMS and libbsd.

But there is a simple method how we can find out whether it's FDT related:
Please try the dtb that I normally use:

     https://nc.c-mauderer.de/index.php/s/JntMtLrE2GpH2Xf

That FDT is build from the FreeBSD sources from that revision:


https://github.com/freebsd/freebsd-src/tree/19a6ceb89dbacf74697d493e48c388767126d418


Note: I don't think that using that FDT is a solution. It's just to find out
whether it's the problem. A solution would be to find a method how we can
distribute matching FDTs with various licenses.

Best regards

Christian

On 23/06/2021 07:24, Chris Johns wrote:
I have bisect'ed the failure and this is the commit that is the problem:

https://git.rtems.org/rtems/commit/?id=56074644a733ecc984722da2a1b61736275270c0

Hmmmmm.... Is there a new requirement on the needed FDT for a beagleboneblack.

Chris


On 23/6/21 2:52 pm, Chris Johns wrote:
Hi,

hello.exe is not running. Any hints?

master at ...

https://git.rtems.org/rtems/commit/?id=b47dbbc5f7c8518634c7c5fccd57d78c65444f2d

config.ini:
[DEFAULT]
BUILD_TESTS = False
RTEMS_DEBUG = True
RTEMS_POSIX_API = True

[arm/beagleboneblack]
BUILD_TESTS = True

output:

RTEMS Beagleboard: am335x-based
          ARM Debug: 0x4b141000

*** FATAL ***
fatal source: 1 (INTERNAL_ERROR_RTEMS_API)
fatal code: 22 (0x00000016)
RTEMS version: 6.0.0.4977dc74c60e75b90fe8dd72e4dedafd55d70c73
RTEMS tools: 10.3.1 20210409 (RTEMS 6, RSB
4e6dc6431435821a534da6307e72ecbd7e42b82a, Newlib 0c0f3df)
executing thread ID: 0x089010001
executing thread name: IDLE

Chris
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


--
--------------------------------------------
embedded brains GmbH
Herr Christian MAUDERER
Dornierstr. 4
82178 Puchheim
Germany
email: christian.maude...@embedded-brains.de
phone: +49-89-18 94 741 - 18
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to