RTEMS Pre-Qualification Status

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Sep 29 08:25:03 UTC 2020


Hello,

I would like to give a status report about the RTEMS pre-qualification 
activity and an outlook to the work ahead. Since my last report in July 
this year

https://lists.rtems.org/pipermail/devel/2020-July/060566.html

a lot happened in the RTEMS Project. The RTEMS specification repository 
is now included in the set of RTEMS Project repositories:

https://lists.rtems.org/pipermail/devel/2020-July/060914.html

One goal of the RTEMS specification is to establish a centralized data 
set which can be used to generate source code and documentation sources 
for the referenced modules (RTEMS sources and documentation).

The RTEMS 5.1 release in August

https://lists.rtems.org/pipermail/users/2020-August/067811.html

made it possible to integrate the first bigger chunks of work resulting 
from the pre-qualification activity.

Firstly, the new build system was integrated:

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

The development of the new build system started in August 2019 and was 
basically finished in November 2019. The new build system uses 
specification items which can be re-used in the RTEMS pre-qualification 
activity:

https://docs.rtems.org/branches/master/eng/req/items.html#spectypebuilditemtype

Secondly, two new directives are now available: rtems_task_construct() 
and rtems_message_queue_construct(). The key feature of these two 
directives is that they use user-provided instead of system-provided 
storage to construct the object. This makes it possible to build 
applications which use only statically allocated storage and do not use 
the RTEMS Workspace. This helps to implement the so called space profile 
subset of RTEMS. The space profile was determined by a user survey last 
year:

https://lists.rtems.org/pipermail/users/2019-March/032977.html

The specification, validation, and documentation of these two new 
directives is still incomplete, however, they already give a proof of 
concept of the specification work flow. For example, the Doxygen markup 
and the declarations in the header files are generated from the 
specification. The error cases are specified by action requirements and 
the generated test cases are included in the RTEMS sources along with a 
general purpose validation test suite:

https://git.rtems.org/rtems/tree/testsuites/validation

Thirdly, the first header and documentation files generated from the 
specification are included in the RTEMS sources:

https://git.rtems.org/rtems/tree/cpukit/include/rtems.h#n38

https://git.rtems.org/rtems/tree/cpukit/doxygen/appl-config.h#n31

What are the next steps?

The API defined by <rtems.h> is already fully specified and I can build 
RTEMS and all tests with it. What is missing are the documentation parts 
included in the interface specification. Once this information is 
available in the specification items, we can generate the header files 
with Doxygen markup and the Sphinx documentation sources for the manuals 
from the same data set. For this I have to review the existing 
documentation in the header files and the documentation sources and 
consolidate the information in the corresponding specification items. I 
completed this work already for the Event Manager and the IO Manager and 
will it send soon for review to the RTEMS mailing list. I hope to have 
all managers converted by the end of the year.

Parallel to the interface specification and documentation we work on the 
functional specification of the interfaces and the validation tests. 
This will mostly result in new test cases and test suites.

There are some topics left for the RTEMS Software Engineering manual. We 
had some discussions about the use of static analysis tools in RTEMS. I 
think the results of the discussion should be added to a new chapter or 
section. We should discuss if, which, and how code quality metrics can 
be used in the RTEMS Project.



More information about the devel mailing list