Linux 设备驱动开发 --01基本概念

11 篇文章 0 订阅

本文摘录参考书《Linux设备驱动开发详解》--宋宝华

 

驱动程序就是搭起应用软件和硬件之间的桥梁,做到软硬隔离。

1. 无操作系统 的驱动

功能单一的硬件设备,比如单片机是无需Linux操作系统的,其驱动程序可以理解为将点亮一个LED灯的写寄存器程序抽象出来,封装为一个借口,应用软件只需要调用该接口即可实现LED灯的控制,其架构可以理解为:

2. 有操作系统的驱动

1. 一个复杂的软件需要处理多个并发的任务,没有操作系统是不行的;

2. 操作系统提供了内存管理机制

驱动的分类:

1. 字符设备:触摸屏,鼠标(字符设备不经过系统的快速缓存)

2. 块设备:硬盘,软驱(需要系统快速缓存)

3. 网络设备 :

基本的接口是,系统调用open(), close(), read() , write()等函数访问字符和块设备。有你哥哥程序可以使用Linux的系统调用接口编程,也可以使用C库函数。处于代码可移植性的考虑,最好使用C函数库。fopen(), fclose(), fwrite(), fread(), 其本质也是调用了操作系统的API, open(), close(), read() , write()。

 

驱动知识必备:

1 硬件基础:SRAM,flash, SDRAM,磁盘读写方式, UART ,I2C , USB ,轮询,中断,DMA原理,PCT总线的工作方式,以及CPU的内存管理单元MMU等;

2. 编程基础:C语言,结构体,指针,函数指针,内存动态申请和释放;

3. Linux基础:设备驱动与内核接口,块设备,字符设备,串口设备,网络设备

4. 多线程: 多任务并发控制,同步机制,自旋锁,互斥,信号量,消息队列

 

设备驱动的学习方法:

动手实践是学习的最有效的方法,最好有个开发板,搭建虚拟机。

阅读Linux源码

 

驱动设备硬件相关

嵌入式微控制器也常被称为片上系统(SoC),含义是在一个芯片上设计整个系统;

典型的MCU结构:

 

处理器的分类:

 

存储器分类:

 

串口

RS232总线

RS232: 单机发送,多机接受的单向、平衡传输规范

RS422:改进了RS232通信距离短、速率低的缺点

RS485:增加了多点、双向通信能力即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护性,并扩展了总线共模范围;

UART:通用异步接收发送器,完成并、串口转换;

 

I2C总线

由飞利浦开发的两线串行总线,用于连接微控制器和外围设备。管脚少,设计成本低。支持多主控模式,任何能够进行发送和接收的设备都可以成为主设备。主控制能够控制数据的传输和时钟频率,在任意时刻只有一个主控。

 

 

USB总线

 

 

以太网接口

 

 

PCI总线

 

 

存储器、外设控制器资源占用表

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值