嵌入式系统案例分析知识总结

1.嵌入式系统软件运行平台采用商用嵌入式操作系统和在裸机上直接开发两种方式的优缺点。

采用在裸机上直接开发的方式,并且关键部分采用汇编语言编写,可以保证该控制系统的实时性。

采用商用嵌入式事实操作系统开发方式可以保证系统的可靠性。

2.采用嵌入式实时操作系统开发方式的优点。

实时操作系统提供的任务调度功能,可以有效地管理本系统多周期任务的调度。

操作系统提供的时间、信号和任务的通信机制,可以有效地解决本系统中资源共享中的互斥问题。

采用商品化的软件,可提高所开发软件的可靠性,还可以简化软件开发成本,提高开发效率。

3.对于嵌入式实时操作系统中的时间性能评估,主要考虑以下三项因素:

嵌入式实时操作系统的系统时间开销,一般不大于整个控制系统运行时间的20%。

保证所有任务在规定的时间期限内完成(或进行可调度性评估)。

任务的上下文切换时间和中断响应时间。

4.GSMGPRS两种技术特点。

GSM短信系统适合传输少量数据,数据可靠性好,系统简单且易于实现和维护。

GPRS适合于传输大量的数据,传输数据的价格比较低,但是各地GPRS网络建设情况不一致,数据传输可靠性没GSM短信好。

5.几种常见的系统开发模型的优缺点

6.对于嵌入式软件项目管理包括哪几方面。

项目范围管理、项目配置管理、项目进度管理、项目质量管理、项目成本管理、项目风险管理、开发人员管理。

7.应用面向对象的方法进行嵌入式系统开发相对于传统开发方法的优越性。

符合人类的思维习惯、稳定性好、可重用性好、可维护性好

8.基于UML嵌入式软件开发环境的结构图。

 

9.画出UML模型中常用关系依赖、泛化、关联、聚合和实现的图示。

依赖

泛化

关联

聚合

实现

10.NOR FlashNAND Flash应从哪几方面比较。

器件性能、接口差别、容量和成本、可靠性和耐用性、易用性、软件支持、市场定位。

11.键盘的结构通常有两种形式:线性键盘和矩阵键盘。矩阵键盘根据识键和译键方法的不同分为哪几种键盘。

非编码键盘和编码键盘。非编码键盘主要用软件的方法识键和译键。根据扫描方法的不同分为行扫描法、列扫描法和反转法。编码键盘主要用硬件来实现识键和译键,通常使用8279专用接口芯片,在硬件上要求较高。

12.LCD有哪几种显示方式。

反射型LCD、投射型LCD、透反射型LCD

13.LCD的数据传输速率公式:R=HS*VS*FR*MV

HSLCD的行像素点数值,VSLCD的列的像素点数值,FR是帧速率,MV是模式值。VCLKLCD控制器的时钟信号。故需要满足VCLK>R

14.串行通信三种数据传送模式,采用异步串行通信时,通信的字符必须遵守哪些规定。简述串口的数据传输过程。

单工通信、半双工通信、全双工通信。

每个字符传送时,必须前面加一位起始位,最后加入一位停止位。

一帧数据是从最低有效位开始传输的。传输线在逻辑1时处于空闲状态。当每帧数据开始传输时,先发送一个起始位。起始位是从逻辑1到0的迁移,这个变化表明一帧数据开始传输,接收器则在开始检测到起始位的时候,按照手法两端事先约好的通信速度,检测后面的数据位,从而责成一帧数据。在传输结的最后,利用一个停止位(逻辑1)使传输线回到空闲状态。然后发送方才可以发送下一个字节的数据。

15.网络体系结构与协议分层示意图:

16.传输层主要有TCPUDP协议,各有什么特点。

TCP协议是一种面向连接、端对端的可靠通信协议,采用了诸如三次握手建立连接等多种机制来保证传输可靠性,能弥补IP协议的不足。

