⑨当系统掉电时,由于RTOS对每个任务都要开辟单独内存区域,使之适应性更强,整个超等循环执行一次至少大于任务⑧需要的时间,对基于时间触发的编程模式进行了改造,除此之外。www-36ab-com 哪怕每种信号只做128点的FFT。 因为当系统掉电时,系统如果不能在这个时间内完成相关的操纵,比如ROM往往小丁32 KB。 把当前的电度底数写入EEPROM中。 就需要把一个耗时几秒的FFT运算任务拆分成几百个耗时10 ms左有的子任务,这里遇到的最大的挑战是对任务⑧的处理惩罚, 标签: 嵌入式系统(437) RTOS(40) 引言 目前,为此,简单的把它当成一个任务处理惩罚将影响系统对其他任务的响应,在超等循环中的代码布局如下: while(1){ 任务①; 任务②; 任务⑧; } 由于任务⑧执行一次要几秒钟的时间,也就是说这个超等循环循环一次要几秒钟时间,下面是时间触发编程模式的规范措施布局: 系统中每个任务都界说了优先级、任务循环周期和任务延迟时间,在中断措施中将接收到的字符生存在接收缓冲区或从发送缓冲区取下一个待发字符装入UART进行发送。 嵌入式软件凡是接纳两种传统的编程布局进行编程, ④每半秒对丈量数据进行一次从头收罗和计算,CPU的措施设计需完成以下任务: ①每半秒对前显示屏的显示数据进行一次刷新,系统按时器中断措施SCH Updatc()按设定的节拍对任务行列进行刷新,提高系统行为的可预测性,Michael J.Pont的基于时间触发的编程模式即属于此。 但是由于任务是不行剥夺的,系统电压将跌落至有效电压以下而丧失事情能力,但是在实际使用中,这就要求每个任务占用CPU的时间不能太长,这些系统由于本钱的限制。 措施布局如下: 这样,这势必造成系统本钱的增加,按照任务行列的状念布置任务的执行,发送时会导致字节间时间间隔太大,使用凡是的8位CPU进行6种信号的FFT调动。 在系统中尽量减少事件触发(减少中断的使用),可以为本钱和资源受限的小型嵌入式系统提供统一且有效的编程模式,一种叫前背景厅式或者叫超等循环布局,但是另有很大一部分产物使用是小型单片机,凡是资源很是有限,CPU要能快速响应。 为担保任务⑤的及时性, 要解决这个问题,在超等大循环中只执行任务调治器SCH_Dispatch_Tasks(),在超等大循环中每次按照状态只执行一个子任务。 其他任务只要在指定的周期内能得到执行就行, ⑦CPU通过SPI总线与LED数码管及收罗芯片通信, 针对这个问题,也必需为它布置一其中断,Michael J.Pont提出了一种基于时间触发的编程模式,这实际上是一种事件触发的编程模式,这显然是不行接受的,但是任务⑧比力非凡, 1.1 使用前背景方法进行编程 使用前背景方法进行编程时,将满足不了各任务响应时间的要求,系统只有不到10 ms的过渡时间,使措施布局简单、明了并提高系统的实时响应速度,存放任务的上下文和各任务独立的仓库。 当系统成果增加时要担保系统响应的及时性也是一个不小的挑战, 1 传统编程布局的局限性 当不使用RTOS时,任务⑤和任务⑨是强实时性的, ③每0.2 s对键盘进行一次扫描,使之在不提高硬件本钱的环境下。 对系统掉电事件如果不能及时响应会造成EEPROM的写入失败,RTOS出格是抢先式RTOS在嵌入式系统中的应用越来越遍及,因为任务⑧需要的执行时间太长了,否则将影响整个系统的响应速度, 布置好了背景的中断任务后再来看看前台的任务如何完成,所以。 系统通过任务调治器完成各任务的调治执行,循环体的执行时间是线性增加的,使编程人员更直观地界说任务,速率最高1 9 200 bps,FFT运算在这种编程模式下照旧必需进行有效的拆分,将每个子任务的耗时压缩到10 ms阁下, ⑤异步串行口与上位机使用Modhus通信,在实际设计中即使没有像任务⑧那样的高耗时任务, 这种编程布局制止了超等大循环布局循环时间随代码量的增加而线性增加的问题, 上述任务中,否则就必需提高CPU的档次或使用可剥夺型的抢先式RTOS,RAM小于2 KB,只有把任务⑧拆分成许多个子任务,下面以一个实际产物设计中遇到的问题为例来说明。 对付这些低本钱资源受限系统凡是接纳前背景(或者叫超等循环)布局进行编程,对Modbus协议的处理惩罚可以单独用一个任务在中断外处理惩罚, ②每0.1 s对DI/DO进行一次刷新,那么有没有更好的解决步伐呢? 下面的编程布局埘时间触发编程模式进行了改造,当系统稍微庞大时, ⑥CPU通过I2C总线与时钟芯片和EEPROM通信。 1.2 使用时间触发编程模式进行编程 时间触发编程模式的焦点是成立一个基丁时间触发的相助式的任务调治器,减少任务特性对系统措施布局的攻击, ⑧CPU要对所收罗的6路信号进行FFT调动,本质上是事件触发的编程方法;另一种叫时间触发编程模式,并界说好各个子任务完成后的状态,会发明这两种方法都有必然局限性,在设计一个用于配电柜的壁装式智能配电仪表时,超等大循环布局隐含的一个缺点就是跟着任务的增加,这担保了巾断措施的简短,并使措施的布局变得简洁。 接收时会导致字节丢失,就会使系统的措施编写变得很是庞大并使系统运行的可预测性迅速下降,当系统中差此外任务对时间要求差异较大时,傍边断数目较多且系统完成的成果相对庞大时, 在实际事情中,造成接收方的Modbus帧定界错误, ,这种要领有助于降低CPU的负荷并减少存储器的使用量,任务调治器只有在当前任务完成后才有机会执行,所以在这种系统中使用RTOS很是勉强。 当UART完成一个字节的收发后发生中断,运算一次也要好几秒,基于时间触发的编程模式难以给出简单有效的解决方案,为担保任务⑨响应的及时性,如果对串口的收发事件得不到及时响应,一旦任务启动执行。 下面来看用传统编程布局实现上述设计时遇到的困扰,使用了UART中断。 (责任编辑:admin) |