デフォルトでアクセスできない状態にあるARMCortex-A8ボードのいくつかのレジスタにアクセスしたいと思います。Ubuntu9.10はこのボード上で動作します。したがって、それらにアクセスするには、最初に他の1つのレジスタ設定(Allow-access-register)を順番に変更する必要があります。このAllow-access-registerを変更するには、カーネルモードでのみ実行する必要があり、ユーザーモードでは変更しない必要があることがわかりました。
そこで、カーネルモードでのプログラミング方法を紹介し、このすばらしいチュートリアルにたどり着きました。この小さなhelloworldプログラムと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");
}
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