Ошибки при компиляции программы Linux Kernel mode - PullRequest
0 голосов
/ 16 июля 2010

Я хочу получить доступ к некоторым регистрам моей платы ARM Cortex-A8, которые по умолчанию находятся в недоступном состоянии. На этой плате работает Ubuntu 9.10 . Поэтому, чтобы получить к ним доступ, мне нужно сначала изменить 1 другие настройки регистра (Allow-access-register). Чтобы изменить этот Allow-access-register, я обнаружил, что должен делать это только в режиме ядра, а не в режиме пользователя.

Итак, я упомянул, как программировать в режиме ядра, и попал в этот замечательный учебник . Я написал эту маленькую hello world программу и файл make. Обратите внимание, что я все еще запускаю эту программу на моем рабочем столе x86 (Ubutnu 10.04), а не на YET на моем процессоре ARM. Пока я не научусь программировать на уровне ядра.

Я получаю эти ошибки. Что здесь не так?

Помощь!


Ошибки, которые я получаю на своей плате i.MX515

ubuntu@ubuntu-desktop:~/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

Ошибки, которые я получаю

ubuntu@ubuntu-desktop:~/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

Программа

#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

Ответы [ 2 ]

0 голосов
/ 16 июля 2010

Я не знаю, является ли это просто форматированием вашего поста или нет, но скрипты сборки ядра ищут «Makefile», и у вас есть «Makefile» (разница в случае). Может ли это быть проблемой? Плюс, ваше имя пользователя "Ubuntu"?

0 голосов
/ 16 июля 2010

В вашей команде make есть опечатка, например:

Это должно быть:

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

not

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