高级C语言教程-中断和设备驱动

来源:互联网 发布:征管基础数据核实表 编辑:程序博客网 时间:2024/06/05 11:50

简述设备驱动、Boot Loader与BSP之间的区别!
设备驱动是介于底层硬件与操作系统之间的一层软件。设备驱动的主要功能就是屏蔽硬件控制的具体细节,对操作系统提供一个抽象的、统一的硬件资源访问接口。
Boot Loader的概念。Boot Loader是一段固化在嵌入式系统目标系统ROM(或者诸如Flash等非易失性存储器)中的一段程序,他的主要作用就是引导操作系统(这也是为什么叫他Boot Lodaer 的原因)。
BSP,所谓的板级支持包类似于PC平台上的BIOS(BasicInputOutput System,基本输入输出系统)。一般而言,BSP也是一段固化在嵌入式系统目标目标系统ROM中的程序。
在UNIX系统中将文件抽象为字符流(Byte Sream),所谓的文件就是一个可以输入/输出的字符流。设备也可以被抽象为字符流,用户对这个设备的读和写可以抽象为对这个字符流的读和写,将所有对设备的操作都抽象为对文件的操作,这样做的好处就是;
第一,将设备和文件统一有利于操作系统的管理,实际上很多的外围的设备天然的和文件系统相关,比如磁盘驱动器,CF卡等,第二,不同的设备被抽象为文件,便于操作系统采用统一的方式管理不同的外为设备。
中断处理模块可能是设备驱动中最重要的部分之一,因为设备的异步特性,操作系统不可能采用轮询的方式,对设备进行管理,采用中断处理异步事件是唯一的选择。

设备驱动的中断处理程序主要包括

  1. 将设备的数据从硬件FIFO中读出来,并将数据存放到由设备驱动管理的软件接收缓冲区中,或者将需要发送给硬件设备数据从驱动管理的缓冲区写到硬件发送的FIFO中;
  2. 如果是由于硬件设备故障或者状态变化引起的中断,中断处理程序需要处理这些问题;
  3. 在处理基本的数据接收和发送工作之后,对于有操作系统的系统而言,中断处理程序需要通过调用一个系统调用的方式通知操作系统内核中断的发生,如果中断的发生激活了操作系统中更高优先级的任务,OS内核将通过任务调度器将任务由当前任务切换到更高优先级任务,
    说明:并不是所有的外围设备驱动都需要中断处理程序,某些设备(如 LCD)通常情况下是不需要中断处理的;
    中断的处理过程一般由硬件和软件两部分共同完成。实现的部分有:
    中断实现的两种方式,硬件实现还要软件实现方式的流程:

这里写图片描述

  1. 虽然现在的RISC处理器的大多数指令可以在一个周期内完成,但是依然存在一些特殊的指令必须在多个周期才能完成而这些指令运行期间CPU是不接受中断请求的,比如ARM指令中的LDM和STM两类指令,这些指令是多装宅多存储指令。他们的执行时间取决于软件程序员希望通过一条指令保存多少数据,在最坏的情况下可能需要十几个周期才能完成。
  2. 几乎所有的处理器在相应中断期间都是关闭中断的,也就是说CPU相应某个中断请求的时候,硬件会自动的将程序状态字中的中断使能位清除(ARM处理器刚好相反在相应中断时硬件会自动的在CPSR中设置一位禁止中断位),硬件之所以这样设计是为了防止CPU相应一个中断期间又进入另一个中断进而造成中断现场保存的混乱。总之默认情况下CPU相应中断之后不会在接受新的中断,也就是不支持中断的嵌套,CPU只有从该中断处理程序中退出之后才可能相应新的中断,虽然,在CPU完成中断现场保护工作之后,程序员可以通过软件重新打开中断以接收中断嵌套,但是在通常的情况下,操作系统的任务调度只能发生在外层中断返回时,对于嵌套的中断返回将不会发生在任务调度。

可重入函数和不可重入函数

可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 富贵竹叶子发黄怎么办水养 水养富贵竹有虫怎么办 水养的富贵竹叶子发黄怎么办 百合花水里的盐放多了怎么办 芦荟叶子发黄干瘪了怎么办 水插百合不开花怎么办 干百合冷水泡了怎么办 牡丹籽油过期了怎么办 ps画布建小了怎么办 腰突然疼的受不了了怎么办 微信里面打不开表格怎么办? 浏览器未正常加载相关控件怎么办 猫的眼睛发炎了怎么办 橡胶手机壳松了怎么办 橡胶手机壳小了怎么办 苹果手机下载不了软件了怎么办 苹果手机浏览器下载不了软件怎么办 小狗吃了硬的棉花怎么办 小狗吃了隔尿垫里的棉花怎么办 眼睫毛掉进眼睛里怎么办 爱掉头发怎么办吃什么 头皮屑多头发干燥脱发怎么办 剪了头发后悔了怎么办 2岁宝宝发际线高怎么办 脱发怎么办吃什么能长发 后面头发睡平了怎么办 鸟羽毛长得不好怎么办 吃激素药头发掉怎么办 吃了药头发掉怎么办 头皮痒头发掉的厉害怎么办 西昌学院被记过了怎么办? 初三了数学太差怎么办 板绘线条不流畅怎么办 嘴被风吹歪了怎么办 被风吹的嘴歪了怎么办 怀孕一个多月见红了怎么办 b本扣了6分怎么办 b牌驾驶证扣6分怎么办 忘记了谁考证的密码怎么办 专升本学校有课怎么办 跨境额度超了怎么办