免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2015年下半年 嵌入式系统设计师 上午试卷 综合知识
  第34题      
  知识点:   应用软件的移植
  关键词:   嵌入式   应用软件        章/节:   嵌入式系统程序设计       

 
下列做法中不利于嵌入式应用软件移植的是(34)。
 
 
  A.  在软件设计上,采用层次化设计和模块化设计
 
  B.  在数据类型上,尽量直接使用C语言的数据类型
 
  C.  将不可移植的部分局域化,集中在某几个特定的文件之中
 
  D.  软件体系结构设计时,在操作系统和应用软件之间引入一个中间件层
 
 
 

 
  第34题    2014年下半年  
   38%
下列做法中不利于嵌入式应用软件移植的是(34)。
 
   知识点讲解    
   · 应用软件的移植
 
       应用软件的移植
        嵌入式应用软件的移植指的是把应用软件从一个嵌入式操作系统平台移植到另一个操作系统平台。
        一个应用软件的实现涉及两个方面的问题:
        (1)这个应用软件必须用某种编程语言来编写,如汇编语言、C语言、C++语言。
        (2)这个应用软件必须在某个平台上运行,该平台一般是一个操作系统,如Windows XP、Linux等。
        当然,也有一些软件系统,它们既是编程语言,又是运行平台,如Java。
        因此,移植一个应用软件时,既要考虑编程语言的因素,也要考虑运行平台的因素。对于PC上的应用软件来说,它的运行平台比较有限,主要有两大类,即Windows系列和UNIX系列。相应的,每一类平台都有各自的一套应用程序编程接口。在嵌入式系统中,编程语言的问题不大,因为大多数嵌入式开发都是采用移植性较好的C语言。但是在运行平台上,嵌入式操作系统的选择是非常多的,目前已经开发了数以百计且各具特色的嵌入式操作系统产品。从理论上说,每一个操作系统都会定义一组API接口函数,因此,如果要在嵌入式平台上进行应用软件的移植,难度是比较大的。
        为了提高嵌入式应用软件的可移植性,在软件开发时需要遵守以下的一些原则:
        (1)在软件设计上,要采用层次化设计和模块化设计。所谓层次化,指的是软件设计的纵向结构,下层为上层提供服务,上层调用下层提供的服务。每一个层次都应该定义清晰的接口和功能,分层的数量要合适。层次化结构设计的优点是:在进行系统移植时,通常只需要修改底层软件,而不需要去修改上层软件。所谓模块化,既体现在整体软件的设计上,又体现在同一层的软件结构上。模块化不同于层次化,一般来说,软件模块之间是相互独立的,一个模块的实现不依赖于其他模块的实现。良好的模块化设计,可以很容易地进行软件模块的裁减和更新。
        (2)在软件体系结构上,可以在操作系统和应用软件之间引入一个虚拟机层,或者叫操作系统抽象层,把一些通用的、共性的操作系统API接口函数封装起来。在编写一个应用程序时,不是直接去调用实际操作系统的API,而是使用虚拟层所提供的API。这样,在移植这个应用程序的时候,只要针对新的操作系统平台,去实现这个虚拟层即可,其他的代码不用做任何的修改。在定义这个虚拟层时,要综合考虑现有的各种嵌入式操作系统的功能和特性,尽量采用标准的操作系统接口,如POSIX标准。
        (3)在功能服务的调用上,要尽量使用可移植的函数,如标准的C语言函数,或自己编写的函数。尽量不要使用依赖于特定操作系统的API函数。
        (4)在数据类型上,由于C语言的数据类型与机器的字长和编译器有关,因此可以用宏定义的方式来定义一组可移植的数据类型,然后在应用程序的内部,只使用这些数据类型,而不使用C语言的数据类型。例如,可以用INT32U来表示无符号的32位整型数据。对于实际的编译器,可以定义为:
        
        (5)将不可移植的部分局域化。对于想进行软件移植的程序设计人员来说,如果应用软件的各个地方都散布着不可移植的代码,就必须从软件中一一找出它们,然后修改。这将是一件非常费时又费力的事情,而且这种修改也容易导致新的问题。为了提高移植的效率,可以把不可移植的代码通过宏定义和函数的形式,分类集中于某几个特定的文件之中。这样,对不可移植代码的使用,就可转换成对函数和宏定义的使用。在以后的移植过程中,既有利于迅速地对需要修改的代码进行定位,又可方便地进行修改。
        (6)提高代码的可重用性。在进行嵌入式软件开发时,要有意识地提高代码的可重用性,不断积累可重用的软件资源。例如,可以更好地抽象软件的函数,使之更加模块化,功能更专一,接口更简洁明了。
   题号导航      2015年下半年 嵌入式系统设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第34题    在手机中做本题