项目驱动——编程入门.ppt
《项目驱动——编程入门.ppt》由会员分享,可在线阅读,更多相关《项目驱动——编程入门.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、电子实验中心电子实验中心项目驱动项目驱动-单片机应用设计技术单片机应用设计技术 电子实验中心电子实验中心一、前后台系统与嵌入式系统的不同一、前后台系统与嵌入式系统的不同设计:每按一次按键,发光二极管改设计:每按一次按键,发光二极管改变一次状态。(电路略)变一次状态。(电路略)1、前后台系统示例程序如下:、前后台系统示例程序如下: 电子实验中心电子实验中心Sbit LED=P11;Sbit KEY=P21;Void delay(unsigned int i)while(i-);Void main()while(1)if(KEY=0) 电子实验中心电子实验中心delay(1000);if(KEY=
2、0)LED!=LED;while(KEY=0); 电子实验中心电子实验中心vTinyOS示例程序如下:示例程序如下:void main(void)static void _taskKEY(void);static void _taskLED(void);_timer0Init();tnOsInit();tnOsTaskCreate(_taskKEY,_GucTaskStks0);tnOsTaskCreate(_taskLED,_GucTaskStks1);tnOsStart(); 电子实验中心电子实验中心vstatic void _taskKEY(void)vv tnOsSemCreate(&
3、_GosSem,1);v while(1)v while(KEY!=0)v v tnOsTimeDly(TICKS_PER_SEC/100);v v tnOsSemPost(&osSem);v while(KEY=0)v v tnOsTimeDly(TICKS_PER_SEC/100);v v 电子实验中心电子实验中心vstatic void _taskLED(void)vv while(1)v v tnOsSemPend(&_GosSem,0);v LED!=LED;v 电子实验中心电子实验中心二、嵌入式基础知识二、嵌入式基础知识 当使用操作系统时,如果将这些当使用操作系统时,如果将这些“可
4、执可执行的程序单元行的程序单元”进行分类,即可得到在操作进行分类,即可得到在操作系统调度下的系统调度下的“用户任务用户任务”,简称任务,简称任务(Task)。当任务)。当任务“独占独占”CPU 的运行期间,的运行期间,则一个任务看不见另一个任务,也就是说,则一个任务看不见另一个任务,也就是说,一个任务不可能象调用一个任务不可能象调用“子程序子程序”那样调用那样调用另一个任务,因此任务之间的信息传递只能另一个任务,因此任务之间的信息传递只能通过通过“异步异步”的方式来完成,即由操作系统的方式来完成,即由操作系统的各种的各种“通信通信”机制来实现,比如,机制来实现,比如,信号量信号量(Semaph
5、ore)与消息邮箱()与消息邮箱(Message Postbox)等。等。 电子实验中心电子实验中心并发性(并发性(Concurrent)与调度()与调度(Schedulingv 简单应用的典型设计为顺序运行,一次简单应用的典型设计为顺序运行,一次执行一条指令,按预先设定的顺序运行,执行一条指令,按预先设定的顺序运行,然而这种模式对于嵌入式实时应用是不合然而这种模式对于嵌入式实时应用是不合适的,因为通常要在紧密的时间约束内处适的,因为通常要在紧密的时间约束内处理多个输入和输出,假设在多理多个输入和输出,假设在多CPU 系统中,系统中,每个任务都有自己的每个任务都有自己的CPU,那么它们的运,那
6、么它们的运行状态就是真正的行状态就是真正的“并发运行并发运行”。 电子实验中心电子实验中心并发性(并发性(Concurrent)与调度()与调度(Scheduling) 电子实验中心电子实验中心并发性(并发性(Concurrent)与调度()与调度(Scheduling) 电子实验中心电子实验中心任务状态任务状态 电子实验中心电子实验中心任务之间的关系任务之间的关系 任务同步(任务同步(Synchronization)任务间的同步是一种直接作用,任务间的同步是一种直接作用,“任务同步任务同步”是指系统中的是指系统中的多个任务之间存在某种时序关系,需要相互协作才能共同完成一多个任务之间存在某种时
7、序关系,需要相互协作才能共同完成一项任务。比如,一个任务运行到某一时间点时,要求另一个任务项任务。比如,一个任务运行到某一时间点时,要求另一个任务为它提供消息,在未获得消息之前,该任务处于阻塞状态,获得为它提供消息,在未获得消息之前,该任务处于阻塞状态,获得消息后被唤醒进入就绪状态。消息后被唤醒进入就绪状态。任务互斥(任务互斥(Exclusion)任务间的互斥是一种间接作用,由于内存中的多个任务要求任务间的互斥是一种间接作用,由于内存中的多个任务要求共享某一资源,而有些资源必须互斥,因此各任务之间只能竞争共享某一资源,而有些资源必须互斥,因此各任务之间只能竞争使用这些资源。使用这些资源。“任务
8、间的互斥任务间的互斥”是指当有若干任务都要使用某是指当有若干任务都要使用某一共享资源时,最多允许一个任务使用,而其它要使用该资源的一共享资源时,最多允许一个任务使用,而其它要使用该资源的任务必须阻塞,直到占有该资源的任务释放为止。比如,当有人任务必须阻塞,直到占有该资源的任务释放为止。比如,当有人使用厕所时,则其它人都不能使用,直到当前使用者出来后,其使用厕所时,则其它人都不能使用,直到当前使用者出来后,其他人才能使用。他人才能使用。 电子实验中心电子实验中心临界资源(临界资源(Critical Resources)与临界区()与临界区(Critical Section)任务间的互斥涉及到共享
9、资源的竞争使用,因任务间的互斥涉及到共享资源的竞争使用,因此竞争使用这些资源的任务在执行使用这些资源的程此竞争使用这些资源的任务在执行使用这些资源的程序时也会受到一定的限制,从而也就引出了临界资源序时也会受到一定的限制,从而也就引出了临界资源与临界区的概念。与临界区的概念。(1)临界资源)临界资源在操作系统中将一次只允许一个任务使用的资源称之在操作系统中将一次只允许一个任务使用的资源称之为临界资源。为临界资源。(2)临界区)临界区在操作系统中将并发任务中访问临界资源的程序称之在操作系统中将并发任务中访问临界资源的程序称之为临界区,临界区也常常叫做互斥区。为临界区,临界区也常常叫做互斥区。 电子
10、实验中心电子实验中心上下文切换(上下文切换(Context Switch) 电子实验中心电子实验中心可重入性(可重入性(Reentrant)由于任务的并发性,因此经常会出现调用同一个由于任务的并发性,因此经常会出现调用同一个函数的情况,如果一段程序可以被多个任务同时调用,函数的情况,如果一段程序可以被多个任务同时调用,而不必担心数据被破坏,那么这样的程序就是可重入而不必担心数据被破坏,那么这样的程序就是可重入的程序。的程序。一般来说,具有可重入性的函数应该只使用局部一般来说,具有可重入性的函数应该只使用局部变量,因为函数的局部变量保持在变量,因为函数的局部变量保持在CPU 内部的寄存器内部的寄
11、存器或堆栈中,所以可以保证不同的任务调用同一个函数或堆栈中,所以可以保证不同的任务调用同一个函数时不会发生冲突。如果函数一定要使用全局变量的话,时不会发生冲突。如果函数一定要使用全局变量的话,那么一定要对使用的全局变量进行必要的保护。由此那么一定要对使用的全局变量进行必要的保护。由此可见,可见,C 编译器也应该具有产生可重入代码的能力。编译器也应该具有产生可重入代码的能力。 电子实验中心电子实验中心成于大气成于大气 信达天下信达天下程序存储区2040H 832121H 452041H 2120H 47当前PC指令代码单片机工作机制单片机工作机制 电子实验中心电子实验中心子程序调用及返回指令子程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 驱动 编程 入门
限制150内