Documentation of Qualification Toolchain?
Chris Johns
chrisj at rtems.org
Thu Jun 25 08:05:05 UTC 2020
On 25/6/20 3:26 pm, Sebastian Huber wrote:
> 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
Ah OK. We need to make some choices and get something more formal in
place. Stray links to things that will change does not help anyone.
>> 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.
Yes rtems-central is nice but is this a place a user will come to and use?
>> 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).
>
Great. I think what you have explained would benefit the development of
RTEMS and so I think this is something we should look at promoting as a
development tool.
>> 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.
We have a number of repositories that have links in them and I am
wondering if the 'external' directory in your repo be renamed 'sources'
or something like that so in time we can add more of our source repos. I
am wondering if this would aid our management of these separate repos, a
sort of "one repo to rule them all". Doing this may expose any
submodules complexities that may exist.
I raised this because it was mention in last years flight software
workshop. I can follow it up if you like.
Chris
More information about the devel
mailing list