Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7563463
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2010-08-14 15:54:51

嵌入式学习入门 http://blog.chinaunix.net/u3/117680/showart.php?id=2300212  

     TX2440A开发板上还有很多外围设备:LED,按键,ADC,蜂鸣器,温度传感器,红外收发器,CAN总线控制器。我们需要编写驱动,并加入到内核中。

 

由于这些驱动全部加入内核,会使内核体积增大,并且我们也不经常用到这些设备,最好的办法是把这些驱动编译成模块,放入文件系统中,然后可以根据需要动态的加载或卸载驱动模块,增加了驱动使用的灵活性。

 

将驱动程序源码

文件: 字符驱动.rar
大小: 8KB
下载: 下载

TX2440_adc.c TX2440_beep.c TX2440_button.c TX2440_ds18b20.c TX2440_led.c

放到drivers/char/目录下,修改同目录下Kconfig文件,在第13行加入:

config TX2440_LED

tristate "TX2440 LED Driver"

depends on ARCH_S3C2440

help

this is LED Driver for TX2440 development boards

 

config TX2440_BEEP

tristate "TX2440 BEEP Driver"

depends on ARCH_S3C2440

help

this is BEEP Driver for TX2440 development boards

 

config TX2440_ADC

tristate "TX2440 ADC Driver"

depends on ARCH_S3C2440

help

this is ADC Driver for TX2440 development boards

 

config TX2440_BUTTON

tristate "TX2440 BUTTON Driver"

depends on ARCH_S3C2440

help

this is BUTTON Driver for TX2440 development boards

 

config TX2440_DS18B20

tristate "TX2440 DS18B20 Driver"

depends on ARCH_S3C2440

help

this is DS18B20 Driver for TX2440 development boards

 

 

修改同目录下Makefile文件,在13行加入:

obj-$(CONFIG_TX2440_LED) += TX2440_led.o

obj-$(CONFIG_TX2440_BEEP) += TX2440_beep.o

obj-$(CONFIG_TX2440_ADC) += TX2440_adc.o

obj-$(CONFIG_TX2440_BUTTON) += TX2440_button.o

obj-$(CONFIG_TX2440_DS18B20) += TX2440_ds18b20.o

 

 

配置内核,支持驱动模块:

Device Drivers --->

Character devices --->

[M] TX2440 LED Driver

[M] TX2440 BEEP Driver

[M] TX2440 ADC Driver

[M] TX2440 BUTTON Driver

[M] TX2440 DS18B20 Driver

‘M’表示将驱动编译成模块

 

执行:#make SUBDIR=drivers/char/ modules

 

编译完成后,会在drivers/char/目录下生成 TX2440_xxx.ko的文件,将这几个文件复制到根文件系统下 lib/modules/2.6.31/文件夹下。

在光盘资料/源码包/驱动测试程序源码 目录下有这几个驱动的测试程序,在这几个目录中执行make,编译出可执行程序,复制到文件系统的 usr/bin目录下。

烧入制作好的根文件系统,因为这里只是编译了驱动模块,内核并没有更新,所以不需要重新下载内核。

如果要加载驱动,在开发板上执行:

#insmod lib/modules/2.6.31/TX2440_xxx.ko

即可动态加载驱动,然后用测试程序,测试驱动的使用情况

如果要卸载驱动,在开发板上执行:

#rmmod TX2440_xxx 即可动态卸载驱动

如果要查看当前系统已加载的驱动,可执行:

 

#lsmod 会列出加载的驱动列表

 

注意:在2.6.31版本的内核中,驱动模块必须放在lib/modules/2.6.31目录下,执行insmodrmmod时,系统会自动查找该目录下的驱动模块。

 

 

 

阅读(2810) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~