单片机与嵌入式系统:第三章 嵌入式软件系统(一)(2课时)_第1页
单片机与嵌入式系统:第三章 嵌入式软件系统(一)(2课时)_第2页
单片机与嵌入式系统:第三章 嵌入式软件系统(一)(2课时)_第3页
单片机与嵌入式系统:第三章 嵌入式软件系统(一)(2课时)_第4页
单片机与嵌入式系统:第三章 嵌入式软件系统(一)(2课时)_第5页
已阅读5页,还剩79页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机与嵌入式系统第三章嵌入式软件系统(一)中南大学信息科学与工程学院本节内容嵌入式软件的基本特征嵌入式软件结构和组成嵌入式软件的移植嵌入式操作系统的基本概念本节概念列示在黑板右侧1.1嵌入式软件开发需要交叉编译1.2嵌入式软件不一定需要操作系统1.3嵌入式软件都是无限循环1.4嵌入式软件都要响应中断1.5嵌入式软件的硬件相关性一、基本特征1.1嵌入式软件开发需要交叉编译由于其本身不具备自主开发能力,必须有一套开发工具和环境才能进行开发。调试需要各种逻辑分析仪、混合信号示波器等。一、基本特征概念列示嵌入式系统采用“宿主机/目标机”方式——交叉编译。USB/RS232/以太网宿主机:通用计算机(PC),开发环境。目标机:嵌入式系统,运行环境。通用计算机程序开发和编译在一台计算机上完成——直接编译。内存小存储空间有限计算能力有限1.1交叉编译提问:为何嵌入式要用这种方式交叉编译方式是嵌入式系统软件开发的唯一选择。

也是它的典型特征。1.1交叉编译1.2嵌入式软件不一定需要操作系统简单的嵌入式系统上,譬如MCS-51处理器上,可以直接运行裸机程序。复杂嵌入式系统上,需要嵌入式操作系统来调度资源和控制。一、基本特征裸机与裸奔8操作系统是一段核心程序作为软硬件资源的控制中心,它以尽量合理有效的方法组织多个用户共享计算机的各种资源。作为一台功能强大的虚拟机,给用户一个方便、有效、安全的工作环境和开发环境,提供人机交互接口和API函数。

1.1操作系统操作系统举例:上节课word和excel、打印机打印、UNIX多用户简单的嵌入式应用若嵌入式系统的功能需求比较简单,如电动玩具、空调、冰箱等,则嵌入式系统软件只需完成较简单的功能,就不需要嵌入式操作系统的支持。如:基于8051的应用儿童玩具、汽车系统等等1.2操作系统非必需复杂的嵌入式应用若功能比较复杂,需要网络功能、存储器管理、进程/线程管理等,则通过嵌入式操作系统的帮助,可以加快嵌入式系统软件的开发进度和可靠性。提高移植能力,商用化需要嵌入式操作系统1.2操作系统非必需1.3嵌入式软件都是无限循环嵌入式软件的结构上都是没有出口的,程序不能退出,整个程序的基本结构是无限循环。配合中断构成整体。一、基本特征列概念main(){Init_HardWare();/*硬件初始化*/

/*超级循环*/

while(1)

{

action1();/*常规循环操作*/action2();

}}……1.3无限循环1.4嵌入式软件都要响应中断中断——嵌入式系统实时地处理内部或外部事件的一种内部机制。有无限循环就必须有中断,两者相互对应,互相依存。一、基本特征举例:写程序时老婆孩子的事中断工作原理当某种内部或外部事件发生时,产生中断信号,嵌入式系统的中断系统将迫使CPU暂停正在执行的无限循环,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的无限循环处,继续执行下去。中断信号中断后要干的事循环的恢复中断机制中断服务程序中断现场入栈1.4中断列概念/举例main(){/*超级循环*/

while(1)

{

action1();/*常规循环操作*/action2();

}}……/*中断1对应的服务程序*/__interruptISR1()

