字符设备驱动程序学习笔记一

linux 驱动程序


字符设备驱动程序
网络接口驱动程序
块设备驱动




字符设备 按字节来访问的设备
字符设备驱动用来驱动字符设备 通常实现open close read write




块设备
unix系统一次传输一个或多个512字节
linux允许块设备传送任意数目的字节
字符设备驱动和块设备驱动哪个可以随机访问


网络接口
通常是一个硬件设备(etho),也可以是一个;软件设备如回环接口(lo)




驱动程序的安装


1 模块方式
2 直接编译进内核

1 将程序复制到内核当中drivers/char
[root@localhost char]# cp /opt/linux/examples/hello/hello.c ./


2 修改kconfig,即配置makemenuconfig选项
查看配置菜单:
[root@localhost linux-2.6.38]# make menuconfig ARCH=arm
[root@localhost char]# vi Kconfig
添加如下代码:
config HELLO
bool "hello"
重新查看配置菜单:
[root@localhost linux-2.6.38]# make menuconfig ARCH=arm
进入device drivers-->Character devices
部分内容如下:
#此处可以查看到刚才配置的选项
[ ] hello (NEW) │ │



│ │ -*- Virtual terminal


│ │
│ │ [ ] Support for binding and unbinding console drivers


│ │
│ │ [ ] /dev/kmem virtual device support


│ │
│ │ <*> LED Support for Mini6410 GPIO LEDs


│ │
│ │ <M> Mini6410 module sample


│ │
│ │ <*> Buttons driver for FriendlyARM Mini6410 development


boards │ │
│ │ <*> Buzzer driver for FriendlyARM Mini6410 development


boards │ │
│ │ [*] ADC driver for FriendlyARM Mini6410 development boards


vg3


查看配置结果:
[root@localhost linux-2.6.38]# vi .config
部分代码如下:
#
# Character devices
#
CONFIG_HELLO=y
CONFIG_VT=y


3 修改makefile
[root@localhost linux-2.6.38]# vi drivers/char/Makefile
添加如下内容:
obj-$(CONFIG_HELLO) += hello.o
4 重新编译内核
5 将zImage烧写到开发板测试
部分启动信息如下:
size=0003fc00
fb3: s3cfb frame buffer device
backlight initialized
s3c6400-uart.0: ttySAC0 at MMIO 0x7f005000 (irq = 16) is a S3C6400/10
s3c6400-uart.1: ttySAC1 at MMIO 0x7f005400 (irq = 20) is a S3C6400/10
s3c6400-uart.2: ttySAC2 at MMIO 0x7f005800 (irq = 24) is a S3C6400/10
s3c6400-uart.3: ttySAC3 at MMIO 0x7f005c00 (irq = 28) is a S3C6400/10
leds initialized
buttons initialized
pwm initialized
adc initialized
Hello World!




应用程序使用驱动程序


应用程序
----------------------------------------------
字符设备 文件系统 套接字
块设备文件
----------------------------------------------
字符设备驱动 块设备驱动 协议栈
网络设备驱动
----------------------------------------------
字符设备 块设备 网络接口设备






linux 用户程序通过设备文件(设备节点)来使用驱动程序操作字符设备和块设备
设备位于/dev目录下

你可能感兴趣的:(linux)