欢迎来到天天文库
浏览记录
ID:42816636
大小:1.09 MB
页数:31页
时间:2019-09-23
《项目驱动-编程入门》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、电子实验中心项目驱动--单片机应用设计技术一、前后台系统与嵌入式系统的不同设计:每按一次按键,发光二极管改变一次状态。(电路略)1、前后台系统示例程序如下:syzx.cuit.edu.cnSbitLED=P1^1;SbitKEY=P2^1;Voiddelay(unsignedinti){while(i--);}Voidmain(){while(1){if(KEY==0){syzx.cuit.edu.cndelay(1000);if(KEY==0){LED!=LED;}while(KEY==0);}}syzx.cuit.e
2、du.cnTinyOS示例程序如下:voidmain(void){staticvoid__taskKEY(void);staticvoid__taskLED(void);__timer0Init();tnOsInit();tnOsTaskCreate(__taskKEY,__GucTaskStks[0]);tnOsTaskCreate(__taskLED,__GucTaskStks[1]);tnOsStart();}syzx.cuit.edu.cnstaticvoid__taskKEY(void){tnOsSemCrea
3、te(&__GosSem,1);while(1){while(KEY!=0){tnOsTimeDly(TICKS_PER_SEC/100);}tnOsSemPost(&osSem);while(KEY==0){tnOsTimeDly(TICKS_PER_SEC/100);}}}syzx.cuit.edu.cnstaticvoid__taskLED(void){while(1){tnOsSemPend(&__GosSem,0);LED!=LED;}}syzx.cuit.edu.cn二、嵌入式基础知识当使用操作系统时,如果将
4、这些“可执行的程序单元”进行分类,即可得到在操作系统调度下的“用户任务”,简称任务(Task)。当任务“独占”CPU的运行期间,则一个任务看不见另一个任务,也就是说,一个任务不可能象调用“子程序”那样调用另一个任务,因此任务之间的信息传递只能通过“异步”的方式来完成,即由操作系统的各种“通信”机制来实现,比如,信号量(Semaphore)与消息邮箱(MessagePostbox)等。syzx.cuit.edu.cn并发性(Concurrent)与调度(Scheduling简单应用的典型设计为顺序运行,一次执行一条指令,按
5、预先设定的顺序运行,然而这种模式对于嵌入式实时应用是不合适的,因为通常要在紧密的时间约束内处理多个输入和输出,假设在多CPU系统中,每个任务都有自己的CPU,那么它们的运行状态就是真正的“并发运行”。syzx.cuit.edu.cn并发性(Concurrent)与调度(Scheduling)syzx.cuit.edu.cn并发性(Concurrent)与调度(Scheduling)syzx.cuit.edu.cn任务状态syzx.cuit.edu.cn任务之间的关系任务同步(Synchronization)任务间的同步
6、是一种直接作用,“任务同步”是指系统中的多个任务之间存在某种时序关系,需要相互协作才能共同完成一项任务。比如,一个任务运行到某一时间点时,要求另一个任务为它提供消息,在未获得消息之前,该任务处于阻塞状态,获得消息后被唤醒进入就绪状态。任务互斥(Exclusion)任务间的互斥是一种间接作用,由于内存中的多个任务要求共享某一资源,而有些资源必须互斥,因此各任务之间只能竞争使用这些资源。“任务间的互斥”是指当有若干任务都要使用某一共享资源时,最多允许一个任务使用,而其它要使用该资源的任务必须阻塞,直到占有该资源的任务释放为
7、止。比如,当有人使用厕所时,则其它人都不能使用,直到当前使用者出来后,其他人才能使用。syzx.cuit.edu.cn临界资源(CriticalResources)与临界区(CriticalSection)任务间的互斥涉及到共享资源的竞争使用,因此竞争使用这些资源的任务在执行使用这些资源的程序时也会受到一定的限制,从而也就引出了临界资源与临界区的概念。(1)临界资源在操作系统中将一次只允许一个任务使用的资源称之为临界资源。(2)临界区在操作系统中将并发任务中访问临界资源的程序称之为临界区,临界区也常常叫做互斥区。syzx
8、.cuit.edu.cn上下文切换(ContextSwitch)syzx.cuit.edu.cn可重入性(Reentrant)由于任务的并发性,因此经常会出现调用同一个函数的情况,如果一段程序可以被多个任务同时调用,而不必担心数据被破坏,那么这样的程序就是可重入的程序。一般来说,具有可重入性的函数应该只使用局部变量,
此文档下载收益归作者所有