第12章 Linux设备驱动的软件架构思想之设备驱动的分层思想(主机驱动与外设驱动分离的设计思想)

12.4 主机驱动与外设驱动分离的设计思想12.4.1 主机驱动与外设驱动分离    Linux中SPI、I2C、USB等子系统都利用典型的把主机驱动和外设驱动分离的想法,主机端只负责产生总线上的传输波形,而外设端通过标准的API让主机端以适当的波形访问自身。    这里涉及4个软件模块:    ...

2018-05-29 14:07:00

阅读数:68

评论数:0

第12章 Linux设备驱动的软件架构思想之设备驱动的分层思想(驱动核心层)

12.3.7 驱动核心层归纳总结出核心层的三大职责:1)对上提供接口。file_operations的读、写、ioctl都被中间层搞定,各种I/O模型也被处理掉了。2)中间层实现通用逻辑。可以被底层各种实例共享的代码都被中间层搞定,避免底层重复实现。3)对下定义框架。底层的驱动不再需要关心Linu...

2018-05-28 17:37:36

阅读数:14

评论数:0

第12章 Linux设备驱动的软件架构思想之设备驱动的分层思想(混杂设备驱动)

12.3.6 misc设备驱动    Linux驱动倾向于分层设计,各个具体的设备都可以找到它归属的类型,从而套到它相应的架构里面去,并且只需要实现最底层的那一部分。但是,也有部分类似globalmem、globalfifo的字符设备,确实不知道它属于什么类型,一般推荐大家采用miscdevice...

2018-05-28 17:21:51

阅读数:24

评论数:0

第12章 Linux设备驱动的软件架构思想之设备驱动的分层思想(终端设备驱动)

12.3.5 终端设备驱动    在Linux系统中,终端是一种字符型设备,终端有多种类型,通常使用tty(Teletype)来简称各种类型的终端设备。对于嵌入式系统,最普遍采用的是UART(Universal Asynchronous Receiver/Transmitter)串行端口,简称串口...

2018-05-28 15:04:18

阅读数:16

评论数:0

第12章 Linux设备驱动的软件架构思想之设备驱动的分层思想(Framebuffer设备驱动)

12.3.4 Framebuffer设备驱动    Framebuffer(帧缓冲)是Linux系统为显示设备提供的一个接口,Framebuffer将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。对于帧缓冲设备来说,只要在显示缓冲区中与显示点对应...

2018-05-28 10:36:44

阅读数:18

评论数:0

第12章 Linux设备驱动的软件架构思想之设备驱动的分层思想(RTC设备驱动)

12.3.3 RTC设备驱动    RTC(实时时钟)借助电池供电,在系统掉电的情况下正常计时。RTC通常还具有产生周期性中断以及闹钟(Alarm)中断的能力,是一种典型的字符设备。作为一种字符设备驱动,RTC需要有file_operations中接口函数的实现,如open()、release()...

2018-05-27 22:38:49

阅读数:13

评论数:0

第12章 Linux设备驱动的软件架构思想之设备驱动的分层思想(输入设备驱动)

12.3.2 输入设备驱动    输入设备(如按键、键盘、触摸屏、鼠标等)是典型的字符设备,其一般的工作机理是底层在按键、触摸等动作发送时产生一个中断(或驱动通过Timer定时查询),...

2018-05-27 21:33:28

阅读数:9

评论数:0

第12章 Linux设备驱动的软件架构思想之设备驱动的分层思想

12.3 设备驱动的分层思想12.3.1 设备驱动核心层和例化    在分层设计时,Linux内核大量使用了面向对象的设计思想。在面向对象的程序设计中,可以为某一类相似的事物定义一个基类,而具体的事物可以继承这个基类中的函数。对于继承的这个事物,某成员函数的实现与基类一致,那它就可以直接继承基类的...

2018-05-27 16:41:16

阅读数:19

评论数:0

第12章 Linux设备驱动的软件架构思想之platform设备资源和数据

