我希望访问我的ARM Cortex-A8板的某些寄存器,这些寄存器默认处于不可访问状态。 Ubuntu 9.10在此板上运行。因此,要访问它们,我必须首先更改1个其他寄存器设置(允许访问寄存器)。要改变这个允许访问寄存器,我发现我必须在内核模式下而不是在用户模式下执行它。编译Linux内核模式程序的错误
所以,我提到如何在内核模式下编程,并且我得到了这个美妙的tutorial。我写了这个小小的hello world程序和make文件。 请注意,我仍然在我的x86桌面(Ubutnu 10.04)上运行此程序,而不是在我的ARM处理器上运行。直到我对内核级编程感到困惑。
我得到这些错误。这里有什么问题?
帮助!
错误,我得到我的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
错误,我得到
[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
计划
#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
好吧我将makefile从makefile更名为Makefile,并且出现新错误(请参阅我的问题,我已将其编辑) – HaggarTheHorrible 2010-07-16 07:00:41
您的源文件是否实际命名为“hello-1.c”?这就是脚本正在寻找的东西。 – Karmastan 2010-07-16 07:17:17
对不起,我修好了。重命名文件后,我有两个makefile,我正在执行错误的makefile。现在它正在编译和生成目标文件。谢谢。 – HaggarTheHorrible 2010-07-16 07:21:16