linux驱动编译的两种方式
2013-03-06 21:49
387 查看
驱动程序可以和内核一起编译,也可以作为一个模块单独编译。但为了方便调试驱动程序,一般将以模块化的方式对驱动进行编译
一、 以模块化的方式编译驱动程序
板子是FL2440,linux内核是2.6.12的,以led驱动程序为例。源文件为:驱动程序s3c2440_leds.c、测试程序led.c。现在只需写段Makefile,即可对led驱动程序进行编译。内容为:
[plain] view
plaincopy
obj-m :=s3c2440_leds.o
KERNELDIR ?= /root/linux-2440/linux-2.6.12
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
然后执行make命令即可,生成的s3c2440_leds.ko就是我们需要的驱动模块文件。然后将led.c交叉编译生成led,把s3c2440_leds.ko和测试程序led传到板子上,改好权限后,执行如下命令即可:
[html] view
plaincopy
#insmod s3c2440_leds.ko
#./led
在make的过程中有可能会出现如下错误 Kernel configuration is invalid
ERROR: Kernel configuration is invalid. include/linux/autoconf.h or include/config/auto.conf are missing. Run 'make oldconfig && make prepare' on kernel src to fix it.
哪么就回到内核源码目录下运行make oldconfig ; make prepare
当用mini2440开发板时,在编译ko前需要先运行以下命令
编译模块之前,先执行下面的命令 $cd /opt/FriendlyARM/mini2440/linux-2.6.29 (如果你用的是NEC 3.5寸屏,否则用对应的内核配置文件替换下面的config_N35) $cp -a config_N35 .config $make oldconfig && make prepare $make modules_prepare
二、和内核一起编译
还是以FL2440、led驱动程序为例。开发板的linux源码包在/root/linux-2440/linux-2.6.12目录下,将s3c2440_leds.c拷贝到源码包的dirvers/char目录下,并修改drivers/char目录下的Makefile文件,在其中对应位置添加如下内容1,在Kconfig文件对应位置中添加内容2:
[plain] view
plaincopy
1.
obj-$(CONFIG_S3C2440_LEDS) += s3c2440_leds.o
2.
config S3C2440_LEDS
tristate "S3C2440 LEDS Drivers"
depends on ARCH_S3C2440
help
SBC2440 User keys
然后,在源码包目录下执行make menuconfig 进行选项选择时,在Device Driver项下的Character drivers项下,会出现S3C2440 LEDS选项,选择好相应的模块后,编译成功后,下载到开发板上,然后直接运行led测试程序即可。
源出处:http://blog.csdn.net/bull_liu/article/details/7084576
http://www.arm9home.net/simple/index.php?t2877.html
相关文章推荐
- Linux下编译安装驱动的两种方式
- 【linux】——linux驱动学习笔记(一)——驱动编译的两种方式
- linux驱动的动态加载和编译内核的方式加载
- Linux驱动的两种加载方式过程分析
- Linux2.6 模块的两种编译方式
- 编译驱动到内核的两种方式
- opencv之在Linux下编译opencv程序的两种方式g++、cmake
- Linux驱动的两种安装方式
- opencv之在Linux下编译opencv程序的两种方式g++、cmake
- PandaBoard 驱动编译 两种方式的makefile
- Linux下安装mysql的方式(yum和源码编译两种方式)
- Linux驱动的两种加载方式过程分析
- Linux下opencv编译两种方式
- Linux驱动的两种加载方式过程分析
- 编译驱动到内核的两种方式
- Linux内核里写i2c client 驱动的两种方式
- linux 下的两种软件安装方式 —— 源码(编译、安装),编译好的二进制(直接安装)
- Linux下共享方式编译PHP扩展
- Ubuntu(Linux)连接小米手机2(Android 4.0以上)管理文件的两种方式:MTP和WiFi FTP
- linux内核编译与简易驱动