12.2.3 platform设备资源和数据在linux/platform_device.h 中结构体platform_device的定义:struct platform_device {        const char      *name;        int             i...

2018-05-27 13:57:40

阅读数:16

评论数:0

第12章 Linux设备驱动的软件架构思想之globalfifo作为platform设备

将globalfifo驱动挂接到platform总线上,要完成两个工作。1、将globalfifo移植为platform驱动。2、添加globalfifo这个platform设备。    为完成将globalfifo移植到platform驱动的工作,需要在原始的globalfifo字符设备驱动中套...

2018-05-26 17:21:24

阅读数:15

评论数:0

第12章 Linux设备驱动的软件架构思想之平台总线、平台设备和平台驱动Demo

一、平台总线、平台设备和平台驱动简单实例1、驱动头文件#ifndef __VICHIP_H#define __VICHIP_H#define DRIVER_AUTHOR "xz@vi-chip.com.cn"#define DRIVER_DESC   &...

2018-05-26 15:53:57

阅读数:15

评论数:0

第12章 Linux设备驱动的软件架构思想之platform设备驱动

12.2 platform设备驱动12.2.1 platform总线、设备与驱动    在Linux 2.6以后的设备驱动模型中,需关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备时,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动时,会寻找与之匹配的设备,而匹配由总线...

2018-05-26 14:22:09

阅读数:14

评论数:0

第12章 Linux设备驱动的软件架构思想之Linux驱动的软件架构

本章重点    在实际的Linux驱动中,Linux内核尽量做得更多,以便底层的驱动可以做得更少。而且,也特别强调驱动的跨平台特性。因此,Linux内核会为不同的驱动子系统设计不同的框架。1、Linux驱动的软件架构设计的出发点。2、platform设备和驱动,以及platform的意义。Linu...

2018-05-26 11:35:44

阅读数:13

评论数:0

第11章 内存与IO访问之DMA

11.6 DMA(直接存储器访问)    DMA是一种无须CPU参与就可以让外设和系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率(bit/s)。DMA通常与硬件体系结构,特别是外设的总线技术密切相关。    DMA方...

2018-05-26 10:31:11

阅读数:13

评论数:0

第11章 内存与IO访问之I/O内存静态映射

11.5 I/O内存静态映射    在将Linux移植到目标电路板的过程中,有得会建立外围设备I/O内存物理地址到虚拟地址的静态映射,这个映射通过在与电路板对应的map_desc结构体数组中添加新的成员来完成,map_desc结构体的定义:arch/arm/include/asm/mach/map...

2018-05-25 16:25:43

阅读数:6

评论数:0

第11章 内存与IO访问之设备IO端口和I/O内存的访问

11.4 设备I/O端口和I/O内存的访问    设备通常会提供一组寄存器来控制设备、读写设备和获取设备状态,即控制寄存器、数据寄存器和状态寄存器。这些寄存器可能位于I/O空间中,也可能位于内存空间中。当寄存器位于I/O空间时,被称为I/O端口;当寄存器位于内存空间时,对应的内存空间被称为I/O内...

2018-05-25 15:55:14

阅读数:43

评论数:0

第11章 内存与IO访问之内存存取

11.3 内存存取11.3.1 用户空间内存动态申请#include <malloc.h>在用户空间中动态申请内存的函数为malloc(),这个函数在各种操作系统上的使用都是一致的,malloc()申请的内存的释放函数为free()。对于Linux而言,...

2018-05-24 22:32:23

阅读数:7

评论数:0

第11章 内存与IO访问之Linux内存管理

11.2 Linux内存管理    对于包含MMU的处理器来说,Linux系统提供复杂的存储管理系统,使得进程所能访问的内存达到4GB。    在Linux系统中,进程的4GB内存空间被分为两个部分——用户空间与内核空间。用户空间的地址一般分布为0~3GB,剩下的3~4GB为内核空间,如图11.5...

2018-05-24 17:54:06

阅读数:27

评论数:0

第11章 内存与IO访问之CPU与内存、I/O

本章知识点Linux系统提供复杂的内存管理功能,内存的概念在Linux系统中相对复杂,有常规内存、高端内存、虚拟地址、逻辑地址、总线地址、物理地址、I/O内存、设备内存、预留内存等概念。1、内存和I/O的硬件机制,主要涉及内存空间、I/O空间和MMU。2、Linux的内存管理、内存区域的分布、常规...

2018-05-24 14:46:19

阅读数:19

评论数:0

linux内核源码之基础准备篇

https://blog.csdn.net/eastmoon502136/article/details/8711104

2018-05-24 09:03:26

阅读数:8

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