tag 标签: 实时系统

相关博文
  • 热度 6
    2022-11-15 23:16
    641 次阅读|
    0 个评论
    在实时控制系统中使用传感器优化数据可靠性的3个技巧 实时控制是闭环系统在定义的时间窗口内收集数据、处理数据并更新系统的能力。作为文章“实时控制简介及其重要性”的续篇,本文将详细介绍实时控制系统的第一个功能块“检测(收集)数据”,并针对如何通过关注特定传感器参数来优化实时控制系统的数据捕获提供了三个技巧。 您可能需要监控 电机 的位置和转速、调节电动汽车(EV)充电站的输出功率,甚至需要测量车辆与其前方停车间的极近距离。无论什么应用,对于闭环系统的安全和性能而言, 传感器 速度、精度和可靠性等参数都至关重要。 技巧1:选择可在定义的时间窗口中收集数据并进行通信的传感器。 在瞬息万变的环境中,传感器响应、转换和通信速度对于实时控制系统至关重要。系统收集和处理数据的速度越快,更新输出的速度就越快,从而可以保持稳定性和效率。 我们看一个电动汽车 电池 包的示例。在此示例中,40多个传感器用于测量电芯温度。这些传感器提供的数据帮助维护电池的安全运行并优化充电效率。设计人员通常会面临的难题是连接负温度系数 热敏电阻 的点对点电缆会增加电动汽车的重量和成本。 要解决这个难题,如图1所示,您可以采用 TI TMP1826 温度传感器 的单线协议,以便减少所需电缆数量、降低整体重量并提高车辆效率。 未来的电动汽车有望成为能源来源,即在用电高峰或停电期间将存储的电能返回电网。管理这种潜在的能量交换是电网集成的一个方面,这使得通信成为电动汽车充电站的一项关键设计考量。无论是车辆充电点到电网,还是充电站到云端,前后端通信设计都必须满足充电过程中的数据、功能安全与信息安全标准,如图1所示。 图1:减少电动汽车电池温度传感器布线 不过,在一根总线上具有多个传感器的情况下,要让控制器可在定义的时间窗口中从每个温度传感器查询新的温度读数,必须确保通信速度足够快。值得庆幸的是,TMP1826等器件不仅支持传统应用所需的标准速度,还支持低延迟通信所需的具有90kbps数据速率的超速模式,使得实时控制系统能够正确更新每个电池模块的电芯温度。 买电子元器件现货上唯样商城 技巧2:选择高精度传感器并遵循最佳实践,以便尽量减少外部误差。 实时控制系统需要精确的反馈,而要实现这点的最简单方法就是使用高精度传感器。假设有一个通过电机控制的系统,如图2中的六轴 机械臂 或协作机器人。这些机器人需要精确的电机位置检测和控制,才能确保组装过程中的精确度和人机交互情况下的安全性。 如果能获取更加准确的电机位置,则可以减少机械容差。换句话说,位置传感器越精确,设计裕度越大。借助TMAG5170等高精度霍尔效应位置传感器,您可以准确监控电机的位置,同时可以对任何角度变化做出快速响应,以便实时控制处理单元可以对电机进行重新定位。 图2:多轴协作机器人 为实现准确测量,必须遵循最佳设计实践并考虑所有可能的误差源(如系统的机械缺陷或与信号链相关的误差)。如需了解在磁感应用中实现实时控制系统所需的精确角度反馈,请参阅实现超高系统角度感应精度应用手册中的指南。 技巧3:基于产品任务剖面选择可靠的传感器。 传感器的速度和精度是成功实现实时控制的两个关键因素。此外,要让传感器可以随着时间的推移正常运行,还必须考虑系统的寿命和运行环境条件。例如,图3中所示的卫星不仅需要承受太空中强烈的物理振动和大量辐射,还需要承受极端的温度变化。 图3:对于电子元件来说,太空的环境特别恶劣 在太空中进行实时控制的一个示例是卫星上的发电和配电系统。其中,电流检测放大器用于监测主电源轨输入电流,从而检测单粒子瞬变。一旦检测到过流事件,处理器会进行实时反应,以便关闭电子子系统,防止造成损坏。 TI在INA901- SP 和INA240-SEP等CSA产品中采用先进技术,如增强型航天塑料和耐辐射封装,可以在太空中保持高精度测量并实现实时控制。如需了解更多信息,请参阅技术文章电流检测放大器如何监测卫星的运行状况。 结语 检测通常是指测量电压、电流、电机转速、位置、湿度和温度等外部变量。要实现向控制系统实时发送数据变化,传感器的响应时间、通信速度、精度和可靠性是至关重要的参数。
  • 热度 27
    2016-1-21 17:09
    1364 次阅读|
    0 个评论
    实时调度机制(Real-Time Scheduler)是Windows Embedded Compact区别于其他所有Windows系统的最显著特性,同时也是开发嵌入式系统时需要着重考虑的部分。在工程领域对“实时”的理解,我非常欣赏下面的定义: “一个实时系统必须要满足明确的(受限的)响应时间约束或风险的严重后果,包括失效状态” - 出自于Phillip A. Laplante 《Real-Time System Design and Analysis》 所以,一个实时系统中执行一个代码必须在规定的时间约束内有明确的结果,否则就可能会导致系统失效,实时并不一定意味着快速处理能力。 而Windows Embedded Compact正符合上述对于实时系统的定义,因此为了进一步理解,我们首先来了解它的任务调度机制,WinCE的任务调度内核每隔1ms查询一次现有任务并依据下面两个原则来决定处理哪个任务: a). 具有更高优先级的任务先被执行 b). 同样优先级的任务按100ms时间间隔(或Task Quantum定义的时间间隔)循环轮流执行 对于第一条规则,WinCE提供256个优先级等级(0-255),数字越小优先级越高,因此0级为最高优先级,关于优先级的应用本文不做重点描述,请参考下面文章: Real-Time Priority System Levels (Windows Embedded CE 6.0) 对于第二条规则,当多个待处理任务拥有同样的优先级,将按照100ms时间间隔(可以根据Thread Quantum自定义)循环轮流执行。例如有N个同样优先级的任务,当第一个运行了上述定义时间片(WinCE称其为Quantum,如100ms),系统内核就会将其中断然后执行第二个任务,依此类推,直到N个任务都执行过一个Quantum时间后再重新回到第一个任务执行,如此循环。任一个线程最多只能运行一个Quantum的时间,除非另一个更高优先级的任务需要占用CPU,则按照第一条规则,这个线程会被更高优先级任务占用。   下面我们通过两个例子来验证上述两个规则,硬件平台使用 Toradex Colibri VF61 (NXP/Freescale Vybrid Cortex-A5 )计算机模块搭配 Iris 载板 ,软件使用Toradex提供的对应此平台的工业级的 WinCE6 OS 和 GPIO 库 。 a). 软硬件平台搭建请参考开发指南,如下图所示 b). 验证原理为在系统中启动两个任务,第一个任务驱动硬件某个GPIO输出为低电平,而另一个则将同一个GPIO输出为高电平;再将这两个任务的优先级分别设置为相同和不同时候,通过观测GPIO连接的示波器输出来判定上述的两个调度规则。关键代码如下:创建两个线程入口函数ThreadON和ThreadOFF,分别用来将选定的GPIO输出为高电平和低电平,而从函数内部代码可见会持续输出高电平或者低电平,因此我们通过示波器观察GPIO管脚的输出即可得出目前是哪个函数在运行。 -------------------------------------------------------------------------------------------------------------- #include windows.h #include "gpio.h"   // === define constant pins / gpios === // SODIMM pin 101 uIo io1 = COLIBRI_PIN(101); HANDLE hGpio; HANDLE hThreadON, hThreadOFF;   //define ThreadON DWORD WINAPI ThreadON ( LPVOID lpParam ){      //Set Thread Priority      CeSetThreadPriority(GetCurrentThread(), 100);      Sleep(5); //Allow the orther Thread to configure it's PRIO      //FNFINITE LOCKING LOOP      while(1){          //Set GPIO logic high          Gpio_SetLevel(hGpio, io1, ioHigh);      }      return 0; } //define ThreadOFF DWORD WINAPI ThreadOFF ( LPVOID lpParam ){      //Set Thread Priority      CeSetThreadPriority(GetCurrentThread(), 100);      //FNFINITE LOCKING LOOP      while(1){          //Set GPIO logic low          Gpio_SetLevel(hGpio, io1, ioLow);      }      return 0; } //============================================================================= // Application Entry Point // // The simple error handling using ASSERT statements is only effective when // the application is run as a debug version. //============================================================================= int wmain(int argc, _TCHAR* argv[])   {     BOOL success;     // === Initialize GPIO library. ===     // We don't use registry-based  configuration, thus we can     // pass NULL go Gpio_Init()     hGpio = Gpio_Init(NULL);       ASSERT(hGpio != 0);     success = Gpio_Open(hGpio);     ASSERT (success);     // Configure the pin to act as GPIO (as opposed to an Alternate function)     // Set it to Output,  High     Gpio_ConfigureAsGpio(hGpio, io1);     Gpio_SetDir         (hGpio, io1, ioOutput);     Gpio_SetLevel       (hGpio, io1, ioHigh);       CeSetThreadPriority(GetCurrentThread(), 99);      //Create two concorrent Threads, one set GPIO to High and other to Low      hThreadON = CreateThread(NULL, 0, ThreadON, NULL, 0, NULL);     hThreadOFF = CreateThread(0, 0, ThreadOFF, NULL, 0, NULL);     //Time to finish the Program Sleep(3000);       return(TRUE); } -------------------------------------------------------------------------------------------------------------- c). 首先我们来测试第二条规则,将两个任务的优先级设置为相同值(如上面代码为100),运行程序后示波器图形如下,可以看到每隔100ms GPIO输出循环交替变化,完全符合我们第二条规则。 d). 然后我们再来测试第一条规则,如下修改一个任务(ThreadON)的代码,将其优先级提高到99,另外在循环中增加一个5ms的暂停时间。 -------------------------------------------------------------------------------------------------------------- DWORD WINAPI ThreadON ( LPVOID lpParam ){      //Set Thread Priority      CeSetThreadPriority(GetCurrentThread(), 99);      Sleep(5); //Allow the orther Thread to configure it's PRIO      //FNFINITE LOCKING LOOP      while(1){          //Set GPIO logic high          Gpio_SetLevel(hGpio, io1, ioHigh);                 Sleep(5);      }      return 0; } -------------------------------------------------------------------------------------------------------------- e). 运行修改后的程序,示波器输出如下结果,每隔7ms左右有一个拉高的脉冲,表示每次当高优先级的任务(ThreadON)从5ms 暂停时间恢复后,都会中断低优先级任务的执行,这样完全符合第一条规则的描述。   当然,以上所有测试都是基于单核心系统,从Windows Embedded Compact 7 开始,WinCE内核提供了对多核心处理器的支持,同时也有一个新的属性“affinity”来定义哪一个核心来执行哪一个线程,所以如果在多核系统和WEC7上面运行上述例子,同时并未限定线程在同一个核心上面执行,则结果会不同因为两个线程会同时在不同核心上面运行。当然,其实正常应用情况下我们是不建议设置“affinity”参数的,因为这样就无法使得内核调度来自动安排线程在最先空闲的核心上面运行,达不到降低延迟提高系统性能的要求了。 实时系统目前在包括工业自动化,机器人和医疗领域等嵌入式设备上面有广泛的需求,因此了解WinCE的实时调度工作机制以及如何使用线程可以让我们的应用程序实时稳定的执行,让我们更高效可靠的利用WinCE搭建我们的实时系统!
  • 热度 33
    2016-1-21 17:09
    1231 次阅读|
    0 个评论
    实时调度机制(Real-Time Scheduler)是Windows Embedded Compact区别于其他所有Windows系统的最显著特性,同时也是开发嵌入式系统时需要着重考虑的部分。在工程领域对“实时”的理解,我非常欣赏下面的定义: “一个实时系统必须要满足明确的(受限的)响应时间约束或风险的严重后果,包括失效状态” - 出自于Phillip A. Laplante 《Real-Time System Design and Analysis》 所以,一个实时系统中执行一个代码必须在规定的时间约束内有明确的结果,否则就可能会导致系统失效,实时并不一定意味着快速处理能力。 而Windows Embedded Compact正符合上述对于实时系统的定义,因此为了进一步理解,我们首先来了解它的任务调度机制,WinCE的任务调度内核每隔1ms查询一次现有任务并依据下面两个原则来决定处理哪个任务: a). 具有更高优先级的任务先被执行 b). 同样优先级的任务按100ms时间间隔(或Task Quantum定义的时间间隔)循环轮流执行 对于第一条规则,WinCE提供256个优先级等级(0-255),数字越小优先级越高,因此0级为最高优先级,关于优先级的应用本文不做重点描述,请参考下面文章: Real-Time Priority System Levels (Windows Embedded CE 6.0) 对于第二条规则,当多个待处理任务拥有同样的优先级,将按照100ms时间间隔(可以根据Thread Quantum自定义)循环轮流执行。例如有N个同样优先级的任务,当第一个运行了上述定义时间片(WinCE称其为Quantum,如100ms),系统内核就会将其中断然后执行第二个任务,依此类推,直到N个任务都执行过一个Quantum时间后再重新回到第一个任务执行,如此循环。任一个线程最多只能运行一个Quantum的时间,除非另一个更高优先级的任务需要占用CPU,则按照第一条规则,这个线程会被更高优先级任务占用。   下面我们通过两个例子来验证上述两个规则,硬件平台使用 Toradex Colibri VF61 (NXP/Freescale Vybrid Cortex-A5 )计算机模块搭配 Iris 载板 ,软件使用Toradex提供的对应此平台的工业级的 WinCE6 OS 和 GPIO 库 。 a). 软硬件平台搭建请参考开发指南,如下图所示 b). 验证原理为在系统中启动两个任务,第一个任务驱动硬件某个GPIO输出为低电平,而另一个则将同一个GPIO输出为高电平;再将这两个任务的优先级分别设置为相同和不同时候,通过观测GPIO连接的示波器输出来判定上述的两个调度规则。关键代码如下:创建两个线程入口函数ThreadON和ThreadOFF,分别用来将选定的GPIO输出为高电平和低电平,而从函数内部代码可见会持续输出高电平或者低电平,因此我们通过示波器观察GPIO管脚的输出即可得出目前是哪个函数在运行。 -------------------------------------------------------------------------------------------------------------- #include windows.h #include "gpio.h"   // === define constant pins / gpios === // SODIMM pin 101 uIo io1 = COLIBRI_PIN(101); HANDLE hGpio; HANDLE hThreadON, hThreadOFF;   //define ThreadON DWORD WINAPI ThreadON ( LPVOID lpParam ){      //Set Thread Priority      CeSetThreadPriority(GetCurrentThread(), 100);      Sleep(5); //Allow the orther Thread to configure it's PRIO      //FNFINITE LOCKING LOOP      while(1){          //Set GPIO logic high          Gpio_SetLevel(hGpio, io1, ioHigh);      }      return 0; } //define ThreadOFF DWORD WINAPI ThreadOFF ( LPVOID lpParam ){      //Set Thread Priority      CeSetThreadPriority(GetCurrentThread(), 100);      //FNFINITE LOCKING LOOP      while(1){          //Set GPIO logic low          Gpio_SetLevel(hGpio, io1, ioLow);      }      return 0; } //============================================================================= // Application Entry Point // // The simple error handling using ASSERT statements is only effective when // the application is run as a debug version. //============================================================================= int wmain(int argc, _TCHAR* argv[])   {     BOOL success;     // === Initialize GPIO library. ===     // We don't use registry-based  configuration, thus we can     // pass NULL go Gpio_Init()     hGpio = Gpio_Init(NULL);       ASSERT(hGpio != 0);     success = Gpio_Open(hGpio);     ASSERT (success);     // Configure the pin to act as GPIO (as opposed to an Alternate function)     // Set it to Output,  High     Gpio_ConfigureAsGpio(hGpio, io1);     Gpio_SetDir         (hGpio, io1, ioOutput);     Gpio_SetLevel       (hGpio, io1, ioHigh);       CeSetThreadPriority(GetCurrentThread(), 99);      //Create two concorrent Threads, one set GPIO to High and other to Low      hThreadON = CreateThread(NULL, 0, ThreadON, NULL, 0, NULL);     hThreadOFF = CreateThread(0, 0, ThreadOFF, NULL, 0, NULL);     //Time to finish the Program Sleep(3000);       return(TRUE); } -------------------------------------------------------------------------------------------------------------- c). 首先我们来测试第二条规则,将两个任务的优先级设置为相同值(如上面代码为100),运行程序后示波器图形如下,可以看到每隔100ms GPIO输出循环交替变化,完全符合我们第二条规则。 d). 然后我们再来测试第一条规则,如下修改一个任务(ThreadON)的代码,将其优先级提高到99,另外在循环中增加一个5ms的暂停时间。 -------------------------------------------------------------------------------------------------------------- DWORD WINAPI ThreadON ( LPVOID lpParam ){      //Set Thread Priority      CeSetThreadPriority(GetCurrentThread(), 99);      Sleep(5); //Allow the orther Thread to configure it's PRIO      //FNFINITE LOCKING LOOP      while(1){          //Set GPIO logic high          Gpio_SetLevel(hGpio, io1, ioHigh);                 Sleep(5);      }      return 0; } -------------------------------------------------------------------------------------------------------------- e). 运行修改后的程序,示波器输出如下结果,每隔7ms左右有一个拉高的脉冲,表示每次当高优先级的任务(ThreadON)从5ms 暂停时间恢复后,都会中断低优先级任务的执行,这样完全符合第一条规则的描述。   当然,以上所有测试都是基于单核心系统,从Windows Embedded Compact 7 开始,WinCE内核提供了对多核心处理器的支持,同时也有一个新的属性“affinity”来定义哪一个核心来执行哪一个线程,所以如果在多核系统和WEC7上面运行上述例子,同时并未限定线程在同一个核心上面执行,则结果会不同因为两个线程会同时在不同核心上面运行。当然,其实正常应用情况下我们是不建议设置“affinity”参数的,因为这样就无法使得内核调度来自动安排线程在最先空闲的核心上面运行,达不到降低延迟提高系统性能的要求了。 实时系统目前在包括工业自动化,机器人和医疗领域等嵌入式设备上面有广泛的需求,因此了解WinCE的实时调度工作机制以及如何使用线程可以让我们的应用程序实时稳定的执行,让我们更高效可靠的利用WinCE搭建我们的实时系统!
