Documentation of Qualification Toolchain?

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Jun 25 05:26:36 UTC 2020


On 24/06/2020 02:48, Chris Johns wrote:

> On 19/6/20 11:38 pm, Sebastian Huber wrote:
>> the qualification toolchain in
>>
>> https://git.rtems.org/sebh/rtems-qual.git/
>>
>> needs a bit of documentation. For a start, I propose to add it to the 
>> RTEMS Software Engineering manual.
>
> Does this mean adding references to that repo?

Yes, I already added a how-to section for the glossary of terms:

https://docs.rtems.org/branches/master/eng/req/howto.html

>
> I am not comfortable with the name of the repo and documenting a 
> personal repo is something we should avoid.
Yes, the name is not great. I think your proposal to name it 
rtems-central was a bit better. Another option is rtems-spec.
>
> I see the name rtems-qual.git as the project or outcome name that is 
> currently undersay and not what it is. If a core developer does not 
> need to use this repo to maintain RTEMS and that work can be qualified 
> what role does it perform? If it is simpler and easier for a core 
> developer to use this repo then this is not about qualification it is 
> about development of RTEMS that can be qualified.
>
> I would like to understand the intended workflow for this repo. Is 
> something we should promote as the developer workflow? If so we should 
> consider embracing this. For example the glossary generation. Editing 
> by hand the generated output does not make sense to me.
>

The stuff in this repository is already somewhat useful to maintain 
RTEMS. You can generate the glossary of terms for individual documents 
from a shared collection of terms. In the RTEMS Classic API Guide the 
project-wide glossary is located, other documents only include the terms 
they use in their glossary. All the application configuration options 
are available as specification items:

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

All the sections about application configuration options in the RTEMS 
Classic API Guide are generated from them. With a bit of work, we could 
also generate pages for the Doxygen documentation. The tool chain 
supports context-sensitive substitution. In the specification a 
${uid:attribute/path} syntax is used. For example:

   * The ${../attr/multiprocessor-resource-sharing:/name} attribute 
selects the
     MrsP locking protocol in SMP configurations, otherwise it selects the
     priority ceiling protocol.  For this locking protocol a priority 
ceiling
     shall be specified in ``${.:/params[3]/name}``.  This priority is 
used to set
     the priority ceiling in all scheduler instances.  This can be 
changed later
     with the ${set-priority:/name} directive using the returned semaphore
     identifier.

In the Sphinx output this is transformed to:

     * The RTEMS_MULTIPROCESSOR_RESOURCE_SHARING attribute selects the MrsP
       locking protocol in SMP configurations, otherwise it selects the 
priority
       ceiling protocol.  For this locking protocol a priority ceiling 
shall be
       specified in ``priority_ceiling``.  This priority is used to set the
       priority ceiling in all scheduler instances.  This can be changed 
later
       with the :ref:`rtems_semaphore_set_priority()
       <InterfaceRtemsSemaphoreSetPriority>` directive using the returned
       semaphore identifier.

In the Doxygen output this is transformed to:

  * * The #RTEMS_MULTIPROCESSOR_RESOURCE_SHARING attribute selects the MrsP
  *   locking protocol in SMP configurations, otherwise it selects the 
priority
  *   ceiling protocol.  For this locking protocol a priority ceiling 
shall be
  *   specified in ``priority_ceiling``.  This priority is used to set the
  *   priority ceiling in all scheduler instances.  This can be changed 
later
  *   with the rtems_semaphore_set_priority() directive using the returned
  *   semaphore identifier.

I work currently on a complete specification of the RTEMS Classic API.

The tool chain has also support for test plan and code generation. I 
plan to specify the functionality of the RTEMS directives through so 
called action requirements:

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

This can be used to generate table based test loops to check all states 
of pre-conditions and post-conditions (see attached file).

> I have a concern about the long term maintenance of a git repo of git 
> repos. I know of a project that have developed tools to handle 
> something like this because it is hard to do manually. Maybe we should 
> find out more about this.
Which long term maintenance issues do you see? Working with Git 
submodules can be a bit annoying, however, the rate of change will not 
be that high in this project.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: tc-task-ident.c
Type: text/x-csrc
Size: 14950 bytes
Desc: not available
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200625/8dcc7fb5/attachment-0001.bin>


More information about the devel mailing list