{

/*中断服务工作*/

}CPU中断源1外部事件执行ISR11.4中断编译器自动加入现场出入栈代码main(){/*超级循环*/

while(1)

{

action1();/*常规循环操作*/action2();

}}……/*中断1对应的服务程序*/__interruptISR1()

{

/*中断服务工作*/

}后台1.4中断前台“中断+无限循环”构成的“前台/后台”软件结构是嵌入式软件的基本结构特征裸机程序就是直接实现的“前台/后台”软件名词解释:前台/后台常规循环任务=后台=无限循环设备中断任务=前台=中断。1.4中断列概念main(){/*超级循环*/

while(1)

enter_low_power();/*进入低功耗状态*/}/*中断1对应的服务程序*/__interruptISR1()

{

/*中断服务工作*/

}……/*中断n对应的服务程序*/__interruptISRn()

{

/*中断服务工作*/

}1.4中断低功耗程序设计简单“中断+无限循环”实时性有问题,需要操作系统协助。中断出现随机性,导致执行时间不可预测。多个中断会出现阻塞,影响中断响应时间。程序修改后,执行时间发生巨大变化。1.4中断提问main(){c=3;a=6;/*超级循环*/

while(1)

{

b=a*c;……action(b);

}}……/*中断1对应的服务程序*/__interruptISR1()

{

a=100;

}中断b=18中断b=300action(b)

{

if(b>50)

……;/*操作持续200ms*/else……;/*操作持续10ms*/

}1.4中断中断服务程序限制中断不能返回值;不能向中断传递参数;中断应该尽可能的短小精悍;printf()函数会带来重入和性能问题,不能在中断中采用。忌中大忌:不要再中断中停留太久1.4中断中断向量表写在BSP中的汇编代码;列示出各种程序异常及其对应的中断服务程序,这段代码称为中断向量表。编写设备驱动的主要内容本质:汇编代码1.4中断列概念1.5嵌入式软件的硬件相关性软件功能必须硬件可实现回忆:Bootloader和BSP的硬件相关性。更换硬件,全部重编。嵌入式系统专用性的体现。一、基本特征提问:专用性本节内容嵌入式软件的基本特征嵌入式软件结构和组成嵌入式软件的移植嵌入式操作系统的基本概念本节概念列示在黑板右侧二、嵌入式软件结构和组成2.1初始化引导代码BootLoader2.2板级支持包BSP(可选)2.3嵌入式操作系统(可选)2.4应用软件Bootloader——内核启动前的最原始的初始化本质:一段程序,不是死循环。Bootloader的工作:初始化,带给系统一个干净的环境,将接力棒交给操作系统。Bootloader的安装媒介:嵌入式的存储器有操作系统才会出现,也是BSP的一部分

2.1BootLoadermain(){

Init_HardWare();/*硬件初始化*/

/*超级循环*/

while(1)

{

action1();/*常规循环操作*/action2();

}}……学名:硬件抽象层HALHardwareAbstractLayer工程:板极支持包BSPBoardSupportingPackage作用:它把系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关。为便于移植,裸机程序也用HAL方式实现模块化2.2板级支持包优点:1.便于移植2.便于开发BSP具有以下两个特点:1.操作系统相关性依赖于嵌入式操作系统2.硬件相关性嵌入式处理器多种多样2.2板级支持包提问:换芯片要改吗板级支持包BSP的组成设备驱动程序配置文件2.2板级支持包设备的中断中断向量表硬件配置参数操作系统通过驱动程序和硬件直接打交道。编写全新的BSP需要编写所有的部分包括OEM抽象层,驱动,引导程序大约消耗20人/月工作量改写现有的BSP对与目标板具有相似硬件组成的BSP的基础上进行某些改写,使其适用与目标板。开发方式2.2板级支持包操作系统是嵌入式应用软件的基础和开发平台。本质:也是一段程序,系统启动(Bootloader)后首先执行,相当于用户的主程序和API函数接口,运行完将接力棒交给应用程序。无限循环它是软硬件资源的控制中心,它以尽量合理有效的方法组织多个用户共享计算机的各种资源。2.3操作系统作用举例:word和powerpoint都用文件基于操作系统的软件开发模式精简模式:基于嵌入式操作系统内核,只包含任务调度、处理器管理和存储器管理。完整模式:基于完整的嵌入式操作系统,包含操作系统内核和文件系统、人机界面等。2.3操作系统运行必要条件外存空间:存储数据、程序内存空间:程序运行、中间计算变量定时器:等优先级,调度任务中断:中断服务、任务关联堆栈:保护现场2.3操作系统2.3.1图形用户界面GUI2.3.2文件系统2.3.3网络协议栈2.3操作系统定义