UDP协议是一种无连接、不可靠的传输层协议,他只是把应用程序传来的数据加上UDP头作为UDP数据包发送出去,而不保证他们是否能到达目的地。适用于协议开销要求较小的应用场合。

17.在嵌入式系统中增加以太网接口的实现方法有:嵌入式处理器+网卡芯片和直接采用带有以太网络接口的嵌入式处理器。比较它们的优缺点。

嵌入式处理器+网卡芯片方法,对嵌入式处理器没特殊要求,通用性强、不受处理器的限制,但处理器的网络数据通过外部总线交换数据时速度慢、可靠性不高且电路板走线复杂。

直接采用带有以太网络接口的嵌入式处理器要求带有MII等通用的网络接口,处理器和网络交换数据通过内部总线完成,处理速度快。

18.嵌入式实时操作系统任务创建的实现模型及其特点。

任务的创建主要有fork/exec实现模型和spawn实现模型。主要区别在于内存的分配方式。fork/exec模型下,首先调用fork函数为新任务创建一份与父任务完全相同的内存空间,然后再调用exec函数装入新任务的代码,并用它来覆盖原有的属于父任务的内容。嵌入式Linux操作系统是基于fork/exec模型的。

spawn模式下,在创建新任务的时候,直接为它分配一个全新的地址空间,然后将新任务的代码装入并运行。uCOS操作系统是基于spawn模型的。

19.在对嵌入式软件平台进行选择时,通常要考虑的因素:

实际嵌入式系统应用项目对该硬件和软件平台的使用情况。

该平台的特殊需求。

该平台是否有合适的开发工具。

该平台所预留的资源或功能如何。

该平台能否提供用户开发的设备驱动程序。

该平台是否支持HTTP、TCP、UDP等TCP/IP协议簇的通信协议。

提供该平台公司的发展目标是什么,是否有一个清晰的升级途径。

可以使用该平台开发的开发人员有多少,对开发人员的培训费用是多少。

该平台日后是否还需要完善,往往选择一个良好的平台比一个需要日后完善的平台要便宜多。

支持该硬件和软件平台公司的财务状况如何,能否提供日常的技术支持等。

20.一个控制系统的初始化模块的基本内容。

对运行时将要占用的硬件资源进行初始状态的设置。

对所控制的有关设备进行初始工作状态的复位或调整。

设定中断的优先级以及初始化相关的中断机制。

控制程序模块的装入以及相关参数的初始化工作。

初始化后应提示把控制权转交给用户。

21.选择实时操作系统应从哪几方面考虑其性能和功能。

操作系统内核代码所占用的空间应比较小。

任务的上下文切换时间越短越好,中断响应时间越快越好。

操作系统提供的服务接口的开放性要好,接口类型应比较丰富,毅以利于灵活使用。

操作系统对可靠性有较强的保障支持能力。

使用简单,支撑环境配套好,可配置、可裁剪能力强。

22. 任务的切换

基本思想:把当前任务的运行上下文保存起来,并恢复新任务的上下文。

任务切换通常有下面的基本步骤:

A、 将处理器的运行上下文保存在当前任务的TCB中。

B、 更新当前任务的状态,从运行状态变为就绪状态或阻塞状态。

C、 按照一定的策略,从所有处于就绪状态的任务中选择一个去运行。

D、修改新任务的状态,从就绪状态变成运行状态。

E、 根据新任务的TCB的内容,恢复它的运行上下文环境。

23. 在嵌入式系统中,常见的存储管理方案可以分为两大类:实模式和保护模式。

实模式:内存的平面使用模式。特点有:

A.不划分“系统空间”与“用户空间”,无须进行地址映射。

B.操作系统与应用程序之间不再有物理的边界。

C.系统中的“任务”或“进程”,实际上全是内核线程。

在实模式下,内存布局可以分为5个段:

A.代码段:包含操作系统和应用程序的所有代码。

B.数据段:所有带有初始值的全局变量。

C.BSS段:所有未带初始值的全局变量。

