Bonsoir,
A la compilation d'un module qui utilise les fonctions Temps Réel de RTAI. J'ai une suite de Warnings qui ressemblent à ça:
Warning: "stop_rt_timer" [/....................time.ko] undefined!
Warning: "rt_task_delete" [/....................time.ko] undefined!
Warning: "rt_task_make_periodic" [/....................time.ko] undefined!*** Warning:
Warning: "rt_get_time" [/....................time.ko] undefined!
Warning: "start_rt_timer" [/....................time.ko] undefined!
Warning: "rt_set_periodic_mode" [/....................time.ko] undefined!
Warning: "rt_task_init" [/....................time.ko] undefined!
Warning: "nano2count" [/....................time.ko] undefined!
Warning: "rt_get_time" [/....................time.ko] undefined!
Warning: "rt_task_init" [/....................time.ko] undefined!
Pourtant, j'ai fait include la bibliothèque "rtai_sched.h" et dans le Makefile j'ai spécifié le chemin de la bibliothèque.
Ci-dessous le code et le Makefile
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/version.h>
#include <linux/sched.h>
#include <linux/errno.h>
#include <asm/io.h>
#include <rtai.h>
#include <rtai_sched.h>
#include <rtai_shm.h>
static RT_TASK sound_task;
static RTIME sound_period_ns = 1000000;
#define SOUND_PORT 0x061
#define SOUND_MASK 0x02
void sound_fct(){
unsigned char sound_byte;
unsigned char toggle = 0;
while (1){
sound_byte = inb(SOUND_PORT);
if (toggle){
sound_byte = sound_byte | SOUND_MASK;
}
else {
sound_byte = sound_byte & ~SOUND_MASK;
}
outb (sound_byte,SOUND_PORT);
toggle = !toggle;
rt_task_wait_period();
}
return;
}
int init_module(void) {
RTIME sound_period_count;
RTIME timer_period_count;
int retval;
printk("inserting sound module\n");
rt_set_periodic_mode();
sound_period_count = nano2count(sound_period_ns); //conversion de la pأ©riode (ns) en tics d'horloge
timer_period_count = start_rt_timer(sound_period_count); //requete d'une pأ©riode formulأ©e en tics d'horloge
printk("peiodic_task: rquested %d counts, got %d counts \n", (int) sound_period_count, (int) timer_period_count); //periode obtenue auprأ¨s du timer
/* ================ test ici de requete de la periode ===================================*/
retval = rt_task_init(&sound_task, sound_fct, 0, 1024, RT_SCHED_LOWEST_PRIORITY, 0,0);
if (retval !=0) {
if (-EINVAL == retval) printk("task already in use\n");
else if (-ENOMEM == retval) printk("could not allocate stack\n");
else printk("error initializing task\n");
return 0;
}
rt_task_make_periodic(&sound_task, rt_get_time()+ sound_period_count, sound_period_count);
}
void cleanup_module(void){
rt_task_delete(&sound_task);
outb (inb(SOUND_PORT) & ~SOUND_MASK, SOUND_PORT); //On أ©teint le son
stop_rt_timer();
}
===============================================================================
Makefile
===============================================================================
obj-m := time.o
KDIR:= /lib/modules/3.8.13/build
EXTRA_CFLAGS := -I/usr/realtime/include -I/usr/include
PWD := /root/exercices/ex02
default:
make -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
make -C $(KDIR) SUBDIRS=$(PWD) clean
J'espère que vous pourriez m'aider. Merci d'avance.
# correction et mise en couleur
Posté par NeoX . Évalué à 2.
j'ai corrigé le post pour remettre le include car les balises < xxxx > sont mangées par le formatage markitup.
du coup j'ai aussi mis la coloration syntaxique en utilisant les codes fournis sous le post quand tu rediges.
ex :
```C
le code en C
que je dois mettre en couleur
```
ou
```sh
le code shell
qui doit etre mis en couleur
```
# peut-être une piste
Posté par Mali (site web personnel) . Évalué à 1.
A priori, il semblerait qu'il faut charger les modules correspondants.
insmod /usr/realtime/modules/rtai_?.ko
# manque d'include ?
Posté par purplepsycho . Évalué à 1.
Bonjour.
La ligne
est elle valide (double accolades, manque du croisillon) ?
Ne manque-t-il pas :
[^] # Re: manque d'include ?
Posté par NeoX . Évalué à 2.
probablement fausse, ca fait un moment que j'ai pas fait de C
et je n'ai fait que remettre l'include qui me semblait coherent.
ci-dessous l'auteur original precise qu'il a remis les include d'origine.
# Merci
Posté par SpeedInfo . Évalué à 1.
Merci NeoX pour la correction, en fait j'ai recopié les includes que j'ai supprimé parce que ça s'affichait mal avant.
est normalement valide car quand je l'enlève, j'ai des erreurs de compilation. Et quand je la remet je n'ai que des Warnings.
Et:
est-elle nécessaire?
ça pourrai être la piste de Mali car je ne trouve aucun module RTAI en consultant avec "lsmod".
Merci pour vos réponse rapides. Je vais essayer et vous tiendrai au courant.
# Encore une erreur!
Posté par SpeedInfo . Évalué à 1.
Bonjour,
J'ai essayé de charger le module "rtai_sched.ko" du répertoire "/usr/realtime/modules" mais il m'affiche l'erreur suivante:
Avez-vous une idée?
Merci,
# Problème persistant après insertions des modules
Posté par SpeedInfo . Évalué à 1.
J'ai réussi à insérer "rtai_sched.ko", il fallait juste insérer "rtai_hal.ko" avant.
Mais malheureusement, les Warnings persistent.
Faut-il insérer d'autres modules?
# "modprobe" ne trouve pas mon module
Posté par SpeedInfo . Évalué à 1. Dernière modification le 13 avril 2014 à 12:56.
J'ai chargé tous les modules que j'ai trouvé dans le répertoire /usr/realtime/modules, mais ça n'a pas résoud le problème.
En essayant de charger le module avec insmod j'ai l'erreur suivante:
En essayant de le charger avec modprobe j'ai l'erreur suivante:
Avez-vous une idée pourquoi modprobe ne trouve pas mon module malgré que j'ai spécifié le chemin?
Merci,
# modprobe nom_du_module (sans l'extension)
Posté par SpeedInfo . Évalué à 1.
J'ai trouver qu'on utilisant modprobe on ne met pas l'extension. Au cas où ça aiderai quelqu'un, mais personnellement, ça n'a pas résolu mon problème.
# CVS Showroom
Posté par SpeedInfo . Évalué à 1.
En cherchant, j'ai trouvé aussi que si les exemples du CVS showroom RTAI, je pourrai remplacer le code d'un exemple par mon code.
Pour installer le showroom: cvs -z3 -d:pserver:anonymous at cvs.gna.org:/cvs/rtai co showroom
Le problème c'est que je ne sais pas où trouver ces exemples du showroom.
Toute idée qui m’aiderai à progresser serai la bienvenue.
Merci,
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.