我希望访问ARM Cortex-A8主板的一些寄存器,这些寄存器默认处于不可访问状态。 Ubuntu 9.10在这个主板上运行。因此,要访问它们,我必须首先更改另外1个寄存器设置(Allow-access-register)。要更改此Allow-access-register,我发现我必须仅在内核模式下而不是在用户模式下执行此操作。
所以,我提到了如何在内核模式下编程,我得到了这个精彩的tutorial。我写了这个小的 hello world 程序和一个make文件。 请注意,我仍在我的x86桌面(Ubutnu 10.04)上运行此程序,而不是在我的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");
}
生成文件
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
答案 0 :(得分:0)
你的make命令中有一个拼写错误:
应该是:
make -C /lib/modules/2.6.32-23-generic/build M=/home/ubuntu/Documents modules
不是
make -C /lb/modules/2.6.32-23-generic/build M=/home/ubuntu/Documents modules
答案 1 :(得分:0)
我不知道它是否只是你的帖子的格式,但内核构建脚本正在寻找“Makefile”而你有“makefile”(大小写不同)。这真的是问题吗?另外,您的用户名是“ubuntu”吗?