`

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

阅读更多

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字符设备驱动程序学习笔记

    详细介绍了linux字符设备驱动程序,对各个名词做了自己的理解,在学习中的笔记,有错误还请海涵

    Linux 驱动学习笔记pdf文档

    ·Linux设备驱动程序学习(1)-字符设备驱动程序 ·Linux设备驱动程序学习(0)-设备驱动介绍& Hello, world!模块 ·Linux设备驱动程序学习(2)-调试技术 ·Linux设备驱动程序学习(3)-并发和竞态 ·Linux设备...

    linux设备驱动学习笔记

    Linux 设备驱动程序学习(0) -设备驱动介绍& Hello, world!模块 模块结构介绍 字符设备驱动程序 调试技术 并发和竞态 高级字符驱动程序操作 阻塞型 I/O 和休眠

    Linux字符驱动设备--学习笔记

    第一步:编写globalvar.c文件。主要包括:open、release、read、write、init和exit方法的编写; 第二步:编写Makefile文件,然后编译globalvar.c; 第三步:insmod加载模块,并生成设备节点mknod。(此步有两种方法...

    Linux学习笔记 第一版

     设备文件:设备文件是一种特别文件,Linux 系统用来标识各个设备驱动器,核心使用它们与硬件设备通信。有两类特别设备文件:字符设备文件和块设备文件。  符号链接:一种特殊文件,存放的数据是文件系统中通向...

    整理后java开发全套达内学习笔记(含练习)

    abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n....Annotation [java] 代码注释 [ænәu'... \uxxxx 1到4位16进制数指定Unicode字符输出(xxxx) \\ \ \' ' \" ...

    嵌入式Linux入门笔记(十年程序员精品推荐、让你看得懂的笔记、结合开发板例程精心讲解)

    简单的字符设备驱动实验…… 第二阶段在开发板上学习研究Linux. 一.MIZI Linux SDK for S3C2410开发环境及工具使用. 1.构造软件开发环境. 2.编译嵌入式Linux生成image…… 3.将嵌入式Linux的image下载到目标板… … ...

    asp.net知识库

    VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...

    若干源程序资料12.rar

    2012-06-11 21:32 318,464 实验42:L298电机驱动程序(ATme.rar 2012-06-11 21:07 13,091 嵌入式拼音输入法C代码.rar 2012-06-11 21:12 64,623 巴特沃斯、切比雪夫I和椭圆滤波器设计的源程序.zip 2012-06-11 21:29 ...

    图像处理工具 Hornil StylePix Pro 2.0.3.0 中文版.zip

    一种便携式版本的运行 Hornil StylePix 从可移动存储设备如USB闪存驱动器,闪存卡,或软盘(媒体)。要安装 Hornil StylePix 便携式,只要下载便携包,然后解压缩。要启动 Hornil StylePix 便携,只需双击您的便携 ...

Global site tag (gtag.js) - Google Analytics