linux内核驱动识别过程,转载_ARM-Linux内核驱动加载过程思路

Ø      取得驱动C文件并建立相应文件夹实现内核添加(以编译测试驱动程序为例)

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)测试

KERNELDIR = /home/wenhao/platform/linux-2.6.34

PWD := $(shell pwd)

CROSS_COMPILE = /usr/local/arm/4.3.2/bin/arm-linux-

CC    = $(CROSS_COMPILE)gcc

obj-m := key.o

modules:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:

rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

.PHONY: modules clean

!注意:make和rm前是TAB键,同时Makefile放在驱动文件同级目录,直接执行make命令即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值