嵌入式系统轮询结构

文章介绍了低端嵌入式系统中的轮询和带中断的轮询结构,包括它们的编程结构、优点(如简单编程和实时性)、以及带中断结构如何提高紧急事件响应和并发处理。同时提到了中断驱动结构带来的复杂性和同步协调问题。
摘要由CSDN通过智能技术生成

1.简单的轮询结构

在低端嵌入式系统中,处理器的处理能力较低,存储器容量较小,系统功能简单,通常只实现一些简单的控制操作。这种嵌入式系统不需要操作系统支持,应用软件直接在裸机上运行。

最简单的软件结构是轮询(Round-Robin)结构,应用程序重复循环检查每个外部输入条件,一旦有需要处理的任务,则进行相应的处理。循环轮询系统通常的软件结构如下:

初始化;

while(TRUE){

if(I/O设备1需要服务) 执行设备1服务函数;

if(I/O设备2需要服务) 执行设备2服务函数;

if(I/O设备3需要服务) 执行设备3服务函数;

……

if(I/O设备n需要服务) 执行设备n服务函数;

}

优点:程序结构简单,便于编程。

适用于系统任务数量少、任务处理简单且实时性要求不高的场景。

2.带中断的轮询结构

这种结构在简单的轮询结构的“主循环”基础上增加中断服务程序(ISR),中断服务程序处理特别紧急的服务请求,然后设置状态标志;循环主程序轮询这些状态标志,并进行后续的处理。

这种结构也被称为中断驱动结构或前后台结构,所谓后台是一个循环执行的轮询程序,前台则由若干中断服务程序组成。当有外部事件(例如温度传感器报警)发生时,外部事件提出中断请求,暂停后台运行的主循环,进行前台处理,处理完成后又回到后台继续运行主循环。

如果所有的外部事件处理操作都是由中断服务程序完成的,那么后台程序除了初始化操作外并不做任何事情。这是一种极端的情况。一般情况下,中断服务程序只进行紧急事件的处理,对于非紧急的处理操作,通过设置状态标志由后台循环程序处理。这样可以保证紧急事件能够及时得到中断服务。

带中断的轮询系统通常的软件结构如下:

BOOL SA=FALSE; /*事件A状态标志初值*/

BOOL SB=FALSE; /*事件B状态标志初值*/

……

事件A中断服务程序

{

    事件A紧急操作;

    SA=TRUE;

}

事件B中断服务程序

{

    事件B紧急操作;

    SB=TRUE;

}

……

void main(viod) /*后台循环程序*/

{

    while(TRUE){

        if(SA){

            SA=FALSE;

            事件A非紧急操作;

        }

        if(SB){

            SB=FALSE;

            事件B非紧急操作;

        }

        ……

    }

}

与简单的轮询结构相比,中断驱动结构提高了系统对紧急事件的响应速度,可以并发处理不同的异步事件,因而在一些小型的简单嵌入式系统中应用广泛。由于中断的引人,使得系统软件复杂度明显提高,必须谨慎处理中断嵌套、中断服务程序与主程序的同步协调等问题。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
海康威视嵌入式面试BSP主要是测试应聘者在嵌入式系统中的底层开发和调试方面的技能。 首先,对于海康威视嵌入式岗位面试BSP的要求一般会包括以下几个方面: 1. 操作系统知识:应聘者需要具备嵌入式操作系统的基本知识,例如Linux、RTOS等,了解操作系统的内核结构以及驱动程序的开发和调试。 2. C/C++语言编程能力:对于嵌入式系统,C/C++是主要的开发语言,应聘者需要具备熟练的编程能力和良好的代码质量意识。 3. 编程工具和调试技能:应聘者需要熟悉常用的开发工具,例如gcc、gdb等,并且具备一定的调试经验,能够定位和修复底层驱动程序的错误。 4. 硬件知识:应聘者需要了解嵌入式系统的硬件组成和接口标准,例如ARM架构、PCIe、USB等,能够根据硬件要求进行底层驱动程序的开发和适配。 在面试过程中,可能会遇到以下问题: 1. 请解释嵌入式操作系统和普通操作系统的区别。 2. 如何设计和实现一个简单的设备驱动程序? 3. 请解释中断和轮询的区别,并说明在什么情况下使用中断更为合适? 4. 当一个硬件设备出错时,如何进行调试和定位问题?举例说明。 此外,面试官还可能会通过编程题、技术问题和项目经验来考察应聘者的技能。 总之,海康威视嵌入式面试BSP主要考察应聘者在嵌入式底层开发和调试方面的技能和经验。应聘者需要熟悉操作系统、掌握C/C++编程技能、具备调试经验,并且对嵌入式硬件有一定的了解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值