全国服务热线:400-0859-208

位置:长沙粤嵌嵌入式IT培训机构 > 学校动态 > 嵌入式对时间触发编程模式的改进

嵌入式对时间触发编程模式的改进

来源:长沙粤嵌嵌入式IT培训机构时间:2022/6/6 15:38:47

FFT运算在这种编程模式下是必须进行有效的拆分,否则就必须提高CPU的档次或使用可剥夺型的抢先式RTOS,但是这势必会造成系统成本的增加。那么有没有更好的解决办法呢?

办法就是对“时间触发编程模式”进行改进,使之在不提高硬件成本的情况下,使编程人员更直观地定义任务,减少任务特性对系统程序结构的冲击,使程序结构简单明了并提高系统的实时响应速度。根据多年嵌入式系统编程的经验,通常嵌入系统的任务可以划分成3种类型:

(1)及时型任务;

(2)周期型任务;

(3)背景型任务;

及时型任务的特点:这类任务是事件触发型的,一旦事件发生,系统必须在限定的时间内进行响应,对这类任务,较自然的方法就是使用中断来完成,即定义成“前后台方式”中的后台任务。

周期型任务的特点:这类任务是时间触发式周期型的,系统必须增加在指定的周期内执行任务,“时间触发编程模式”可以很好地满足这类任务的需求。

背景型任务的特点:这类任务是非实时型的,实时性不是非常重要,系统在运行过程中可随时中断这类任务以便执行前两类任务,系统只要能充分利用资源尽较大可能完成这类任务即可,这类任务较适合定义成“前后台方式”中的前台任务。

根据以上任务分类,对“时间触发编程模式”的改进可概括成以下需求:

(1)任务分3类,1类任务级较高,3类任务级较低;

(2)的任务可中断低级任务的执行,同级的任务之间不可相互剥夺。

(3)实际设计中为提高系统的可预测性,应尽量减少1类任务的数量及1类任务的执行时间。

(4)为降低系统资源的占用,系统不给任务划分单独的堆栈空间。

以上改进的本质是设计一个3级的简单的任务调度机制,的任务可中断低级的任务,同级的任务之间不能相互剥夺,该调度机制不为每个单独的任务保存任务上下文和单独的堆栈,这样可以减少该编程模式对系统资源的需求。

可剥夺式RTOS中的一个任务中断一个低级的任务时,会保存好低级任务的上下文并把该低级任务的局部变量保存在本任务单独的堆栈中,如果系统不给任务分配单独的堆栈,如何增加任务退出后低级任务执行环境的恢复呢?

对这个问题,可以借鉴中断的处理机制用以下办法予以解决:

(1)在系统中设计一个定时中断函数,该函数的功能就是执行周期性任务的调度,该定时中断在所有中断中级较低;

(2)在系统中设计另一个定时中断函数,该函数的功能是刷新周期型任务的任务管理队列,为任务调度提供支持,本定时中断函数的级在系统中次低;

(3)周期型任务就是一个函数,该函数入口的个操作是开中断(问:这个中断指的是触发及时性任务的中断,那么在周期性任务外,是开还是关?如果是开,),允许任务执行期间被中断以便响应及时型任务。

(4)背景型任务就是在主函数超级循环中执行的代码,该代码可随时被及时型和周期型任务中断,当系统没有及时型任务和周期型任务时才循环执行背景型任务的代码。

通过以上措施,“改进型时间触发编程模式”的程序结构如下:

/*--------------------主函数-----------------------*/

Void main(void)

{

SCH_Init();//设置调度器

SCH_Add_Task(任务函数名,任务调度延迟,任务调度周期);//将任务加入调度器的任务队列

SCH_Start();//刷新任务队列

while(1)

{

背景型任务1;

………

背景型任务n;

}

}

/*-------------------次低级定时中断函数---------------------*/

Void SCH_Update(void) interrupt

{

//刷新任务队列

}

/*-------------------较低级的定时中断函数---------------------*/

Void SCH_Dispatch_Tasks(void) interrupt

{

//调度周期型任务

}

/*-------------------周期型任务典型结构---------------------*/

Void SCH_Cycle_Task1(void)

{

//开中断 /*此函数中可以靠中断触发来执行及时性任务*/

//执行任务

return;//任务返回

}

结语

使用“改进型时间触发编程模式”进行小型嵌入式系统编程,就像使用RTOS进行编程一样,设计者规划好任务后,就可以专心于每个任务的设计,任务对处理器时间的占用可以由系统统一管理,减少任务之间的耦合,使产品的程序设计和改动都变得简洁清楚。使用该编程模式很好地解决了壁装式智能配电仪表所面临的复杂的设计问题,证明该方法简单有效。

目前该设计模式仅仅设计了任务调度器,任务间的变量传递还需要使用全局变量,如果能加入信号量和消息机制,那么该模式将更加完善,会使低成本的小型嵌入式系统的编程更加方便和清晰。

长沙粤嵌嵌入式培训机构还是要提醒每一个it爱好者:如果你想要在短时间内入门,顺利掌握一门技术,建议还是认真学习视频。多练习,多动手。

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/5631/news/533464/违者必究! 以上就是长沙粤嵌嵌入式IT培训机构 小编为您整理 嵌入式对时间触发编程模式的改进的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-0859-208