关于在Helper2416开发板编译内核和驱动的问题总结
1. 先说编译内核
1> 官方提供的3.2版本内核是.tar格式需要用如下命令才能解压:
tar -xvJf HELPER2416-KERNEL3.2-V110.tar -C /opt
解压内核到/opt目录下。
2> 首先要配置一下内核,不能直接make,要不然一堆问题,哪怕是只输入一下这个配置命令:
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
然后退出会自动保存.config文件,且记不能直接make menuconfig。
3> 编译内核时也要指定平台和交叉工具链,命令如下:
make ARCH=arm CROSS_COMPILE=arm-linux- zImage
这样就不会出现什么错误了,编译通过!就可以进行驱动编译了!
2. 驱动模块编译
编写了简单的hello world内核模块想测试一下,make之后总是出错:
/xxxx/xxx_hello.c:1: 错误:代码模式‘kernel’在 32 位模式下不受支持
/xxxx/xxx_hello.c:1: 对不起,尚未实现:未编译入对 64 位模式的支持
make[2]: *** [hello.o] 错误 1
make[1]: *** [module] 错误 2
原因是因为在makefile中未指定平台和交叉编译器,下面是正确的makefile:
obj-m := webee210_hello.o
KDIR := /opt/s3c-linux.jyx
all:
make -C $(KDIR) M=$(shell pwd) modules <span style="color:#ff0000;">ARCH=arm CROSS_COMPILE=arm-linux-</span>
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
上面编译内核时也指定了嘛,所以这里要注意,这样的话再编译就没什么问题啦 !