图形用户界面-GraphicsUserInterface,是指带界面显示的嵌入式系统与其使用者之间的图形化对话接口。

2.3.1图形用户界面组成要素1、窗口(Windows),每个窗口是用户或系统的一个工作区域

2、图标(Icons),采用形象化的图标或图符,易于操作者理解与操作

3、菜单(Menu),供用户选择的功能提示

4、点触设备(PointingDevices)

,指鼠标、按键、触摸屏等,便于用户进行操作2.3.1图形用户界面主要特征体积小占用系统资源少系统独立,可移植性好2.3.1图形用户界面定义处理文件的操作系统的部分称为文件系统。是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用功能文件的构造、命名、存取、采用、保护和实现等。2.3.2文件系统41嵌入式系统的物理存储

Flash存储器由于其安全性高,存储密度大,体积小,价格相对便宜,是嵌入式领域中最受欢迎的一类存储器使用Flash存储器,通常有两种使用方式只进行只读访问:程序在系统运行的时候既需要进行读操作,也需要进行写操作:数据。2.3.2文件系统通用文件系统不适用于嵌入式系统。Flash上实现文件系统,了解Flash的特点:

擦除-写入、块操作Flash上文件系统:

(1)数据管理:读取、修改、删除

(2)考虑擦写时间,协调数据吞吐量2.3.2文件系统43JFFS文件系统2000年Axis公司发布了他们开发的Flash文件系统JFFSJFFS文件系统是开放源代码的文件系统,可以说是专门用于嵌入式Linux等系统的JFFS是直接在Flash上实现的文件系统JFFS为Flash设备专门设计一个转换层来模拟普通的文件系统2.3.2文件系统用途对于具有网络功能的嵌入式产品是必要的。根据网络协议的不同(TCP/IP,UDP,NetBIOS等),进行网络协议的解析、转换,将数据最终对应到嵌入式系统的硬件中断上。

2.3.3网络协议栈本节内容嵌入式软件的基本特征嵌入式软件结构和组成嵌入式软件的移植嵌入式操作系统的基本概念本节概念列示在黑板右侧3.1嵌入式软件移植的必要性基于嵌入式处理器的原因。基于操作系统的原因。三、移植举例:龙珠ezvz、显示地图3.2裸机系统的软件移植汇编语言编写的:放弃移植,重写。C语言编写,无硬件抽象层,重写。C语言编写,有硬件抽象层,移植很简单,更改硬件抽象层即可。四、移植3.3嵌入式操作系统的移植重新编写BootLoader(如果硬件变化)重新编写板级支持包BSP。移植设备驱动程序,更改与新系统的接口。四、移植3.4带操作系统应用软件的移植可执行程序:虚拟机办法代码移植:改写硬件抽象层即可。操作系统移植:Bootloader、硬件抽象层可移植性:考验代码模块化和层次化的时候到了。四、移植本节内容嵌入式软件的基本特征嵌入式软件结构和组成嵌入式软件的移植嵌入式操作系统的基本概念本节概念列示在黑板右侧4.1任务(Task)4.2调度(Scheduler)4.3优先级(Priority)4.4代码临界区(CriticalSection)4.5信号量(Semaphore)四、基本概念本节概念列示在黑板右侧4.6任务间通信(intertaskcom)4.7互斥(mutualexclusion)4.8内核(OSKernal)4.9抢占(Preemptive)二、基本概念在进行实时应用设计时通常要把工作分割成多个任务,每个任务处理一部分问题,并被赋予一定的优先级、一套自己的CPU寄存器及堆栈(分配资源)。4.1任务指拥有CPU资源(寄存器、堆栈)的正在执行的简单程序。通用操作系统中的进程和线程。实时系统中的大部分任务是周期的,编程上每个任务是一个典型的无限循环。只有任务能够申请CPU资源。任务的状态:就绪、运行、挂起。4.1任务两大特点:第一是程序,第二有资源举例:打扫卫生(地面、玻璃、桌椅,劳动工具(资源)/各自独立工作/有矛盾时还要协调)就绪

