300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > linux内核驱动识别过程 转载_ARM-Linux内核驱动加载过程思路

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

时间:2022-12-16 18:17:21

相关推荐

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添加编译选项菜单

#

#tDriverdevice 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 .5.2

Endmenu

7)修改内核根目录(Linux-2.6.37)下的Makefile

修改

ARCH?= arm指定平台

CROSS_COMPILE?= arm-linux-指定编译器

8)在驱动文件夹下面编译

#make

编译结果

built-in.oKconfigmodules.order

driver_test.cMakefiledriver_test.ko

driver_test.omodules.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命令即可

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。