免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2018年下半年 嵌入式系统设计师 上午试卷 综合知识
  第50题      
  知识点:   板级支持包   嵌入式系统
  关键词:   模块   嵌入式系统   嵌入式        章/节:   嵌入式软件基础知识       

 
嵌入式系统中,各处理模块的板级支持包(BSP)所包含的内容,是和系统相关的驱动和程序。一般认为,(50)。
 
 
  A.  BSP属于操作系统的一部分
 
  B.  BSP是独立的板级支持层软件
 
  C.  BSP属于驱动程序层
 
  D.  BSP属于固件存在于处理模块硬件层
 
 
 

 
  第44题    2019年下半年  
   50%
关于BootLoader,下列理解错误的是(44)。
 
 
  第47题    2011年下半年  
   56%
以下关于数据库系统特点的叙述中,不正确的是(47)。
  第34题    2013年下半年  
   38%
与PC机系统相比,(34)不是嵌入式系统独具的特点。
  第33题    2012年下半年  
   43%
以下针对嵌入式系统高速PCB布线描述原则,不正确的是(33)。
   知识点讲解    
   · 板级支持包    · 嵌入式系统
 
       板级支持包
        设备驱动层也称为板级支持包(Board Support Package,BSP),它包含了嵌入式系统中所有与硬件相关的代码。BSP的基本思想是将嵌入式操作系统与具体的硬件平台隔离开来。也就是说,在BSP当中,把所有与硬件相关的代码都封装起来,并向上提供一个虚拟的硬件平台,而操作系统就运行在这个虚拟的硬件平台上,它使用一组定义好的编程接口来与BSP进行交互,并通过BSP来访问真正的硬件。BSP在嵌入式系统中的角色,类似于PC系统中的BIOS和驱动程序。
        对于一个成熟的商用操作系统而言,为了在业界得到广泛应用,就必须要能够支持种类众多的硬件平台,并实现应用程序的硬件无关性。一般来说,这种无关性是由操作系统来实现的。但是对于嵌入式系统来说,它没有像PC那样具有广泛使用的各种工业标准和统一的硬件结构。变化众多的硬件环境就决定了无法完全由操作系统来实现上层软件与底层硬件之间的无关性。因此各种商用的嵌入式操作系统都采用了分层设计的思想,将系统中与硬件直接相关的一层软件独立出来,称之为板级支持包。
        对于不同的嵌入式操作系统,BSP的具体结构和组成也各不相同。一般来说,BSP主要包括两个方面的内容:引导加载程序BootLoader和设备驱动程序。
               引导加载程序
               引导加载程序BootLoader是嵌入式系统加电后第一时间运行的软件代码。在桌面PC中的引导加载程序是由位于只读存储器ROM中的BIOS和位于硬盘的主引导记录(Master Boot Record,MBR)中的BootLoader引导程序(如LILO和GRUB)两部分代码组成的。BIOS在完成硬件检测和资源分配后,将硬盘MBR中的引导程序读到系统的内存当中,然后由MBR负责启动操作系统。但是在嵌入式系统当中,通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。例如,在一个基于ARM7TDMI内核的嵌入式系统中,系统在上电或复位时一般都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
               简单地说,BootLoader就是在操作系统内核运行之前运行的一小段程序。通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境配置为一定的状态,以便为最终调用操作系统内核做好准备。
               在嵌入式系统中,BootLoader的实现高度依赖于具体的硬件平台,对于不同的CPU体系结构和板级设备配置,需要不同的BootLoader。因此,要想建立一个通用的BootLoader几乎是不可能的。但是,一般来说,它主要包含以下基本功能:
               (1)片级初始化。片级初始化主要完成微处理器的初始化,包括设置微处理器的核心寄存器和控制寄存器,微处理器的核心工作模式及其局部总线模式等。片级初始化把微处理器从上电时的缺省状态逐步设置成系统所要求的工作状态。
               (2)板级初始化。通过正确地设置各种寄存器的内容来完成微处理器以外的其他硬件设备的初始化。例如,初始化LCD显示设备,初始化定时器,设置中断控制寄存器等。
               (3)加载内核。将操作系统和应用程序的映像从Flash硬盘拷贝到系统的内存当中,然后跳转到系统内核的第一条指令处继续执行。
               设备驱动程序
               在一个嵌入式系统当中,设备驱动程序是必不可少的。所谓的设备驱动程序,就是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口。对于不同的硬件设备来说,设备驱动程序也是不一样的。但是一般来说,设备驱动程序都会具备以下的基本功能。
               (1)硬件启动:在开机上电或系统重启的时候,对硬件进行初始化。
               (2)硬件关闭:将硬件设置为关机状态。
               (3)硬件停用:暂停使用这个硬件。
               (4)硬件启用:重新启用这个硬件。
               (5)读操作:从硬件中读取数据。
               (6)写操作:往硬件中写入数据。
               除了以上这些普遍适用的功能之外,设备驱动程序还可能有很多额外的、特定的功能。在具体实现的时候,这些功能一般是用函数的形式来实现的。这些函数主要有两种组织结构,即分层结构和混合结构,如下图所示。
               
               设备驱动程序的结构
               所谓分层结构,就是把设备驱动程序当中的所有函数分为两种类型,一种是直接跟硬件交互,直接去操纵和控制硬件设备的,这些函数称为硬件接口;另一种是跟上层软件交互,作为上层软件的调用接口。分层结构的优点是:把所有与硬件有关的细节都封装在硬件接口当中,硬件升级时,只需要改动硬件接口当中的函数,而上层接口当中的函数不用做任何的修改。
               所谓混合结构,就是在设备驱动程序当中,上层接口和硬件接口的函数是混在一起、相互调用的,它们之间没有明确的层次关系。无论是分层结构还是混合结构,它们给上层软件提供的调用接口都应该是明确而稳定的,即便设备驱动程序的内部有任何的变化,也不会影响到上层软件,这样,在移植操作系统和应用程序的时候,就非常方便。
 
       嵌入式系统
        嵌入式计算机系统是与特定功能的设备集成在一起、且隐藏在这个功能系统内部为预定任务而设计的计算机系统。该计算机可对设备的状态进行采集,包括操作者的命令和受控对象的状态,按照设备所要求的、预先设定的特定规律进行计算,计算结果作为命令输出到设备的某些部件,控制某些操作,同时将人所关心的信息显示给操作者。一个典型的嵌入式系统如下图所示。
        
        嵌入式系统组成
        上述嵌入式系统的输入、处理、输出的各个部分,一般情况下都是通过软件运行完成的。因此嵌入式软件是嵌入式系统的重要组成部分,而且体现了系统的思想、方法和规律。
        在当今社会中,嵌入式系统已经和我们的生活息息相关,人们每时每刻都离不了嵌入式系统,如下图所示。
        
        嵌入式系统基本分类
        嵌入式系统一般是实时系统,《牛津计算机字典》对实时系统解释是:“系统的输入对应于一个外部物理世界的运动,而系统输出对应着另外一个物理世界的运动,而这两个运动的时间差必须在可接受的足够小的范围内,实时性就体现在从输入到形成输出所需的时间。”实时系统又进一步定义为硬实时系统和软实时系统两种,如下表所示。
        
        实时系统分类及其特性
        一般认为,嵌入式计算机相对于个人计算机或超级计算机,在软件或硬件上的资源是有限的,硬件资源体现在处理速度、功耗、存储空间等方面,软件资源指有限的应用、有限的操作系统支持、应用代码量少等方面。
        第一款大批量生产的嵌入式系统是美国1961年发布的民兵Ⅰ型导弹内嵌的D-17自动制导计算机。
        随着20世纪60年代早期应用开始,嵌入式系统的价格迅速降低,同时处理功能和能力获得快速提高。以第一款单片机Intel 4004为例,在存储器和外围芯片的配套使用下,实现了计算器和其他小型系统。1978年,美国国家工程制造商协会发布了可编程单片机的“标准”,涵盖了几乎所有以计算机为基础的控制器,如单板计算机、数控设备以及基于事件的控制器,使得微处理器得到了快速发展。
        无一例外,不断发展中的嵌入式计算功能的实现都通过用户需求驱动、顶层定义、硬件定义开始,但核心是软件的算法处理,实际上类似硬件功能通过不同软件的控制就可以实现不同用户所需要的嵌入式功能,如下图所示。
        
        嵌入式计算机的层次化架构
        当基础硬件接口、计算和存储资源、总线与网络乃至各种传感器、作动器、液压等以模块化、通用化、组合化等变得越来越成熟,他们就可以方便地组合成硬件平台。而软件却恰恰相反,基本是为满足人类某种新的设想或应用要求开始进行新的设计。这些设计从诸如领域、实现功能、性能、可靠性、安全性等方面,可以是全新理念设备、或是适应性修改升级等途径,都会导致软件有不同程度的差异。
        嵌入式系统具有以下特征:
        (1)嵌入式系统的时间敏感性。嵌入式实时系统对时间响应都是有要求的。例如对于一个设备的运动控制系统,从操作指令发出,嵌入式计算机根据指令和外部条件计算并输出到动作器的动作,要保证在所有的条件下、在确定的时间内产生所需的输出。这对于设计者来说,一般的实时系统都会围绕这个关键需求进行系统设计。另外为了满足时间敏感性要求,确保在最复杂行为和最大延时情况下,系统操作不发生延迟,要求处理器的利用率要有40%左右的余量。有时为满足某些强实时嵌入式系统的应答时间限定在毫秒级或更低,需要在高级语言中嵌入低级语言编程实现。
        (2)嵌入式系统的可靠性和安全性。嵌入式计算机系统的失效带来的可能是个人娱乐系统故障的微小损失,可能是铁路信号失效的巨额经济损失,也可能是战略武器控制等经济损失以及重大的社会政治影响等。所以在某种设计缺陷被诱发后,对于不同的系统需要采取不同的策略,例如对具有重大影响的系统,要求计算机或计算机软件对设计缺陷、制造缺陷等失效采取“永不放弃”的安全性设计技术,将损失控制在可接受的范围内。在有人为输入情况下,嵌入式系统还需考虑最大可能地减少人为失误所引起的系统失效。这些算法或机制可以是输入有效性合理性检查、硬件容错、软件容错、错误后的系统缓慢降级、系统进入安全模式等。
        (3)嵌入式软件的复杂性。软件复杂度取决于问题规模和复杂度。简单问题的软件可由个人完成,甚至可以进行软件正确性证明;即使过程中更换人员,花费少许时间就可掌握和维护。但如汽车控制、飞机控制等大型复杂软件,其需要根据复杂的外部输入、按照多变量物理规律和人们的预期,实现预定的功能。软件需要根据系统的外部事件及其组合,考虑各种处理、逻辑、时序、边界、超出边界的鲁棒性等进行详细算法和策略研究。还需要考虑如安全性、可靠性、维护性等质量要求。更困难的是大规模软件需要团队联合定义、并行开发、持续维护,同时考虑处理平台限制条件。
   题号导航      2018年下半年 嵌入式系统设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第50题    在手机中做本题