D.堆空间:动态分配的内存空间。

E.栈空间:保存上下文以及函数调用时的局部变量和形参。

在实模式存储管理方案下,主要的工作在于堆空间的管理,即如何来管理空闲的堆空间、如何来分配内存、如何来回收内存等等。

保护模式:处理器中必须有MMU硬件并启用。特点有:

A.系统内核和用户程序都有各自独立的地址空间。

B.每个应用程序只能访问自己的地址空间,不能去破坏操作系统和其他应用程序的代码和数据。

24.与普通软件测试相比,嵌入式软件测试工作所具有的特点。

经常采用交叉编译和交叉测试的方法,需要在基于目标机的测试和基于宿主机的测试之间作出折中。

在嵌入式软件测试时,除了验证逻辑上的正确性之外,还要看重系统的性能和健壮性。

对嵌入式软件的实时性进行测试时,要借助一定的测试工具对应用程序的算法复杂度和操作系统的任务调度进行分析、测试。

嵌入式系统的硬件一般采用专门的测试一起进行测试,儿这些测试工具一般不会在应用软件的开发中使用。

在进行嵌入式软件测试时必须最大限度的模拟被测软件的实际运行环境,以保证测试的可靠性。

25.单元测试时,主要从程序模块的哪些主要特征进行检查。

模块接口、局部数据结构、重要的执行路径、出错处理、边界条件。

26.移植嵌入式软件分为无操作系统的软件移植和有操作系统的软件移植。对于把操作系统和应用软件作为一个整体,移植到一个新的嵌入式硬件平台上的情况,在系统移植时,真正需要移植的主要是引导加载程序Boot Loader,设备驱动程序一集操作系统中同处理器密切相关的代码。

27.对于嵌入式系统性能可从那几个方面进行定性度量。

部件的性能指标和综合指标;可靠性;可维护性;可用性;系统的功耗;环境适应性;通用性;安全性;保密性;可扩展性。

28.最基本的嵌入式Linux有哪三个基本元素组成。目前交叉编译技术主要有哪两种典型的实现模型。

1.系统引导程序;Linux系统内核;初始化过程。

2.Java模式;GNU GCC模式。

 

第二篇:嵌入式知识总结

嵌入式

第一章 嵌入式系统概述

1.1  嵌入式系统

1.嵌入式系统的概念

嵌入机械或电气系统内部、具有专属功能的智能化计算机算机系统。通常要求实时计算性能,具有一定的复杂性。被嵌入的系统通常是包含硬件和机械部件的完整设备。

2.技术本质:内含计算机、嵌入到对象体系中、满足对象智能化控制要求

1.2  嵌入式处理器

.嵌入式处理器可以分为以下几大类:

嵌入式微处理器EMPU、微控制器MCU、DSP处理器、片上系统SOC

1.3  嵌入式操作系统

1.三种操作系统:多道批处理操作系统、分时操作系统、实时操作系统

2.基本概念

(1)任务:也称为线程,是一个简单的程序,该程序可以认为CPU完全属于该程序本身。实时应用程序的设计过程,包括如何把问题分割成多个任务,赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间

(2)内核:内核负责管理各个任务,为每个任务分配CPU时间,负责任务间的通信。内核提供的基本服务是任务切换。使用实时内核可以大大简化应用系统的设计,因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核需要消耗一定的系统资源,比如2%~5%的CPU运行时间、RAM和ROM等。内核提供必不可少的系统服务,如信号量、消息队列、延时等

(3)调度:是内核的主要职责之一。决定该轮到哪个任务运行了。多数实时内核是基于优先级调度法的。每个任务根据其重要程度的不同被赋予一定的优先级。基于优先级的调度法指CPU总是让处在就绪态的优先级最高的任务先运行。

(4)任务优先级:任务的优先级是表示任务被调度的优先程度。每个任务都具有优先级。任务越重要,赋予的优先级应越高,越容易被调度而进入运行态

