返回列表 发帖

[站长原创] 跟我学嵌入式基础知识篇 -认识Linux驱动

[站长原创] 跟我学嵌入式基础知识篇 -认识Linux驱动

跟我学嵌入式基础知识篇 -认识Linux驱动

嵌入式开发联盟www.mcuos.com

Osboy站长原创

QQ:82475491

Mcuos.com@gmail.com[/url]


1.何为Linux驱动?

驱动的概念就是用软件去控制硬件行为,Linux驱动就是基于Linux的操作系统的软件控制硬件的行为的一组代码。


2.如何学习好Linux驱动?

Osboy总结了以下重要的知识点,在别的文章里我们将重点讨论以下知识点。


Linux设备驱动类型知识点 :

- 驱动类型分为字符型驱动和块驱动。例如写一个开关led灯的驱动就是字符型驱动,硬盘驱动,usb驱动就是块驱动。还有一类驱动介于这两者之间的是MTD驱动,典型的就是nand,nor flash驱动。他们既有块的特性也有字符型的特性。第三种类型的驱动就是网络驱动。他不属于字符和块驱动,属于第三种类型的驱动。


Linux字符型设备驱动知识点:

注意:cdev结构的是分配,初始化和注册。设计到函数有cdev_alloc,cdev_init,cdev_add.其实字符型驱动就这么三步。读写字符型驱动用write,read,ioctl等文件系统接口。


Linux块型设备驱动知识点:

说白了就是gendisk结构体的实现和注册。注意读写块驱动不能类似于文件系统的read,write,而应该注意request中的读写操作。


Linux网络设备驱动知识点:

网路驱动有自己的驱动结构,我们会在具体的网络驱动帖子里讲解。


Linux设备驱动中的并发与竞争:

信号量,互斥锁,spin_lock自旋锁机制你了解多少?对于程序中并发运行的代码如何对共享资源进行保护?特别现在双核处理器的出现,如何确保资源的竞争是linux驱动开发中的难点。


Linux设备驱动中的阻塞与非阻塞:

当程序在申请硬件资源的时候,如果资源未就绪,那么该进程是该睡眠还是该返回资源不可用?这就是阻塞和非阻塞的概念,阻塞的话就是睡眠该进程,直到资源就绪,非阻塞就是直接放弃等待该资源或者一直循环等待该资源,不会放弃CPU。注意可阻塞的操作不能在中断处理函数中进行哦。


Linux设备驱动中的异步通知:

异步通知和阻塞非阻塞一起完善了设备资源访问的各种情况,他们之间自身没有优略可比性,仅仅视情况而定。

顾名思义就是,设备通知进行资源可访问,通知的方式可以是信号,可以是中断。


Linux设备驱动中的中断、定时与延时:

熟悉Linux的中断机制是编写驱动程序的必备知识点,我有写过关于“linux中断机制”的帖子,一定要自己阅读。

Linux的定时,延时机制也比较重要,sleep,usleep,msleep,mdelay,udelay这类函数代表的意义,还有linux的setup_timer机制,如何在驱动程序中实现一个定时器?



Linux设备驱动中的内存使用和访问:

任何时候内存的使用和管理都是个难点,知道驱动中如何使用cache和none-cache,dma连续内存的分配是个关键。知道你自己开发的系统中内存的使用和分配情况是个难点,我们会在其他章节讲解。


3.为什么要大力推广linux驱动开发工作?


试着想想,哪家半导体大公司没有软件部门,芯片中有软件操作的部分就需要我们写驱动哦,而且Linux越来越流行,工作机会当然多的是啦。

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

这篇是总纲?

TOP

返回列表
网页右侧QQ悬浮滚动在线客服
网页右侧QQ悬浮滚动在线客服