2010-07-16 4 views
0

Je souhaite accéder à certains registres de ma carte ARM Cortex-A8 qui sont par défaut dans un état non accessible. Ubuntu 9.10 fonctionne sur cette carte. Donc, pour y accéder, je dois d'abord modifier 1 autres paramètres de registre (Allow-access-register). Pour changer ce permis-accès-registre, j'ai découvert que je dois le faire seulement en mode noyau et pas en mode utilisateur.Erreurs de compilation du programme en mode noyau Linux

Donc, je me suis référé comment programmer en mode noyau et je suis arrivé à ce merveilleux tutorial. J'ai écrit ce petit programme hello world et un fichier make. Notez que je suis toujours en cours d'exécution de ce programme sur mon bureau x86 (Ubutnu 10.04) et pas encore sur mon processeur ARM. Pas jusqu'à ce que je me bloque sur la programmation au niveau du noyau.

Je reçois ces erreurs. Qu'est-ce qui ne va pas ici?

Aide!


erreurs je reçois sur ma planche i.MX515

[email protected]:~/Documents/Kernel_Programming$ make 
make -C /lib/modules/2.6.31-203-gee1fdae/build M=/home/ubuntu/Documents/Kernel_Programming modules 
make[1]: Entering directory `/usr/src/linux' 
make[1]: *** No rule to make target `modules'. Stop. 
make[1]: Leaving directory `/usr/src/linux' 
make: *** [all] Error 2 

erreurs que je reçois

[email protected]:~/Documents$ make 
make -C /lib/modules/2.6.32-23-generic/build M=/home/ubuntu/Documents modules 
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-23-generic' 
make[2]: *** No rule to make target `/home/ubuntu/Documents/hello-1.c', 
needed by `/home/ubuntu/Documents/hello-1.o'. Stop. 
make[1]: *** [_module_/home/ubuntu/Documents] Error 2 
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-23-generic' 
make: *** [all] Error 2 

Programme

#include <linux/module.h> 
#include <linux/kernel.h> 

int init_module(void) 
{ 
    printk(KERN_INFO "\nHello World! I'm programming in Kernel Mode\n"); 

    return 0; 
} 

void cleanup_module(void) 
{ 
    printk(KERN_INFO "\nBye Bye blue bird\n"); 
} 

makefile

obj-m +=hello-1.o 

all: 
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

clean: 
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 

Répondre

0

Je ne sais pas si c'est juste la mise en forme de votre poste ou non, mais les scripts de compilation du noyau sont à la recherche de « Makefile » et vous avez « makefile » (différence en cas). Cela pourrait-il vraiment être le problème? De plus, votre nom d'utilisateur est-il "ubuntu"?

+0

Okay J'ai renommé mon makefile de makefile à Makefile et je reçois de nouvelles erreurs (Reportez-vous à ma question, je l'ai édité) – HaggarTheHorrible

+0

Votre fichier source est-il réellement nommé "hello-1.c"? C'est ce que recherchent les scripts. – Karmastan

+0

Désolé, je l'ai réparé. Après avoir renommé le fichier, j'avais deux fichiers makefile et j'exécutais le mauvais makefile. maintenant, il compile et génère un fichier objet. Je vous remercie. – HaggarTheHorrible

0

Il y a une faute de frappe dans votre commande make comme:

Il devrait être:

make -C /lib/modules/2.6.32-23-generic/build M=/home/ubuntu/Documents modules 

pas

make -C /lb/modules/2.6.32-23-generic/build M=/home/ubuntu/Documents modules 
+0

Hey Nils, Oh ma tête est devenue si floue avec le problème que je suis confronté Je ne vois rien de droit :) :) Je l'ai corrigé, mais je reçois ces nouvelles erreurs. (Reportez-vous à ma question, je l'ai édité) – HaggarTheHorrible

Questions connexes