linux设备驱动入门


1.设备驱动的作用

设备驱动最通俗的解释就是 驱使硬件行动。

充当硬件和软件之间的纽带,使得应用软件只需要调用系统软件的(API)就可以让硬件去完成工作。

如对串口定义SerialSend();SerialRecv();
对Led 定义LightOn();LightOff(); 

对flash定义FlashWrite();FlashRead();


驱动工程师必须按照相应的架构设计设备驱动,
这样设备驱动才能良好的整合到操作系统的内核中。


2.无操作系统的设备驱动
对于功能单一、控制不复杂的系统并不需要多任务调度、文件系统、内存管理等复杂功能
用单任务架构完全可以很好的支持他们工作。
单任务典型框架如下
int main( int argc , char * argv[])
{
while(1)
{
if( serialInt == 1)
/*有串口中断*/
{
ProcessSerialInt();// 处理串口中断
serialInt = 0;  // 中断标志变量清零
}
if ( keyInt == 1)
/* 有按键中断*/
{
ProcessKeyInt();  //按键中断处理
keyInt = 0 ;       // 中断标志变量清零
}
status = ChckXX();
switch( status)
{
...
}
...

}
return  0 ;
}


系统不存在,设备驱动必须存在。
一般情况下对每一种设备驱动都定义一个软件模块包含.h和.c文件 .


3.有操作系统的设备驱动
首先,无操作系统时的设备驱动的硬件操作工作任然必训存在。
其次,将设备驱动融入内核。所以的设备驱动都必须面向操作系统的接口。
设备驱动就是连接硬件和内核的桥梁。
操作系统通过给设备驱动制造麻烦来到给上层应用提供方便。


4/设备分类
字符设备   指那些必训以串行顺序依次进行访问的设备,如触摸屏、鼠标。(不经过系统的快速缓冲)
块设备   可以任意顺序访问,以块为单位进行操作,如硬盘、软驱 (经过系统的快速缓冲)
网络设备    面向数据包的接收和发送而设计


编写linux设备驱动的技术基础


1、需懂得SRAM 、Flash、SDRAM、磁盘的读写方式,UART、I2C 、 USB等设备的接口,轮询、中断DMA的原理, PCI总线的工作方式以及cpu 的内存管理单元
2、C基础
3、linux内核基础(了解设备驱动与内核的接口,尤其是对于块设备、网络设备、Flash设备、串口设备等复杂设备
4. 有良好的多任务并发控制和同步控制基础,因为在驱动中会有使用大量的自旋锁、互斥、信号量等待队列等



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值