Linux-笔记 Linux驱动开发初探及心得

本文介绍了Linux驱动开发的关键概念,包括不直接操作寄存器的重要性、驱动需符合框架、通过/dev/xxx文件交互,以及新内核的设备树功能。详细阐述了字符设备驱动(如点灯、按键)、块设备驱动(如SD卡、硬盘)和网络设备驱动(如网卡)的区别与特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Linux驱动开发思维

        1、Linux下驱动直接操作寄存器不现实

        2、要根据Linux下的各种驱动框架进行开发,一定要满足框架,要对Linux下的各种驱动框架有一定掌握。

        3、驱动最终表现是在/dev/xxx下的文件,Linux之下一切皆文件。涉及文件就有打开、关闭、读、写等操作。

        4、新内核支持设备树(.dts文件),该文件描述了板子的设备信息。不同设备有不同的信息,将这些信息写到设备树中,内核会分析设备树获得相关信息,相关的驱动和设备就会匹配。所以有设备树的情况下,第一件事就是在设备树中添加板

子的信息到设备树中,让内核知道板子有哪些设备。

二、Linux驱动开发分类

        1、字符设备驱动

                字符设备是最基本的一类设备驱动,它是以一个字节一个字节按照字节流进行读写操作的设备,读写数据分先后顺序,比如平时点灯、按键、SPI、IIC、LCD等都是字符设备,这些设备的驱动就叫字符设备驱动。字符设备是顺序的数据流设备,按照字节进行读写访问,字符设备不需要缓冲区,都是实时访问。

        2、块设备驱动

                块设备驱动相对字符设备驱动要复杂一些,块设备是针对存储设备的,比如平时我们熟悉的SD卡、各种Flash(NAND Flash、Nor Flash、 SPI Flash)、EMMC、硬盘等,块设备驱动就是上述这些存储设备的驱动。

                块设备只能以块为单位进行读写访问,而且块是Linux虚拟文件系统(VFS)基本的数据传输单位。块设备在结构上可以进行随机访问,并且块设备使用缓冲区来暂时存放数据,等到条件成熟以后在一次性将缓冲区中的数据写入块设备中,这样可以提高存储器的使用寿命。

        3、网络设备驱动

                网络设备最常见就是网卡,网络设备以数据包的形式交互。

            

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值