设备驱动开发详解
第一章 Linux设备驱动概述
硬件是基础,代码最终会落实为硬件的组合逻辑和时序逻辑。
OS适合于多任务环境。
计算机硬件:1. CPU 2. 存储器 3. 外设 驱动针对存储器与外设,而不是CPU核
字符设备:串行顺序访问
块设备:可随机访问
网络设备:不对应文件系统节点
Linux设备驱动重点:良好的硬件基础,懂得SRAM Flash SDRAM读写方式, UART IIC USB接口以及轮询,中断,DMA原理,PCI总线,MMU单元等。
第二章 驱动设计的硬件基础
主流嵌入式CPU: 1. ARM
2. MIPS公式的MIPS :常用于以太网交换
3. IBM与Motorola的PowerPC:常用于通信和工控
4. 飞思卡尔半导体公司的68K/Coldfire: 常用于DSP模块
Motorola的半导体部已独立为飞思卡尔半导体公司
中央处理器的体系:1. 冯洛伊曼结构 2. 哈佛结构
指令集: RISC CISC
DSP一般采用改进的哈佛结构
德州仪器(TI) 美国模拟器件公司(ADI)是全球DSP两大主要厂商
芯片使用:
一般来讲在一部手机中会使用多种芯片:1. MCU用于处理图形用户界面和OS
2. DSP进行音视频编解码
3. ASIC进行射频
存储器: 1. 只读存储器(ROM) 2. 闪存(Flash) 3. 随机存取存储器(RAM) 4. 光/磁介质存储器
ROM(将被Flash取代的趋势) :ROM(不可编程) PROM(可编程) EPROM(可擦出、可编程) EEPROM(电可擦出、可编程)
Flash:1. NOR Flash 或非Flash: Intel<---------SRAM----------->CPU接口
2. NAND Flash 与非Flash 东芝<---------------控制电阻转换--------------->CPU接口
一个Nand Flash接口主要信号:
1. I/O总线 2. 芯片启动 3.写使能 4. 读使能 5. 指令锁存使能 6. 地址锁存使能 7. 就绪/忙
NOR && NAND Flash对比:
1 容量/性价比: NAND > NOR
2. 擦写次数: NAND > NOR
3. 擦写/编程速度:NAND > NOR
4. 反转概率(出错):NAND > NOR
Flash 编程原理都是将1写成0,而不能将0写成1。所以在Flash编程之前必须将对应的块擦除,而擦出过程就是将所有位写1,块内的所有字节变成0xFF
问题:Flash可编程含义?擦出与编程含义?
典型的类SRAM接口 P26
ROM Flash 磁介质存储器 非易失性存储器(掉电不会丢失)
RAM(掉电丢失):静态RAM(SRAM) 动态RAM(DRAM)
DRAM 以电荷形式存储数据 存储在电容器中 有固定的刷新周期
SDRAM:无刷新频率
SDRAM,DDR均属于DRAM,采用与CPU外存控制器同步的时钟工作
原理图分析获得各种存储器,外设所使用的硬件资源。
主要包括存储器和外设控制器芯片所使用的片选,中断和DMA资源,大多情况下,硬件工程师已经做好。
分析方法: 以CPU为中心向存储器外设辐射
原理图元素:symbol 描述芯片的外围引脚及信号 P42页
Net描述芯片,接插件和分离原件的互联关系
时序分析: 驱动工程师调试电路板
作用:让芯片间的访问满足芯片手册中时序图信号的先后顺序;采样建立时间,保持时间的要求