任务获得优先级后等待操作系统安排开始执行(等待开始死循环)。运行

任务执行过程中(资源已获得,死循环中)。挂起

任务结束。(跳出死循环,资源释放)4.1任务2022/11/2056①动态性:“执行”本身就是动态的,由开始到终止,中途可以暂停。因此任务由“创建”而产生,由“撤消”而消亡,因拥有处理器而得到运行,即任务有一定的生命期。②并发性:单处理器上的交替、多处理器上的同时性,充分体现了任务的并发特性。4.1任务任务的特点2022/11/2057③独立性:任务是系统中独立存在的实体。只有任务有资格向系统申请资源并有权获得系统提供的服务。任务是资源分配基本单位。④异步性:任务按异步方式运行,各自独立。4.1任务任务的特点2022/11/2058程序是为了完成某项任务编排的语句序列,它告诉计算机如何执行,因此程序是需要运行的。程序运行过程中需要占有计算机的各种资源才能运行下去。所以,程序与任务概念也不能绝对分开。4.1任务程序的概念2022/11/2059①任务是动态的,而程序是静态的。②任务有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立任务的程序不能作为一个独立单位得到操作系统的认可。③一个程序可以对应多个任务(多次执行),但一个任务只能对应一个程序。任务和程序的关系犹如演出和剧本的关系。4.1任务辨析:任务与程序的区别#include"STC89C51RC_RD_PLUS.H"#include“OSCore.H“//操作系统内核#include“os_Switch.H“//任务切换—调度:抢占式/////////////////////////////主函数main(){OS_InitTick(); //时钟节拍初始化 ………….//其它初始化,根据不同应用程序而不同OS_CreateTask(Run_Time,1);

OS_CreateTask(Task1,2); //用户自己的任务,任务创建OS_CreateTask(Task2,3);OS_CreateTask(Task3,4);OS_CreateTask(Task4,5);OS_CreateTask(Task5,0);//优先级最高OS_CreateTask(Taskidle,IDLE_ID); //空闲时执行的任务,在OSCore.c中,可作统计任务IT0=1;//INT0触发方式控制位,IT0=1,INT0为负跳变触发方式EX0=1;//外中断允许IT1=1;EX1=1;OS_Start();//开始运行多任务

while(1); //进入无限循环}//每个任务都是死循环voidTask1(void)//任务1{while(1){………OS_DelayTask(10);}}……

4.2调度

内核的主要职责之一。什么是调度?决定任务运行的次序。调度的基本方式有可抢占式和非抢占式。多数实时内核是基于优先级调度的多种方法的复合。

4.2调度

先来先服务(FCFS)最短周期优先(SBF)优先级法(Priority)轮转法(Round-Robin)多级队列法(multi-levelqueues)多级反馈队列(multi-levelfeedbackqueues)基本的调度算法

4.2调度

如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪队列的后面,那么先来先服务(FCFS:firstcomefirstservice)总是把当前处于就绪队列之首的那个进程调度到运行状态。也就说,它只考虑进程进入就绪队列的先后,而不考虑它的下一个CPU周期的长短及其他因素。FCFS算法简单易行,但性能却不大好。先来先服务FCFS提问:实时性好吗

