Malloc plutot qu'une variable locale [Forums - Langage C]
Malloc plutot qu'une variable locale [Forums - Langage C]
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
Recherche
 
   
 

Parcourir ce sujet :   1 Utilisateur(s) anonymes



« 1 (2)


Re: Malloc plutot qu'une variable locale
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 511
Hors Ligne
Ce FREERTOS m'interloque depuis un bon moment déjà depuis que tu en parles ... j'espère pouvoir trouver du temps un jour pour m'y mettre !

Posté le : 16/08 14:35
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Malloc plutot qu'une variable locale
Pilier de la communauté
Inscrit:
13/10/2005 10:06
De haute-savoie (74)
Messages: 1149
Hors Ligne
Salut

L'intérêt du malloc c'est surtout que le programme applicatif peut allouer et désallouer de la mémoire dynamiquement alors qu'une variable est définie en dur dans le code et est statique et sera allouée de taille fixe durant toute la vie de la fonction en cours !

a noter que l'allocation dynamique de mémoire est interdite dans les règles de codage en embarqué généralement (MISRA ou autre)
l'endroit ou c'est logé (heap ou stack) a peu d'importance puisque les deux segments sont configurables généralement à volonté (place et taille)

Posté le : 12/09 17:02
Transférer la contribution vers d'autres applications Transférer


Re: Malloc plutot qu'une variable locale
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1893
Hors Ligne
Salut

J'ai fini par bien piger le fonctionnement du truc et ça s’exploite bien, je comprends pourquoi le SDK se base dessus pour tous les gros besoins en RAM.
Par exemple j'ai des services très exigeants en RAM (conversion d'un fichier, communication cryptée en TLS...) qui n'ont pas vocation à tourner en permanence ou qui durent peu de temps : avec un mutex "CoupDeBourre" je peux empêcher ces services de démarrer en même temps et je peux ainsi tous les faire fonctionner à merveille alors que si je devais réserver en dur tout ce dont ils ont besoin je n'aurais pas du tout assez de RAM !

Bref il y a un vrai travail introspectif à faire pour travailler avec ces boites noires mais comme c'est énoooorme !

Posté le : 12/09 19:30
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Malloc plutot qu'une variable locale
Accro
Inscrit:
06/07/2007 09:17
Messages: 673
Hors Ligne
Salut,
C'est une bonne idée d'utiliser les mutex... Comment procède-tu pour l'implémentation?
Tu gère tous les services ou juste les tiens? Le lock est automatique ou...?



Posté le : 18/09 08:12
Transférer la contribution vers d'autres applications Transférer


Re: Malloc plutot qu'une variable locale
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1893
Hors Ligne
Dans FreeRTOs il y a de nombreuses manières de faire un mutex.
Il y a des semaphores binaires et les "counting" qui vont permettre d'accorder une ressource à plusieurs "utilisateurs"
après il y a d'autres mécanismes dans freertos, éventuellement plus légers que le semaphore pour faire ca mais perso je fais au plus simple avec un semaphore binaire.

Je ne sais pas ce que tu entends par mes services ou tous. Ce que j'observe avec l'expérience c'est qu'il est fondamental de fortement segmenter les taches pour les rendre autonomes et non dépendantes des autres taches, y compris quand on attend une info ou un déblocage par une autre tache. Si on ne veille pas à ça on se retrouve avec une usine à gaz dont on ne sait jamais qui (qu'elle tache) est en train de faire quoi.

Des semaphores j'en gère pour toutes les ressources exclusives par exemple la spi (utilisée par plusieurs taches) ou la carte SD. Quand un cycle SPI est en cours depuis la tache A alors la tache B attend d'avoir la main pour utiliser la SPI (sur un autre périphérique par exemple)
Et là j'en ai ajouté un pour la ressource "grosse conso de RAM pour des taches de fond" afin que mes taches qui font des gros traitements de fond ne bouffent pas de la RAM en même temps :
Sauvegardes distantes, vérifications de mises à jour... avec lectures de fichiers, gros calculs et autres connexions réseaux peuvent se lancer périodiquement à des périodes diverses mais si une décide de démarrer en même temps qu'une autre alors elle attendra que la ressource se libère avant de prendre la RAM.

Autant j'avais essayé un temps l'OS MQXlite de Freescale(a ne pas confondre avec MQX tout court qui était pas mal d’après Yvan mais plus suivi) qui était une daube infernale (truffé de bugs, peu robuste, mal(pas) documenté et en plus sous Processor expert),
autant FREERTOS on y touche et on ne peut plus s'en passe tellement ça permet de développer plus confortablement, de manière scalable, maintenable et...j'adore !

Après pour le MISRA et compagnie je n'y connais rien mais de ce que j'ai compris il existe une version payante de FREERTOS sécurisée qui j'imagine répond à tous ces critères.

Posté le : 18/09 21:03
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer



 Haut   Précédent   Suivant
« 1 (2)



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Malloc plutot qu'une variable locale [Forums - Langage C]