简单字符设备驱动程序(2)

此次测试分别在x86平台和Tiny6410平台,Tiny6410平台下的Makefile如下:

ARCH=arm
 
COMPILE=arm-linux-
 
 
 
ifneq ($(KERNELRELEASE),)
 
obj-m:=mycdev.o
 
else
 
# 已经构建好(执行过:make zImage)的Tiny6410内核树目录
 
KDIR ?= /mnt/HappyStudy/Tiny6410/linux-2.6.38
 
PWD := $(shell pwd)
 
endif
 
 
 
all:
 
    make -C$(KDIR) M=$(PWD) modules ARCH=$(ARCH)  CROSS_COMPILE=$(COMPILE)
 
clean:
 
    rm -f *.ko*.o *.mod.o *.od.c *.symvers

x86平台下的Makefile如下:

ifneq ($(KERNELRELEASE),)
 
obj-m:=mycdev.o
 
 
 
else
 
KDIR ?= /lib/modules/$(shell uname -r)/build
 
PWD := $(shell pwd)
 
endif
 
 
 
all:
 
    make -C$(KDIR) M=$(PWD) modules
 
CROSS_COMPILE=$(COMPILE)
 
clean:
 
    rm -f *.ko*.o *.mod.o *.od.c *.symvers

在PC机上make,通过NFS共享或ftp下载到Tiny6410开发板上执行insmodmycdev.ko(超级终端输入)。
 
注:为了能使用交叉编译,必须在PC机上配置好Tiny6410对应操作系统的内核树。内核树的配置过程如下:
 
—— 进入源代码目录下
 
—— cp config_mini6410_s70 .config, makemenuconfig
 
—— make zImage
 
—— make modules
 
我们PC上使用的CentOS环境已经将源码树配置好了,Linux源码在/usr/src目录下,已编译的模块在/lib/modules目录下,这就是在编写PC上驱动程序不用配置而编写嵌入式驱动需要配置内核树的原因。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c16ab294b611fbab13f44542a5d705f2.html