一,开发环境的建立:
1.准备内核:
将开发板上的linux内核解压到一个目录如linux2410
#make menuconfig 配置内核
#make zImage 编译内核,如果不编译,是无法通过驱动程序的编译的,请记住。
2.准备交叉编译工具
将arm-linux编译工具解压到/usr/local/arm下,或者你自己的任何一个目录.
3. 编写设备驱动程序。
4.写编译的Makefile.,如下:(注意make行要用TAB键后退,这是makefile的常识)
ifeq ($(KERNELRELEASE),)
KERNELDIR:= /media/data/data/2410/linux2410/ #这是你编译的内核目录.
PWD := $(shell pwd)
CROSS_COMPILE := /usr/local/arm/3.3.2/bin/arm-linux-
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
.PHONY:
modules modules_install clean
else
obj-m := gpio.o
endif
///////////////////
5. 编译内核.
6.加载内核
#insmod xxx.ko
#mknod "device name" c 33 0 //后面的参数 c表示字符设备, 33表示主设备号,0表示次设备号。自己订吧.
7. 写测试程序测试驱动.
特别注意事项:
编译的环境一定要同板一致.可以用modinfo xxx.ko 查看相关的版本信息。否则insmod 时会说格式出错!!!!!!!!!!!!