linux内核编程--6字符设备

1.     概念

    字符设备是Linux三大设备之一(另外两种:块设备、网络设备)。

    字符设备:是指只能一个字节一个字节进行读写操作的设备,不能随机读取设备中的某一数据、读取数据要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED等。

    Linux自带的字符设备和块设备一般都会在/dev目录(可以是任意目录,这样是为了统一)下对应一个设备文件,用户层程序通过设备文件来使用驱动程序操作字符设备或块设备。用户可以通过:ls /dev 命令查看所有设备文件以字符“c”开头的代表字符设备,以字符“b”开头的代表块设备。如:


2.     字符设备、字符设备驱动与应用程序访问三者之间的关系

    如图所示,为Linux字符设备、驱动以及应用程序之间的的关系。这里要说明几点:

1)      内核通过dev_t来唯一描述一个字符设备

    旧的内核版本(2.6之前)定义其类型为16位为ushort型,高8位表示主设备号,低8位表示从设备号,主从设备号都有256个。随着系统规模的扩大(如SCSI存储阵列),设备数量渐渐超出了范围,于是将字符设备定义为32位整形,高12位代表主设备号,低20位代表从设备号。

强调:

    内核提供相关宏(MAJOR、MINOR)从dev_t结构中获取主设备号或从设备号。为了把保证兼容,无论dev_t用多少位表示,都不应该自作主张直接对dev_t结

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内核一直是学习的难点:将近3000万行代码,5万多个源文件,代码庞大繁杂、代码很难看懂。《Linux内核编程》将突破以往传统的学习方式,采取更有效和科学的学习方法,多角度地对内核进行多层次分析,不局限于形式,不拘泥细节,目的只有一个:更轻松、更高效地去理解内核、学习内核。为了更好地让学员掌握内核编程技能,更好地理解内核,本课程将采用并不局限于以下学习方法进行课程的录制:降维分析,化简为繁,将复杂的系统简单化用软件工程的方法分析内核:软件分层、模块化分解、框架迭代多角度立体分析Linux内核,目的只有一个:更好地理解内核利用Linux内核中的面向对象编程思想去分析复杂的子系统、子系统交互利用多任务编程的思想去分析Linux内核本套课程预计分为20个左右的小模块,每个模块一个专题,每个专题会陆续发布。拟录制的模块包括但不限于:模块机制、内核裁剪与配置、内核编译与启动、系统调用、中断、文件系统、调度、内存管理、内核同步、设备模型、字符驱动、块驱动、定时器、input、platform设备驱动、device tree、proc、sysfs、I/O...  本课程是《Linux内核编程》的入门篇,主要给大家介绍一下Linux内核开发、Linux驱动开发的就业行情、行业生态、需要掌握哪些技能、Linux内核的学习方法、如何搭建Linux内核的学习开发环境。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值