Brevet FR3068149A1 — publié le 20181228

L'invention concerne le domaine de la gestion d'une pile d'un microprocesseur. Elle a plus particulièrement pour objet un procédé de surveillance de l'espace libre d'une pile d'un microcontrôleur pendant l'exécution d'un processus. Dans le cas de systèmes embarqués, temps réel, ceux-ci doivent répondre à des contraintes de conception permettant de répondre aux besoins, tout en limitant les surcoûts. Ainsi, ces systèmes ont souvent un espace mémoire limité et des puissances de calculs optimisées pour l'exécution de tâches prédéfinies. Généralement, ces systèmes répondent aussi à des contraintes de sureté de fonctionnement, étant dits critiques, pour lesquelles ils ne doivent pas subir de défaillance, c'est-à-dire toujours permettre d'obtenir des résultats justes, pertinents, et ce dans les délais attendus. La plupart des microprocesseurs de systèmes embarqués gèrent nativement une pile par processus (c'est-à-dire un programme en cours d'exécution). Cette dernière correspond à une zone d'une mémoire volatile, ladite zone étant limitée en taille, habituellement déterminée au début du programme. Une pile est allouée à l'exécution d'un processus et sert particulièrement à gérer les appels de sous-programmes, le passage des paramètres et les variables. La taille de la pile d'exécution dépend de nombreux facteurs, incluant le langage de programmation, l'architecture du processeur, la quantité de mémoire vive (ou RAM pour « Random Access Memory » en langue anglaise) disponible, etc. Un dépassement de pile (en anglais, « stack overflow ») est une anomalie de fonctionnement causée par un processus qui, lors de l'écriture dans une pile, écrit à l'extérieur de l'espace alloué à la pile, écrasant ainsi des informations nécessaires au processus. Il en résulte généralement une interruption du programme. Pour éviter de telles situations problématiques, lors de la conception d'un système embarqué, on utilise de façon connue, des calculs théoriques évaluant la quantité de mémoire consommée dans les cas d'exécutions de processus correspondant à des scénarios théoriques limites. Ces scénarios amènent le plus souvent à largement surestimer la taille de pile nécessaire, entrainant un surcout de conception. On connait également des méthodes de détection de capacité d'une pile 100 comme illustrée en figure 1. Dans de telles méthodes, une clé 110/120 (valeur numérique, chaines de caractères) est initialisée à chaque extrémité de la pile. Au cours de l'exécution d'un processus utilisant la pile 100, il est déterminé si les clés 110 et/ou 120 ont été atteintes en vérifiant que les clefs sont toujours présentes à chaque extrémité de la pile. Dans le cas contraire, le processus est réinitialisé pour récupérer un 2 état d'exécution du processus connu et sûr, afin d'éviter des comportements inattendus du système. Cependant une telle méthode perturbe l'exécution en cours du processus. 5 Il existe donc un besoin de proposer un procédé permettant d'estimer la taille optimale d'une pile de façon précise, peu consommatrice de ressources processeur, pour permettre une gestion optimale des ressources mémoires, notamment dans le cas de systèmes embarqués ou lesdites ressources sont particulièrement limitées. La présente invention se rapporte selon un premier aspect à un procédé de 10 surveillance de l'espace libre d'une pile d'un microcontrôleur, dans lequel ledit procédé comprend : - dans une étape préalable, l'écriture de N clés dans la pile à N adresses de ladite pile, l'espace mémoire entre deux clés consécutives étant décroissant dans une direction allant de l'adresse de début à l'adresse de fin de la pile ; 15 - dans une étape d'exécution du processus, la sauvegarde de l'adresse de la clé courante, correspondant à l'adresse de la clé existante, parmi les N clés, la plus proche de l'adresse de début de pile. Ledit procédé permet donc de suivre l'occupation de la pile, de façon optimale, le nombre de clés étant plus important en fin de pile qu'en début. De plus, ce 20 procédé de surveillance ne consomme pas plus de ressources processeur que le procédé standard décrit ci-dessus. Avantageusement, mais facultativement, le procédé selon l'invention peut en outre comprendre au moins une des caractéristiques suivantes : - le procédé comporte l'écriture de deux clés à chaque extrémité de la pile ; 25 - depuis une adresse prédéfinie d'une première clé A(1) l'adresse de la i-ième clé, , i variant de 2 à N, est égale à la partie entière de (2i-1-1 - x uS'S - (A(1)- SSA)) 2L-1 où SS est égal à la taille de la pile, SSA l'adresse de départ de la pile. Le procédé comprend une étape consistant à comparer l'adresse de la clé courante à l'adresse d'une clé maximum correspondant à une adresse de la pile, et dans 30 le cas où l'adresse de la clé courante est plus proche de l'adresse de fin, que l'adresse de la clé maximum, l'index de ladite clé maximum prend pour valeur l'index de la clé courante ; - l'index de la clé maximum est stockée dans une zone mémoire, non volatile ; - les adresses des clés sont stockées dans un tableau de données ; et 35 - un index du tableau de données correspond à une adresse de clé. 3 Selon un deuxième aspect, l'invention concerne un produit programme d'ordinateur destiné à être exécuté par des moyens de traitement d'une unité de calcul, ladite unité de calcul comprenant en outre une mémoire, et configuré pour la mise en oeuvre du procédé tel que défini dans les caractéristiques précédentes. 5 D'autres caractéristiques et avantages apparaîtront à la lecture de la description qui va suivre d'un mode de réalisation. Cette description sera donnée en référence aux dessins annexés dans lesquels : - la figure 1, déjà présentée, illustre schématiquement une pile d'un microprocesseur selon un mode de mise en oeuvre de l'art antérieur ; 10 - la figure 2 illustre schématiquement une pile d'un microprocesseur selon un mode de mise en oeuvre de l'invention ; et - la figure 3 illustre schématiquement un procédé de contrôle de l'espace libre d'une pile d'un microcontrôleur pendant l'exécution d'un processus selon un mode de réalisation de l'invention. 15 La figure 2 illustre une pile 200 d'un microcontrôleur telle que mise en oeuvre selon un mode de réalisation de l'invention. La pile 200 est définie dans une mémoire vive M par une adresse de départ 211 et une adresse de fin 212 de la pile 200. Lors de l'exécution d'un processus utilisant la pile 200, un procédé de surveillance de l'espace libre de ladite pile 200 permet de surveiller l'utilisation de l'espace 20 mémoire. En référence à la figure 3, il est illustré des étapes d'un tel procédé de surveillance. Dans une étape E10, dit d'initialisation, préalable à l'exécution du processus, la pile étant vide, une pluralité N+2 de clés K, (en considérant 0i 1 et T Linf (1) = SS et TLsup(1) = A(1) - S SA. 10 En conséquence, par la mise en oeuvre de ce procédé de surveillance, il est possible de déterminer avec précision une quantité maximum de mémoire consommée lors par exemple des phases de conception d'un système embarqué. La taille de la pile pourra donc être définie de manière optimale. De plus, l'utilisation d'un tel procédé consomme peu de ressources processeur, permettant l'emploi de ces ressources pour 15 d'autres REVENDICATIONS1. Procédé de surveillance de l'espace libre d'une pile d'un microcontrôleur pendant l'exécution d'un processus utilisant des espaces de ladite pile depuis une adresse de début à une adresse de fin de la pile, dans lequel ledit procédé est caractérisé en ce qu'il comprend : - dans une étape préalable, l'écriture de N clés dans la pile à N adresses de ladite pile, l'espace mémoire entre deux clés consécutives étant décroissant dans une direction allant de l'adresse de début à l'adresse de fin de la pile ; - et en ce que dans une étape d'exécution du processus, la sauvegarde de l'adresse de la clé courante, correspondant à l'adresse de la clé existante, parmi les N clés, la plus proche de l'adresse de début de pile. 2. Procédé de surveillance de l'espace libre d'une pile selon la revendication précédente, caractérisé en ce que depuis une adresse prédéfinie d'une première clé A(1), l'adresse de la i-ième clé, i variant de 2 à N, est égale à la partie entière de (2L-1-1 x (SS - (A(1) - SSA)) , où SS est égal à la taille de la pile, SSA l'adresse de 2L-1 départ de la pile. 3. Procédé de surveillance de l'espace libre d'une pile selon la revendication précédente, caractérisé en ce que ledit procédé comporte l'écriture de deux clés à chaque extrémité de la pile. 4. Procédé de surveillance de l'espace libre d'une pile selon l'une des revendications précédentes, caractérisé en ce que le procédé comprend une étape consistant à comparer l'adresse de la clé courante à l'adresse d'une clé maximum correspondant à une adresse de la pile, et dans le cas où l'adresse de la clé courante est plus proche de l'adresse de fin que l'adresse de la clé maximum, l'adresse de ladite clé maximum prend pour valeur l'adresse de la clé courante. 5. Procédé de surveillance de l'espace libre d'une pile selon la revendication précédente, caractérisé en ce que l'adresse de la clé maximum est stockée dans une zone mémoire, non volatile. 6. Procédé de surveillance de l'espace libre d'une pile selon l'une des revendications précédentes, caractérisé en ce que les adresses des clés sont stockées 30 dans un tableau de données. 7 7. Procédé de surveillance de l'espace libre d'une pile selon la revendication précédente, caractérisé en ce qu'un index du tableau de données correspond à une adresse de clé. 8. Produit programme d'ordinateur, destiné à être exécuté par des moyens de 5 traitement d'une unité de calcul, ladite unité de calcul comprenant en outre une mémoire, et ledit programme étant caractérisé en ce qu'il est configuré pour la mise en oeuvre du procédé tel que défini dans les revendications 1 à 6.