如何开始写嵌入式linux设备驱动程序

来源:互联网 发布:域名 ip 关系 编辑:程序博客网 时间:2024/06/05 02:41

一,开发环境的建立:

 

  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 时会说格式出错!!!!!!!!!!!!