`

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

阅读更多

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 字符设备驱动程序是 Linux 操作系统中的一种驱动程序,负责管理字符设备的输入和输出操作。字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常...

    linux字符设备驱动学习笔记借鉴.pdf

    Linux 字符设备驱动学习笔记 本文档主要讲述 Linux 字符设备驱动学习笔记,涵盖了设备文件、主次设备号、字符设备驱动中的数据结构等知识点。 一、 设备文件 设备文件是一种特殊类型的文件,用来代表一个设备。...

    LDD-LinuxDeviceDrivers.zip Linux内核与设备驱动程序学习笔记

    "Linux内核与设备驱动程序学习笔记"可能包含了以下内容: 1. **内核模块**:内核模块是可加载到运行中的内核中的代码段,允许用户动态添加或移除设备驱动。这使得系统可以在需要时加载特定驱动,节省内存。 2. **...

    字符设备驱动学习笔记(2.6.23)

    在Linux操作系统中,字符设备驱动是驱动程序的一种,主要用于与硬件进行交互,处理单个字符流的输入和输出。字符设备通常包括键盘、串口、打印机等,它们以连续的数据流进行通信,而不是块状数据。这篇“字符设备...

    linux设备驱动程序

    《Linux设备驱动程序学习(16)-Linux设备模型》和《Linux设备驱动程序学习(17)-Linux设备模型》会深入讲解这一概念。 2. **字符设备驱动**:字符设备驱动主要处理一对一的I/O操作,如串口、键盘、鼠标等。...

    linux设备驱动学习笔记

    Linux设备驱动程序是操作系统内核的一部分,它与硬件设备直接交互,为用户空间的应用程序提供了操作硬件的接口。学习Linux设备驱动程序是深入了解Linux操作系统工作原理的重要步骤,同时也是嵌入式系统开发中不可或...

    linux字符设备驱动学习笔记文.pdf

    理解这些基本概念和机制是编写Linux字符设备驱动的基础,它们为应用程序提供了一种统一和抽象的方式来操作硬件,简化了系统开发和维护的复杂性。通过掌握设备文件、主次设备号以及关键数据结构的使用,开发者可以...

    嵌入式设备驱动学习笔记

    本学习笔记主要关注于如何开发这些驱动程序,涉及C和C++编程语言,系统编程,网络编程以及ARM架构的驱动开发。 首先,了解基本的数据结构对于开发设备驱动至关重要。数据结构是组织和存储数据的方式,它影响着算法...

    windows驱动程序开发学习笔记

    ### Windows驱动程序开发学习笔记知识点解析 #### 一、Windows驱动程序开发概述 - **学习背景**: 学习者最初接触Windows驱动程序开发时遇到不少困难,经历了一段时间的摸索后逐渐入门。这一过程中,作者参考了...

    jz2440学习笔记-设备驱动

    本文主要讲述了s3c2440 Linux设备驱动开发过程中的重要细节,包括字符设备驱动程序的设计、实现和测试。下面是相关知识点的总结: 1. 设备驱动程序的基本结构: 在Linux设备驱动程序中,需要定义一个结构体file_...

    Linux设备驱动程序学习-170页-pdf

    《Linux设备驱动程序学习》是一本深入探讨Linux操作系统下设备驱动程序开发的教程,共170页。这本书旨在帮助读者理解Linux内核与设备之间的交互机制,掌握编写高效、稳定设备驱动的基本技能。标签“Linux 设备驱动 ...

    inux设备驱动开发学习笔记

    本学习笔记主要关注Linux环境下对设备驱动程序的构建和优化,这是一门涉及多方面知识的综合学科。 首先,我们要理解Linux设备驱动的基本概念。在Linux系统中,设备驱动是操作系统内核的一部分,它提供了与硬件设备...

    《Linux 设备驱动开发详解》(宋宝华) 学习笔记.zip

    《Linux 设备驱动开发详解》是宋宝华先生的一本经典著作,专注于讲解Linux系统下的设备驱动程序开发。这本书深入浅出地介绍了如何为各种硬件设备编写驱动程序,是嵌入式Linux开发者的重要参考资料。在学习这本书的...

    linux设备驱动程序笔记

    这份"Linux设备驱动程序笔记"深入浅出地讲解了如何编写和理解这些程序,对于学习Linux内核机制和提升系统开发能力具有极大价值。 笔记可能涵盖了以下几个核心知识点: 1. **设备模型**:Linux设备模型提供了一种...

    linux驱动程序设计学习笔记

    以上就是《Linux设备驱动程序》第三版学习笔记的主要内容,涵盖了Linux驱动开发的各个方面。通过深入学习和实践,你可以掌握构建高效、可靠的Linux驱动程序的技巧,为你的Linux开发事业奠定坚实的基础。

    Linux Kernel学习笔记

    以下是 Linux Kernel 的学习笔记,涵盖了存储器寻址、设备驱动程序开发、字符设备驱动程序、PCI 设备、内核初始化优化宏、访问内核参数的接口、内核初始化选项、内核模块编程和网络子系统等方面的知识点。...

Global site tag (gtag.js) - Google Analytics