相关资源
  • 所需E币: 1
    时间: 2023-3-8 10:18
    大小: 8.52MB
    汽车电子/电气架构-实时系统的建模与评价
  • 所需E币: 2
    时间: 2022-3-4 11:14
    大小: 235.81KB
    上传者: ZHUANG
    基于VME实时系统的机器人控制器研究
  • 所需E币: 1
    时间: 2021-4-6 16:57
    大小: 789.14KB
    上传者: czd886
    CFA图像插值算法在DSP实时系统上的应用
  • 所需E币: 1
    时间: 2021-4-8 10:30
    大小: 15.48MB
    上传者: czd886
    面向新一代光接入网的实时系统及若干DSP技术研究
  • 所需E币: 1
    时间: 2021-4-8 10:37
    大小: 1.52MB
    上传者: czd886
    虚拟3D声音技术研究和基于DSP技术的实时系统实现
  • 所需E币: 1
    时间: 2020-12-25 19:52
    大小: 5.97MB
    上传者: czd886
    基于FPGA的图像高速去雾实时系统设计实现
  • 所需E币: 4
    时间: 2019-12-26 10:51
    大小: 425.6KB
    上传者: givh79_163.com
    设计和开发实时系统……
  • 所需E币: 3
    时间: 2019-12-26 01:16
    大小: 70.91KB
    上传者: 238112554_qq
    嵌入式实时系统调度策略……
  • 所需E币: 4
    时间: 2019-12-26 01:16
    大小: 70.02KB
    上传者: quw431979_163.com
    嵌入式实时系统设计模式的研究与应用……
  • 所需E币: 5
    时间: 2019-12-26 01:13
    大小: 94.68KB
    上传者: rdg1993
    基于消息服务器的嵌入式实时系统进程管理研究……
  • 所需E币: 5
    时间: 2019-12-25 23:05
    大小: 95.96KB
    上传者: givh79_163.com
    采用TMS320C30DSP实现一种肺部听诊声谱仪的实时系统……
  • 所需E币: 4
    时间: 2019-12-25 23:01
    大小: 37KB
    上传者: 978461154_qq
    本文概述了DSP芯片的特点与发展现状,对DSP芯片及其应用作了一些有益的探讨,并系统地分析了两个带有DSP芯片的应用系统的构成及性能……
  • 所需E币: 3
    时间: 2019-12-25 21:02
    大小: 523.84KB
    上传者: 978461154_qq
    uC/OS-II源码公开的嵌入式实时多任务操作系统内核……
  • 所需E币: 4
    时间: 2019-12-25 17:30
    大小: 2.86MB
    上传者: rdg1993
    UCOS2.52源码……
  • 所需E币: 3
    时间: 2019-12-25 16:03
    大小: 1.83MB
    上传者: quw431979_163.com
    ucos2中文手册第一章:范例在这一章里将提供三个范例来说明如何使用C/OS-II。笔者之所以在本书一开始就写这一章是为了让读者尽快开始使用C/OS-II。在开始讲述这些例子之前,笔者想先说明一些在这本书里的约定。这些例子曾经用BorlandC/C++编译器(V3.1)编译过,用选择项产生Intel/AMD80186处理器(大模式下编译)的代码。这些代码实际上是在IntelPentiumIIPC(300MHz)上运行和测试过,IntelPentiumIIPC可以看成是特别快的80186。笔者选择PC做为目标系统是由于以下几个原因:首先也是最为重要的,以PC做为目标系统比起以其他嵌入式环境,如评估板,仿真器等,更容易进行代码的测试,不用不断地烧写EPROM,不断地向EPROM仿真器中下载程序等等。用户只需要简单地编译、链接和执行。其次,使用BorlandC/C++产生的80186的目标代码(实模式,在大模式下编译)与所有Intel、AMD、Cyrix公司的80x86CPU兼容。1.00安装C/OS-II本书附带一张软盘包括了所有我们讨论的源代码。是假定读者在80x86,Pentium,或者Pentium-II处理器上运行DOS或Windows95。至少需要5Mb硬盘空间来安装uC/OS-II。请按照以下步骤安装:1.进入到DOS(或在Windows95下打开DOS窗口)并且指定C:为默认驱动器。2.将磁盘插入到A:驱动器。3.键入A:INSTALL【drive】注意『drive』是读者想要将C/OS-II安装的目标磁盘的盘符。INSTALL.BAT……
  • 所需E币: 5
    时间: 2019-12-25 16:03
    大小: 1.83MB
    上传者: quw431979_163.com
    ucos2中文资料第一章:范例在这一章里将提供三个范例来说明如何使用C/OS-II。笔者之所以在本书一开始就写这一章是为了让读者尽快开始使用C/OS-II。在开始讲述这些例子之前,笔者想先说明一些在这本书里的约定。这些例子曾经用BorlandC/C++编译器(V3.1)编译过,用选择项产生Intel/AMD80186处理器(大模式下编译)的代码。这些代码实际上是在IntelPentiumIIPC(300MHz)上运行和测试过,IntelPentiumIIPC可以看成是特别快的80186。笔者选择PC做为目标系统是由于以下几个原因:首先也是最为重要的,以PC做为目标系统比起以其他嵌入式环境,如评估板,仿真器等,更容易进行代码的测试,不用不断地烧写EPROM,不断地向EPROM仿真器中下载程序等等。用户只需要简单地编译、链接和执行。其次,使用BorlandC/C++产生的80186的目标代码(实模式,在大模式下编译)与所有Intel、AMD、Cyrix公司的80x86CPU兼容。1.00安装C/OS-II本书附带一张软盘包括了所有我们讨论的源代码。是假定读者在80x86,Pentium,或者Pentium-II处理器上运行DOS或Windows95。至少需要5Mb硬盘空间来安装uC/OS-II。请按照以下步骤安装:1.进入到DOS(或在Windows95下打开DOS窗口)并且指定C:为默认驱动器。2.将磁盘插入到A:驱动器。3.键入A:INSTALL【drive】注意『drive』是读者想要将C/OS-II安装的目标磁盘的盘符。INSTALL.BAT……
  • 所需E币: 5
    时间: 2019-12-25 12:41
    大小: 27.13KB
    上传者: givh79_163.com
    嵌入式系统以及如何构造一个嵌入式系统概览……
  • 所需E币: 3
    时间: 2019-12-25 12:16
    大小: 572KB
    上传者: wsu_w_hotmail.com
    实时系统概念第2章实时系统概念12.0前后台系统(Foreground/BackgroundSystem)12.1代码的临界段22.2资源22.3共享资源22.4多任务22.5任务22.6任务切换(ContextSwitchorTaskSwitch)32.7内核(Kernel)32.8调度(Scheduler)42.9不可剥夺型内核(Non-PreemptiveKernel)42.10可剥夺型内核52.11可重入性(Reentrancy)52.12时间片轮番调度法72.13任务优先级72.142.14静态优先级72.15动态优先级72.16优先级反转72.17任务优先级分配82.18互斥条件102.18.1关中断和开中断102.18.2测试并置位112.18.3禁止,然后允许任务切换112.18.4信号量(Semaphores)122.19死锁(或抱死)(Deadlock(orDeadlyEmbrace))162.20同步162.21事件标志(EventFlags)182.22任务间的通讯(IntertaskCommunication)182.23消息邮箱(MessageMailboxes)182.24消息队列(MessageQueue)192.25中断202.26中断延迟202.27中断响应212.28……
  • 所需E币: 4
    时间: 2019-12-25 10:32
    大小: 585KB
    上传者: 二不过三
    实时系统嵌入式系统概论第二章实时系统北京大学软件与微电子学院嵌入式系统概论实时-主要内容基本概念实时任务调度实时操作系统实时系统构建小结北京大学软件与微电子学院嵌入式系统概论实时-基本概念TermsandConceptsTypeofTimingAttributes北京大学软件与微电子学院嵌入式系统概论实时-TermsandConcepts(1)RealTimeSystemDefinitionAreal-timesystemisasystemwherethecorrectfunctioningofthesystemdependsontheresultsproducedbythesystemandthetimeatwhichtheseresultsareproduced-JaneW.S.Liu实时系统是指在确定时间内完成规定功能,并……
  • 所需E币: 4
    时间: 2019-12-26 01:49
    大小: 115.03KB
    上传者: 16245458_qq.com
    实时系统编程学习……