#1 Le 20/08/2013, à 14:34
- Cartman_94
Aide comment récupérer une Interruption sur un Linux embarqué
Bonjour a tous,
Je développe sur une carte (emtrion dimm mx6q) qui utilise un Linux embarqué. J'ai installé une virtual machine avec ubuntu pour simuler l'environnement de développement de la carte.
Sur la carte j'ai activé une interruption (EPIT : Enhanced Periodic Interrupt Timer) qui se déclenche toute les 500µs.
je lance dans un terminal cat /proc/interrupts pour voir si l'interruption est activée :
CPU0 CPU1 CPU2 CPU3
88: 11081995 0 0 0 GIC epit
De ce côté, pas de problème tous est initialisé correctement.
Je souhaite par la suite exécuter un bout de code a chaque front montant de mon interruption.
Pour cela je crée un module qui sur chaque front de l'interruption exécutera une tache (dans mon cas il passe une IO a 1 puis à 0)
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/gpio.h>
#define MXC_INT_EPIT1 88 //Interruption EPIT
#define TAILLE 25000
// Sortie sur GPIO_0
#define GPIO_OUT 32
//Handler
static irqreturn_t gpio_handler(int irq, void * ident)
{
gpio_set_value(GPIO_OUT, 1);
gpio_set_value(GPIO_OUT, 0);
return IRQ_HANDLED;
}
//Module Init
static int __init gpio_init (void)
{
int err;
//allocation memoire pour le GPIO_OUT
if ((err = gpio_request(GPIO_OUT, THIS_MODULE->name)) != 0)
return err;
//direction GPIO_OUT : Output
if ((err = gpio_direction_output(GPIO_OUT,1)) != 0)
{
gpio_free(GPIO_OUT);
return err;
}
if ((err = request_irq(MXC_INT_EPIT1, gpio_handler, IRQF_SHARED, THIS_MODULE->name, THIS_MODULE->name)) != 0)
{
gpio_free(GPIO_OUT);
return err;
}
return 0;
}
//Module Exit
static void __exit gpio_exit (void)
{
free_irq(MXC_INT_EPIT1, THIS_MODULE->name);
gpio_free(GPIO_OUT); //On libere la GPIO_OUT
}
module_init(gpio_init);
module_exit(gpio_exit);
MODULE_LICENSE("GPL");
Pour info GPIO_OUT est une sortie de ma carte que j'observe a l'oscilloscope.
Lorsque je lance le module sur ma carte, sa me dit :
Error: could not insert module irq_epit.ko: Device or resource busy
Comment puis je me servir de cette interruption avec mon module ?
Merci d'avance
Hors ligne
#2 Le 21/08/2013, à 09:46
- compte supprimé
Re : Aide comment récupérer une Interruption sur un Linux embarqué
Que renvoit dmesg juste après que tu ai lancé le module ?