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目录下
- 浏览: 250218 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (303)
- c (31)
- c++ (16)
- java (18)
- c# (1)
- python (3)
- java web (6)
- oracle (7)
- sqlserver (2)
- mysql (2)
- android (24)
- android系统 (15)
- android多媒体部分 (15)
- android游戏 (12)
- linux (26)
- javaScript (1)
- ajax (1)
- node JS (2)
- html (5)
- apache (3)
- jboss (1)
- weblogic (0)
- 通信协议 (10)
- 云计算 (1)
- 分布式 (5)
- ejb (1)
- webservice (5)
- 设计模式 (16)
- JNI (6)
- swing (13)
- 版本控制 (1)
- UML (1)
- xml (4)
- spring (5)
- hibernate (5)
- struts1 (3)
- struts2 (4)
- ibatis (0)
- tomcat (2)
- 心得体会 (1)
- css (1)
- 嵌入式 (41)
- arm体系结构 (10)
发表评论
-
u-boot Makefile 文件分析
2013-06-01 21:44 2377Makefile文件分析 # #(C)Copyri ... -
uboot start.S文件分析
2013-06-03 22:18 1288U-boot第一个开始文件arch\arm\cpu\arm1 ... -
u-boot mkconfig文件分析
2013-05-31 21:29 1113Mkconfig文件分析 #!/bin/ ... -
链接地址学习笔记
2013-05-05 12:40 1244链接地址 启动过程 示例代码如下: ... -
DDR学习笔记
2013-05-11 14:19 1004DDR 15条地址线32k 128M*2(20)=2(2 ... -
nand flash学习笔记一
2013-05-13 21:05 936Nandflash 原理图上有data0-data7 ... -
openJTAG学习笔记一
2013-05-22 21:45 2137安装软件 光盘Windows\install目录下的 01.O ... -
linux进程管理学习笔记
2013-03-28 20:57 1302linux 进程管理 1 linux进程控制 进程的四个要素: ... -
字符设备驱动程序学习笔记二
2013-04-04 10:29 717字符驱动程序 1 设备号 字符设备通过字符设备文件来存取 ls ... -
字符设备驱动程序学习笔记三
2013-04-04 14:03 733memdev.h文件示例代码如下: #ifndef _MEM ... -
字符设备驱动程序学习笔记四
2013-04-05 11:12 558竟争与互斥 程序调试 1 ... -
GPIO学习笔记
2013-04-14 19:50 774用汇编点亮一个led 1看原理图GPK4=0,led亮G ... -
系统时钟学习笔记
2013-05-04 21:59 80612m晶振----->pll------>cpu ... -
UART学习笔记
2013-05-04 22:00 1101串口(UART) DIV_VAL=(PCLK/(bpsx1 ... -
linux内存管理学习笔记
2013-03-12 20:50 10051 linux内存管理 地址类型 物理地址 出现在cpu地址 ... -
嵌入式linux系统学习笔记
2013-03-06 21:39 902嵌入式linux内核制作 1 清除原有配置文件与中间文件 x8 ... -
原理图学习笔记一
2013-02-17 22:24 373画个草图也挺过瘾 -
进程间通信学习笔记一(管道通信)
2013-02-01 20:08 1366进程间通信(ipc) 应用场景: 数据传输 资源共享 通知事件 ... -
进程间通信学习笔记二(信号通信)
2013-02-16 21:39 738信号通信 用户按某些键时,产生信号 硬件异常产生信号 进程用k ... -
进程间通信学习笔记三(共享内存通信)
2013-02-16 21:40 582共享内存通信 被多个进程共享的一部分物理内存,是进程间共享数据 ...
相关推荐
详细介绍了linux字符设备驱动程序,对各个名词做了自己的理解,在学习中的笔记,有错误还请海涵
·Linux设备驱动程序学习(1)-字符设备驱动程序 ·Linux设备驱动程序学习(0)-设备驱动介绍& Hello, world!模块 ·Linux设备驱动程序学习(2)-调试技术 ·Linux设备驱动程序学习(3)-并发和竞态 ·Linux设备...
Linux 设备驱动程序学习(0) -设备驱动介绍& Hello, world!模块 模块结构介绍 字符设备驱动程序 调试技术 并发和竞态 高级字符驱动程序操作 阻塞型 I/O 和休眠
第一步:编写globalvar.c文件。主要包括:open、release、read、write、init和exit方法的编写; 第二步:编写Makefile文件,然后编译globalvar.c; 第三步:insmod加载模块,并生成设备节点mknod。(此步有两种方法...
设备文件:设备文件是一种特别文件,Linux 系统用来标识各个设备驱动器,核心使用它们与硬件设备通信。有两类特别设备文件:字符设备文件和块设备文件。 符号链接:一种特殊文件,存放的数据是文件系统中通向...
abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n....Annotation [java] 代码注释 [ænәu'... \uxxxx 1到4位16进制数指定Unicode字符输出(xxxx) \\ \ \' ' \" ...
简单的字符设备驱动实验…… 第二阶段在开发板上学习研究Linux. 一.MIZI Linux SDK for S3C2410开发环境及工具使用. 1.构造软件开发环境. 2.编译嵌入式Linux生成image…… 3.将嵌入式Linux的image下载到目标板… … ...
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...
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 从可移动存储设备如USB闪存驱动器,闪存卡,或软盘(媒体)。要安装 Hornil StylePix 便携式,只要下载便携包,然后解压缩。要启动 Hornil StylePix 便携,只需双击您的便携 ...