Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1317 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Mémoire partagée avec RTAI

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mémoire partagée avec RTAI

n°1566302
kerplunk
Posté le 28-05-2007 à 17:30:40  profilanswer
 

Salut,
 
Je tente de faire un partage de mémoire en rtai et pas moyen. Le principe est d'allouer une partie mémoire coté RTAI avec la fonction rtai_kmalloc auquel on passe en argument le motif qui servira au coté linux pour reconnaitre l'endroit ou est stocké l'info puis d'écrire dedans. Il y sans doute quelque chose qui m'échappe. Pouvez vous me dire ce que vous en pensez ?
 
je laisse le code coté rtai et coté linux.
merci !
 
coté RTAI

Code :
  1. #include <linux/kernel.h>
  2. #include <linux/module.h>
  3. #include <rtai.h>
  4. #include <rtai_sched.h>
  5. #include <rtai_shm.h>
  6. #define PERIOD 1000000 //1ms  
  7. static RT_TASK t1;
  8. RTIME time, t;
  9. int *ptr = NULL;
  10. int *test = NULL;
  11. int i = 0;
  12. static void tache_tr(int C){
  13. while(i<10){
  14.  printk("%d\n",i);
  15.  //test = memset(ptr, 0xDEADBEEF, sizeof(ptr));
  16.  *ptr=0xDEADBEEF;
  17.  printk("test : %X\n",*ptr);
  18.  rt_task_wait_period();
  19.  i++;
  20. }
  21. return;
  22. }
  23. int init_module(void){
  24. ptr = rtai_kmalloc(11011, 4*sizeof(int));
  25. if (ptr == 0)
  26.  printk("Erreur kmalloc\n" );
  27. rt_set_periodic_mode();
  28. time = start_rt_timer(nano2count(PERIOD/4));
  29. // Créer la tâche de temps réel.
  30. rt_task_init(&t1, (void *)tache_tr, 1, 512, 1, 0, 0);
  31. // La rendre périodique.
  32. rt_task_make_periodic(&t1, rt_get_time()+1000*time, nano2count(1000000000));
  33. return 0;
  34. }
  35. void cleanup_module(void){
  36. rt_task_delete(&t1);
  37. stop_rt_timer();
  38. rtai_kfree(101);
  39. return;
  40. }


 
coté linux

Code :
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <rtai_shm.h>
  4. //gcc -o e3user e3user.c -I /usr/realtime/include
  5. int main(int argc, char **argv){
  6. int *ptr=NULL;
  7. ptr = rtai_malloc(11011, 4*sizeof(int));
  8. if (ptr == 0){
  9.  printf("Erreur malloc\n" );
  10.  return 0;
  11. }
  12. printf("%X\n",*ptr);
  13. rtai_free(101,&ptr);
  14. return 0;
  15. }


 

mood
Publicité
Posté le 28-05-2007 à 17:30:40  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Mémoire partagée avec RTAI

 

Sujets relatifs
tableau de chaines en mémoire partagé (Linux/POSIX) [RESOLU][Rails] Libération de la mémoire
[.NET] Libérer de la mémoire sur des objets volumineuxLogiciel de detection de fuite mémoire
[VBA WORD] Comment faire pour vider la mémoire ??problème de déallocation de mémoire
javascript: ecrire ou lire un cookie en mémoire[Architecture de l'ordi] Taille bus d'adresses, (Résolu)
[JAVA] Charger un fichier texte en mémoire dans un StringLibérer la mémoire et fonction recvfrom
Plus de sujets relatifs à : Mémoire partagée avec RTAI


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR