1) 在相应的文件夹下面建立驱动文件夹
将C程序放入该驱动文件夹下
2) 创建或下载驱动C文件的头文件
3) 编辑该驱动集合(该驱动模块)下面的Makefile 添加编译选项
#===============driver_test============ obj-$(CONFIG_DRIVER_TEST_SYD168) += driver_test/
#===================================
4) 编辑该驱动集合(该驱动模块)下面的Kconfig 添加编译选项菜单
#=========Driver_test_syd168===========
source "drivers/char/driver_test/Kconfig"
#======================================
5) 编辑该驱动文件夹下面的Makefile 添加编译此驱动程序
obj-$(CONFIG_DRIVER_TEST_SYD168) += driver_test.o
6) 编辑该驱动文件夹下面的Kconfig 添加编译选项菜单
#
#tDriver device configuration
#
menu "Driver test by syd168"
config DRIVER_TEST_SYD168
bool "Driver test by syd168"
# depends on ACH_MINI2440
default y
---help---
Driver test by syd168 2011.5.2
Endmenu
7) 修改内核根目录(Linux-2.6.37)下的Makefile
修改
ARCH ?= arm 指定平台
CROSS_COMPILE ?= arm-linux- 指定编译器
8) 在驱动文件夹下面编译
#make
编译结果
built-in.o Kconfig modules.order
driver_test.c Makefile driver_test.ko
driver_test.o modules.builtin
9) 将驱动文件driver_test.ko拷贝到开发板/lib/modules
命令:#insmod driver_test.ko
安装驱动成功显示:Driver Init:Hello world
命令:#lsmod
查看当前安装的驱动:driver_test 704 0 - Live 0xbf000000
0xbf000000表示模块地址
卸载驱动要在/lib下面建立linux-2.6.37文件夹拷贝driver_test.ko到此文件夹下
命令:rmmod driver_test
卸载成功显示:Driver exit:Goodbye,world
Ø 取得驱动C文件不建立相应文件夹直接放到相应模块文件夹下
1) 将C文件拷贝到模块文件夹下面
2) 下载或编写相应模块头文件相应模块文件夹下(与C程序一起)
3) 编辑模块文件夹下Makefile添加相应的编译选项
obj-$(CONFIG_MINI2440_ADC) += mini2440_adc.o
4) 编辑模块文件夹下Kconfig 添加相应的选项菜单
config MINI2440_ADC
bool "ADC driver for Mini2440 development boards"
depends on MACH_MINI2440
default y if MACH_MINI2440
help
this is ADC driver for FriendlyARM Mini2440 development boards
Notes: the touch-screen-driver required this option
5) 修改内核根目录(Linux-2.6.37)下的Makefile
ARCH ?= arm 指定平台
CROSS_COMPILE ?= arm-linux- 指定编译器
6) 重新编译内核
7) 制作内核映像文件
8) 下载到开发板
9) 编辑测试程序(对测试文件自己编写或下载一个编译arm-linux-gcc)测试