4.2调度

在就绪队列里,谁执行周期最短就先执行谁最短周期优先SBF

4.2调度

最常用、最有效调度方法在就绪队列里挑选优先级最高的执行非抢占式优先级法:当前占用CPU的进程一直运行下去,直到完成任务或者因等待某事件而主动让出CPU,系统才让另一个优先级高的进程占用CPU。抢占式优先级法:当前进程在运行过程中,一旦有另一个优先级更高的进程出现在就绪队列中,进程调度程序就停止当前进程的运行,强行将CPU分给那个进程。优先级法(Priority)

4.2调度

轮转调度是每次从有序队列头部选出一任务,并给它分配定长运行时间片。若任务在分配的时间片结束之前执行完毕,它就从处理机撤离;若分配的时间片到期,任务还未执行完毕(还需另外的时间片),则它被重新送入队列尾部以等待下次调度。凡新到达的任务被排到队列尾部。轮转法(Round-Robin)

4.2调度

系统中设置多个就绪队列,每个队列对应一个优先级,第一个队列的优先级最高,第二个队列次之,各就绪队列中进程的运行时间片不同,高优先级队列的时间片小,低优先级队列的时间片大,如从高到低依次加倍。在UNIX系统,WindowsNT中都采用此调度算法。多级反馈队列(multi-levelfeedbackqueues)4.3优先级任务的轻重缓急指示每个任务按其重要性被赋予一定的优先级。静态优先级与动态优先级。(固定和可变)基于优先级的系统会出现优先级倒置的问题,一个好的实时内核应该提供解决倒置的方法。已开发出多种算法用于实时任务的优先级分配。提问:被谁赋予?

4.4代码临界区

指一段不可分割的代码,一旦执行,不能被中断。实现代码临界区的方法有:一是屏蔽中断,通常在代码执行前关闭中断,执行后打开中断,只能用于单处理机的情形;二是通过信号量机制。UC/OS里内核里得到充分体现提问:屏蔽中断会有何后果举例:前面程序中的amain(){c=3;a=6;/*超级循环*/

while(1)

{

b=a*c;……action(b);

}}……/*中断1对应的服务程序*/__interruptISR1()

{

a=100;

}中断b=18中断b=3004.5

信号量多任务环境下使用的一种设施,它负责协调各个任务,以保证它们能够正确、合理的使用公共资源。用以前查询信号量信号量符合要求,使用;否则,等待。使用完要释放信号量。完成代码临界区功能举例:停车场管理员提问:为什么代码临界区可以使用信号量4.6任务间通信在多任务系统中,任务之间存在相互制约的关系,或者任务之间需要交换信息,称为任务间通信。分类:控制信息传送和批量数据传送。方式:信箱,队列等。4.6任务间通信信箱任务1任务2信箱创建信箱发送消息接收消息信箱相当于长度为1的队列。提问:会出现什么问题?任务1信息来的快4.6任务间通信队列任务1任务2创建队列发送消息接收消息764.7互斥资源的使用必须独占,叫做互斥。互斥和共享对应为了共享数据的顺序访问,避免访问冲突。同样是对公共资源的使用。解决办法:开关中断,使用硬件指令,使用信号量4.8

内核多任务系统的一部分,负责管理任务。抢占式(preemptive)与非抢占式微内核(Microkernel)与单内核(monolithickernel)78任务管理任务间通信存储器管理定时器管理中断响应框架在微内核中保留哪些东西?4.8

内核4.9

抢占当起执行的任务可以被打断而由另外一个任务执行。提高了相应外部中断的能力。多数操作系统是抢占式调度。#include"STC89C51RC_RD_PLUS.H"#include“OSCore.H“//操作系统内核#include“os_Switch.H“//任务切换—调度:抢占式////////////////////////////

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论