Brevet FR2824156A1 — publié le 20021031

produite par un générateur de valeurs aléatoires (18). La présente invention concerne un système électronique à mémoire accessible en écriture et un procèdé de commande d'un tel système. On utilise de nos jours de nombreux systèmes électroniques dans lesquels peuvent être stockées des informations diverses. Le stockage des informations est réalisé dans des mémoires, comme par exemple des mémoires mortes (accessibles seulement en lecture, usuellement mémoires ROM pour Read-Only-Memory en anglais) ou des mémoires vives (accessibles en lecture et écriture, usuellement RAM pour Random-Access o Memory) qui sont en général des dispositifs à semi-conducteurs. Les informations doivent naturellement être stockées de manière org an isée afin d'y avoir accés par la suite de façon ration nelle et c'est pourquoi on prévoit notamment une partition de la mémoire en différentes zones juxtaposées, chaque zone comprenant des données accessibles pour une des fonctions du système. Par zones juxtaposées, on entend deux zones dont les adresses d'acciés en lecture ou écriture se suivent. Dans le cas d'une mémoire accessible en écriture, le système écrit dans chaque zone selon les besoins de chaque fonction. Il peut alors arriver que des débordements se produisent, c'est-à-dire que le système écrive une o si grande quantité de données dans une certaine zone qu'une partie des données est en fait écrite sur la zone voisine. Ceci se produit notamment lorsqu'un des procédés de commande du système écrit des informations sans tenir compte de la limitation en taille de la zone correspondante. De tels débordements peuvent avoir des conséquences graves sur le système, par exemple quand la zone voisine mentionnée ci-dessus comprend des données importantes pour son fonctionnement: on peut aller jusqu'à un blocage du système qui nécessite sa mise hors tension momentanée pour retrouver un fonctionnement normal. Afin d'éviter de telles conséquences, I'invention propose un so système électronique comprenant une mémoire accessible en écriture divisée en au moins une première zone et une deuxième zone juxtaposées, dans lequel la première zone comporte une partie déterminée juxtaposce à la deuxième zone, et qui comprend des moyens de contrôle périodique des données stockées dans ladite partie déterminée. Avantageusement, des moyens d'allocation de la première zone écrivent un motif dans ladite partie déterminée. Les moyens de contrôle comparent les données stockées dans ladite partie déterminée au motif. L'invention propose également un procèdé de commande d'un système électronique comprenant une mémoire accessibie en écriture divisée en au moins une première zone et une deuxième zone juxtaposée à s la première zone, qui comprend une étape périodique de contrôle des données stockées dans une partie déterminée de la première zone, ladite partie déterminée étant juxtaposee à la deuxième zone. Selon des caractéristiques avantageuses: - la première zone est utilisée par un procèdé-utilisateur et les o donnses stockées dans ladite partie déterminée sont écrites lors d'une étape d'allocation de la première zone au procèdé-utilisateur; - I'étape de contrôle comprend une étape de comparaison des données stockées dans ladite partie déterminée à des données préalablement écrites dans ladite partie déterminée. L'invention propose ainsi un procèdé de commande d'un système électronique comprenant une mémoire accessible en écriture divisee en au moins une première zone et une deuxième zone juxtaposée à la première zone, qui comprend les étapes suivantes: - écriture d'un motif dans une partie de contrôle de la première o zone, la partie de contrôle étant juxtaposée à la deuxième zone; - comparaison périodique des données stockées dans la partie de contrôle au motif. De façon préférée, une procèdure d'initialisation est lancée en cas de comparaison négative. De manière générale, I'invention propose un procèdé de commande d'un système électronique comprenant une mémoire accessible en écriture, qui comprend les étapes suivantes: - écriture d'un motif dans une partie de contrôle de la mémoire; - comparaison périodique des données stockées dans la partie de contrôle au motif. La description qui suit sera faite en référence aux dessins annexés dans lesquels: - la figure 1 représente les éléments principaux d'un décodeur numérique; - la figure 2 est un organigmme d'une routine d'allocation selon les enseignements de l'invention; - la figure 3 est un organigramme d'une routine de contrôle proposee par l'invention Le décodeur numérique dans lequel est mise en _wre l'invention comporte un processeur 3 qui réunit une unité centrale 4 (parfois dénommé s CPU selon la terminologie anglo-saxonne Central Processing Unit), un décodeur vidéo 5, qui traite les données numériques reçues par le décodeur afin de les convertir en signal à destination d'un afficheur (par exemple signal composite), et un contrôleur OSD 6, qui permet au décodeur de superposer au signal vidéo reçu un signal vidéo créé par le décodeur, par o exemple des textes et des icônes (OSD signifie On-Screen Display: affichage sur écran). L'unité centrale 4 a accés à une mémoire morte 2 et à une mémoire volatile propre 1. L'ensemble des éléments du processeur 3, à savoir l'unité centrale 4, le décodeur vidéo 5 et le contrôleur OSD 6, ont accés à une mémoire partagée 7 accessible en écriture par ces différents éléments. Dans la suite, qui concerne essentiellement la mémoire partagée 7, on se réfère à cellei simplement par le terme mémoire. Sur la figure 1, les traits pleins représentent des chemins de données externes au processeur 3 et les traits pointillés des chemins de o données internes au processeur 3. La mémoire 7 est utilisée par différents éléments et procèdés du système sous le contrôle des tâches logicielles associées à ces procèdés. Par une évaluation des besoins en taille-mémoire des différents procèdés, on détermine la quantité de mémoire allouée aux différentes fonctions des tâches logicielles. Le tableau suivant indique un exemple d'attribution de mémoire pour chaque fonction indiquée par sa dénomination anglo-saxonne. Operating System Heap 40 Koctets i Operating System Stack 10 Koctets On Screen Buffer 256 Koctets Video Buffer 2048 Koctets Low Level Software Heap 40 Koctets Low Level Software Stack 10 Koctets High Level Software Heap 40 Koctets High Level SoRware Stack 10 Koctets High Level Software Runnable 700 Koctets On peut remarquer que l'ensemble des procédés n'est pas géré par le même logiciel: on distingue notamment logiciel bas niveau (low level softwere) et logiciel haut niveau (high /evel soffware), qui peuvent être réalisés par des programmeurs différents. Le système doit pouvoir fonction ner de man ière correcte indépend amment de la man ière dont sont gérés les procèdés par les différents logiciels et donc même dans le cas o ces derniers conduisent à des débordements entre zones mémoire. Chaque zone de mémoire est allouée physiquement à une tâche logicielle lorsque celle-ci appelle une routine dédiée (détaillée ci-dessous) en o indiquant la taille mémoire souhaitee. Une telle routine d'allocation mémoire est représentée à la figure 2. Comme indiqué précèdemment, I'appel de la routine d'allocation est réalisé par la tâche logicielle qui devra utiliser la zone de mémoire. Cette tâche logicielle sera dénomée par la suite procèdé-utilisateur de la zone de mémoire. Lors de l'appel, le nombre N d'octets requis par le procèdé- utilisateur est transmis. Le premier octet disponible dans la mémoire 7 au moment de o l'appel est stocké dans un registre A(i), par exemple dans la mémoire volatile propre 1. (Lors de l'initialisation du système, i est remis à 0 et A(0) pointe sur le début de la mémoire 7.) La routine d'allocation va d'abord vérifier qu'elle peut réaliser l'opération d'allocation, à savoir que la mémoire 7 contient assez d'octets s disponible lors de l'appel pour répondre à la demande du procèdé-utilisateur Pour ce faire, elle vérifie que le dernier octet à attribuer [A(i)+m+N-1] ne pointe pas en dehors de la mémoire 7. m correspond à la longueur (en octets) des motifs utilisés comme décrit dans la suite. S'il y a dépassement mémoire, la routine se termine en renvoyant so un statut d'erreur au procèdé-utilisateur qui saura ainsi que la zone requise n'a pas été correctement allouée. S'il n'y a pas dépassement mémoire, un motif M(i) de m octets est écrit à l'adresse A(i). Ce motif peut être une série d'octets prédeterminée, une série déterminée de manière aléatoire ou par un procèdé déterministe (par exemple M(i)=i). Le motif M(i) est stocké, par exemple dans la mémoire volatile propre 1, afin d'être utilisé par la routine de contrôle décrite ci- dessous. Da ns le cas d'u ne déterm in ation par p rocèdé déterministe, le motif n'est pas nécessairement stocké puisqu'il peut être récupéré par la routine de contrôle par le même procédé déterministe. Le motif peut être le même pour toutes les valeurs de i. La routine calcule également le premier octet disponible après la zone allouée au procèdé-utilisateur A(i+1) = A(i)+m+N. L'allocation étant réalisée, la routine incrémente la valeur de i (i = i+1) et rend la main au procèdé-utilisateur en lui renvoyant: - un statut de réalisation correcte (OK); - la valeur A(i-1)+m qui correspond au premier octet de la zone o allouée utilisable par le procèdé-utilisateur (les premiers m octets de la zone étant réservés au moti0; - la taille m du motif; I'adresse A(i-1) du motif; - I'adresse de fin de la zone incrémentée de 1 octet: A(i). s Dans l'exemple indiqué ciessus, la mémoire 7 sera donc partitionnée comme suit lorsque toutes les fonctions indiquées aura fait appel à la routine d'allocation: Motif 0 M(0) 8 octets Operating System Heap 40 Koctets Motif 1 M(1) 8 octets Operating System Stack 10 Koctets Motif 2 M(2) 8 octets On Screen Buffer 256 Koctets Motif 3 M(3) 8 octets Video Buffer 2048 Koctets Motif 4 M(4) 8 octets Low Level Software Heap 40 Koctets Motif 5 M() 8 octets Low Level Software Stack 10 Koctets Motif 6 M(6) 8 octets High Level Software Heap 40 Koctets Motif 7 M(7) 8 octets High Level Software Stack 10 Koctets Motif 8 M(8) 8 octets High Level SoNware Runnable 700 Koctets La mémoire 7 comprend donc un ensemble de zones juxtaposéss constituées chacune d'une partie de contrôle de m octets (ici m=8) qui contient le motif M0) et d'une partie utilisable par le procèdé-utilisateur associé. Avec les notations précèdentes, les parties de contrôle sont situées aux adresses A0) et les parties utilisables aux adresses [A0)+m]. On peut remarquer que la partie de contrôle et la partie utilisable ne sont pas nécessairement situées dans l'ordre indiqué dans l'exemple décrit ici. En effet, la partie de contrôle qui contient le motif M0) pourrait très bien être réalisée à la fin de la zone correspondante. o Dans tous les cas, la partie de contrôle de chaque zone (sauf pour la zone comprenant le motif M(0) dans l'exemple ci-dessus) est juxtaposée à la zone voisine. Dans le détail, les premières zones contiennent par exemple les données suivantes (en hexadécimal pour l'adresse et la valeur): Partie de mémoire Taille Adresse Valeur Motif 0 M(0) 8 0 0xC0000000 0001020304050607 Operating System Heap 40 Ko 0xC0000008 Vide Motif 1 M(1) 8 o 0xCOOOA008 08090AOBOCODOEOF Operating System Stack 10 Ko 0xCOOOA010 Vide Motif 2 M(2) 8 0 0xCOOOC810 1011121314151617 On Screen Buffer 256 Ko 0xCOOOC818 Vide s En cas de débordement d'une zone, par exemple lorsque le signal vidéo en entrée contient trop d'erreurs et qu'alors le décodeur vidéo inscrit des données au-delà de la zone '\/ideo Buffer" qui lui est réservée, de nouvelles données sont inscrites dans la partie de contrôle juxtaposée à cette zone et le motif de cette partie de contrôle (motif M(4) dans l'exemple o pris) est écrasé. L'écrasement d'un motif M0) est donc l'indication d'un débordement de la zone juxtaposée à la partie de mémoire contenant ce motif. Afin de tenir compte de cette indication, une routine de contrôle est mise en _uvre périodiquement, par exemple toutes les 5 secondes. Une telle routine de contrôle est représentée sur la figure 3. Cette routine compare les données mémorisses dans la partie de contrôle de chaque zone allouée au motif qui a été placé pendant l'allocation de la zone. Si une comparaison est négative, une procèdure d'initialisation du système est lancée. Une telle procèdure comprend par exemple un o démarrage à chaud (reboof en anglais) du micro-processeur: après quelques instants, le décodeur émet à nouveau un signal correspondant à l'émission précédemment reçue (dont les caractéristiques de réception - numéro de canal en général - sont stockées dans une mémoire non volatile). Il est possible de prévoir d'autres conséquences à une comparaison négative, notamment de transmettre des informations sur le débordement par un bus de communication vers un autre système, par exemple un système de test; cette dernière caractéristique est avantageuse lors du développement du système afin de faciliter la tâche de dimensionnement des dlfférentes zones. o Si toutes les comparaisons sont positives, la routine se termine (et n'a donc dans ce cas aucune conséquence sur le fonctionnement du système). L'invention n'est bien sûr pas limitee au mode de réalisation décrit cidessus. En variante, on peut notamment prévoir que chaque zone contienne un motif de début de zone et un motif de fin de zone. Le motif de fin d'une zone peut d'ailleurs être le motif de début de la zone suivante. REVENDICATIONS 1. Système électronique comprenant une mémoire accessible en écriture divisée en au moins une première zone et une deuxième zone juxtaposées, caractérisé en ce que la première zone comporte une partie déterminée juxtaposée à la deuxième zone et en ce qu'il comprend des moyens de contrôle périodique des données stockées dans ladite partie déterrninée. 2. Système selon ia revendication 1, caractérisé en ce qu'il comprend des moyens d'allocation de la première zone qui écrivent un motif dans ladite partie déterminée. 3. Système selon la revendication 2, caractérisé en ce que les moyens de contrôle comparent les données stockées dans ladite partie déterminée au motif. o 4. Procèdé de commande d'un système électronique comprenant une mémoire accessible en écriture diYisée en au moins une première zone et une deuxième zone juxtaposée à la première zone, caractérisé en ce qu'il comprend une étape périodique de contrôle des données stockées dans une partie déterminée de la première zone, ladite partie déterminée étant juxtaposée à la deuxième zone. 5. Procèdé selon la revendication 4, dans lequel la première zone est utilisée par un procèdé-utilisateur et dans lequel les données stockées dans ladite partie déterminée sont écrites lors d'une étape d'allocation de la o première zone au procèdé-utilisateur. 6. Procèdé selon la revendication 4 ou 5, dans lequel l'étape de contrôle comprend une étape de comparaison des données stockées dans ladite partie déterminée à des données préalablement écrites dans ladite partie déterminée. 7. Procèdé selon la revendication 6, dans lequel une procèdure d'initialisation est lancée en cas de comparaison négative. s 8. Procèdé de commande d'un système électronique comprenant une mémoire accessible en écriture divisée en au moins une première zone et une deuxième zone juxtaposée à la première zone, caractérisé en ce qu'il comprend les étapes suivantes: - écriture d'un motif dans une partie de contrôle de la première o zone, la partie de contrôle étant juxtaposée à la deuxième zone; - comparaison périodique des données stockées dans la partie de contrôle au motif. 9. Procèdé selon la revendication 8, dans lequel une procèdure