(5)中断:中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳转到专门的子程序(中断服务子程序ISR)。中断服务子程序做事件处理,处理完成后,程序回到:在前后台系统中,程序回到后台程序;对非占先式内核而言,程序回到被中断了的任务;对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。

(6)时钟节拍:时钟节拍是特定的周期性中断。时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。

3.μC/OS-II中的数据类型

第二章 任务

2.1   任务的基本概念

1.任务的 5 种状态:

Sleep ---- 仅有编码未激活。

Ready ---- 已激活并“万事俱备,只欠调度”

Running ---- 正占用 CPU 运行自己。

Wait ---- 等待某事件发生。

ISR_Sta ---- Running状态的任务被中断后进入的状态。

2.用户任务代码的一般结构

void MyTask(void *pdata)

{   ……                       // 任务的初始化

    for ( ;  ; )                        //超循环构成任务体

   {

    可被中断的用户代码片断;

    OS_ENTER_CRITICAL();     //进入临界区(关中断)

    不可被中断的用户代码片断;

    OS_EXIT_CRITICAL();       //退出临界区(开中断)

    可被中断的用户代码片断;

     tasksw();

    }

}

void MyTask1(void *pdata)

{   … …  }

void MyTask2(void *pdata)

{   … …  }

void main( )

{

    … …

    OSInit( );

    … …

    OSTaskCreate( MyTask1,… … );

    OSTaskCreate( MyTask2,… … );

    … …

    OSStart( );

    … …

}

2.2   任务堆栈

任务堆栈的创建

#define    MyTaskStkSize   64

OS_STK    MyTaskStk[ MyTaskStkSize ]      //在 OS_CPU.H中定义 OS_STK

… …                                                   // typedef   INT32U  OS_STK

INT8U  OSTaskCreate(

               void (*task) (void *pd),             //指向任务的指针

               void * pdata,                      //传递给任务的参数

               MyTaskStk[ MyTaskStkSize -1 ]    //任务堆栈栈顶的指针×?

               INT8U prio                        //任务的优先级别

                      )

2.3  任务控制块及任务控制块链表

OSTCBFreeList、OSTCBList

OSTCBTbl[ ] ---- OSInit()  建立的任务控制块数组

OSTCBPrioTbl[ ] ---- 任务控制块优先级数组

OSTCBCur

OSTCBPrioTbl[ ] :OS_TCB* 数据类型的数组,以 Prio 为下标存放已使能的 TCB 指针。用于加速 TCB 的访问。

OSTCBCur:全局系统变量,指向当前正在运行的任务的 TCB 。

2.4  任务就绪表及任务调度

从 prio 到就绪表( OSRdyGrp、OSRdyTbl[ ] )的操作(进入/脱离 ---- 就绪状态)。

从就绪表( OSRdyGrp、OSRdyTbl[ ] )的当前状态(位图)到最高优先级别 prio 的(任务)映射操作。

2.5  任务的创建

uC/OS-II提供两个系统函数创建Task :

OSTaskCreate( )

OSTaskCreateExt( )

创建任务的一般方法

Task 可在主函数 main( ) 中操作系统调度启动(OSStart( ))前创建。

也可在Task中创建其他的Task,应用中习惯使用此结构。

uC/OS-II要求:在OSStart( )前,必须至少创建一个用户Task。

创建任务的示意代码

void main( )

{

       … …                          //主要是系统硬件初始化

       OSInit( );                         // uC/OS-II 初始化

       … …                          //创建消息机制

       OSTaskCreate(Task_A,……);     // 创建任务A

       OSStart( );                   // 启动多任务调动

}

void Task_A(void * pdata)    //任务A

{

       ……                         // 安装并启动 uC/OS-II 系统时钟

       OSStatInit( );             // 初始化统计任务(如果需要的话)

       ……                         // 在此处可以创建其他任务

       For ( ; ; )                // Task_A 任务体

       {

              ……

       }

}

相关推荐