Discussion:
Interrogation sur les profils ravenscar
(trop ancien pour répondre)
DrPi
2020-08-22 08:43:13 UTC
Permalink
Bonjour,

Je continue mes investigations sur le langage.
J'ai appris plein de choses en lisant un livre, et plein d'articles sur
le net.
J'ai expérimenté avec GPS sur Windows.
Maintenant, je veux mettre ce que j'ai appris en application sur une
plateforme ARM en utilisant un runtime créé à partir du code bb-runtime
d'Adacore.
Et là... patatra ! Rien ne va plus.
Les restrictions du profil Ravenscar font que je ne peux pas faire ce
que je veux.
Entre autres, pas de select = pas de timeout.
Un système embarqué sans timeout, c'est un système qui ne marche pas !
Comment une telle restriction est-elle possible ?
J'ai raté quelque chose ?

Nicolas
J-P. Rosen
2020-08-22 20:06:02 UTC
Permalink
Post by DrPi
Un système embarqué sans timeout, c'est un système qui ne marche pas !
Comment une telle restriction est-elle possible ?
J'ai raté quelque chose ?
Ravenscar est pour les systèmes à haute sécurité, où l'on exige en
particulier une prédicabilité totale des programmes. Un time-out
introduit un comportement non prédictible, donc c'est exclu.

Ravenscar n'est pas applicable (loin de là!) à tous les systèmes embarqués!
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr
DrPi
2020-08-23 10:11:35 UTC
Permalink
Post by J-P. Rosen
Post by DrPi
Un système embarqué sans timeout, c'est un système qui ne marche pas !
Comment une telle restriction est-elle possible ?
J'ai raté quelque chose ?
Ravenscar est pour les systèmes à haute sécurité, où l'on exige en
particulier une prédicabilité totale des programmes.
J'avais compris que les profils Ravenscar sont restrictifs pour pouvoir
prouver les programmes. Je n'avais pas compris ce que cela impliquait
vraiment (haute sécurité et prédictibilité totale).
Post by J-P. Rosen
Un time-out
introduit un comportement non prédictible, donc c'est exclu.
Effectivement, je comprends maintenant.
Post by J-P. Rosen
Ravenscar n'est pas applicable (loin de là!) à tous les systèmes embarqués!
En fait, lors de mes premières recherches, je suis rapidement tombé sur
les sources bb-runtime d'Adacore. A ce moment là, j'ai compris qu'il y
avait plusieurs profils correspondant à plusieurs niveaux de
fonctionnalités mais je n'avais pas compris le coté haute sécurité et ce
qui va avec.
Je n'ai pas trouvé d'autre implémentation pour microcontrôleur que celle
d'Adacore (à part celle dédiée aux chips AVR ?). Je suis donc parti dans
cette voie là.

Quelles sont mes options ?
Utiliser un autre runtime (que je ne connais pas) ?
Modifier les fichiers de configuration de bb-runtime pour générer un
runtime adapté à ce que je veux faire ?
J-P. Rosen
2020-08-24 05:12:09 UTC
Permalink
Post by DrPi
Je n'ai pas trouvé d'autre implémentation pour microcontrôleur que celle
d'Adacore (à part celle dédiée aux chips AVR ?). Je suis donc parti dans
cette voie là.
Quelles sont mes options ?
Utiliser un autre runtime (que je ne connais pas) ?
Modifier les fichiers de configuration de bb-runtime pour générer un
runtime adapté à ce que je veux faire ?
Un autre avantage de Ravenscar, c'est que le run-time est beaucoup plus simple.
Du coup, les implémentations pour micro-contrôleurs ne fournissent souvent que
Ravenscar, et pas un tasking complet.

Mais comme Ravenscar est vraiment très restrictif, d'autres profils sont possibles,
plus tolérants, mais permettant toujours un run-time simplifié.
En 202X, il y aura comme ça le profil Jarvik. AdaCore offre plusieurs profils "maison":
https://docs.adacore.com/gnat_ugx-docs/html/gnat_ugx/gnat_ugx/the_predefined_profiles.html#the-extended-ravenscar-profiles

Vérifie ce qui est disponible pour ton chip...
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr
DrPi
2020-08-24 21:38:32 UTC
Permalink
Post by J-P. Rosen
Post by DrPi
Je n'ai pas trouvé d'autre implémentation pour microcontrôleur que celle
d'Adacore (à part celle dédiée aux chips AVR ?). Je suis donc parti dans
cette voie là.
Quelles sont mes options ?
Utiliser un autre runtime (que je ne connais pas) ?
Modifier les fichiers de configuration de bb-runtime pour générer un
runtime adapté à ce que je veux faire ?
Un autre avantage de Ravenscar, c'est que le run-time est beaucoup plus simple.
Du coup, les implémentations pour micro-contrôleurs ne fournissent souvent que
Ravenscar, et pas un tasking complet.
Certes, mais il y a des applications où un runtime un peu plus gros et
implémentant plus de fonctionnalités serait plus adapté.
Ada permet d'améliorer la qualité du code. Mais si le runtime ne permet
pas d'en profiter, cela oblige à écrire du code plus complexe et donc
moins "sûr".
Post by J-P. Rosen
Mais comme Ravenscar est vraiment très restrictif, d'autres profils sont possibles,
plus tolérants, mais permettant toujours un run-time simplifié.
https://docs.adacore.com/gnat_ugx-docs/html/gnat_ugx/gnat_ugx/the_predefined_profiles.html#the-extended-ravenscar-profiles
Intéressant. Je vais investiguer de ce coté.
Post by J-P. Rosen
Vérifie ce qui est disponible pour ton chip...
Rien :(
Je modifie les sources de bb-runtime pour générer un runtime pour le
chip que j'utilise (un Kinetis de NXP).
Mais c'est très formateur :)

Merci pour les infos.

Loading...