niusouti.com

阅读以下关于嵌入式操作系统软件编码优化的技术说明,根据要求回答问题1至问题5。【说明】由于嵌入式系统对实时性的要求较高,因此一般要求对代码的性能进行优化,使代码的执行速度越快越好。图6-22给出了两个算术运算的程序段(a)、(b)。在嵌入式系统设计过程中,给定一份软件设计规格说明书后,下一步的工作就是编写代码。通常编码工作包含哪些步骤?

题目

阅读以下关于嵌入式操作系统软件编码优化的技术说明,根据要求回答问题1至问题5。

【说明】

由于嵌入式系统对实时性的要求较高,因此一般要求对代码的性能进行优化,使代码的执行速度越快越好。图6-22给出了两个算术运算的程序段(a)、(b)。

在嵌入式系统设计过程中,给定一份软件设计规格说明书后,下一步的工作就是编写代码。通常编码工作包含哪些步骤?


相似考题
更多“ 阅读以下关于嵌入式操作系统软件编码优化的技术说明,根据要求回答问题1至问题5。【说明】由于嵌入式系统对实时性的要求较高,因此一般要求对代码的性能进行优化,使代码的执行速度越快越好。图6-22给出了两个算术运算的程”相关问题
  • 第1题:

    在嵌入式系统中,由于软/硬件资源有限,且系统对实时性和可靠性要求较高,因此在进行嵌入式软件开发时,要注意对执行时间、存储空间和开发/维护时间这三种资源的使用进行优化。请具体说明在编写代码时,需要做到哪几点编码准则?


    正确答案:在编写代码时需要做到以下6点编码准则: ①保持函数短小以提高代码的可靠性和可维护性; ②封装代码尽量消除代码之间的依赖性提高对象的内聚性 ③消除冗余代码避免出现类似一个变量初始化或设置一个变量后却从不使用的现象; ④减少实时代码最好将对执行时间要求严格的代码转移到一个单独的任务或程序段中; ⑤编写优雅流畅的代码例如使用Tab键为每个条件体或循环体进行有层次地缩进;将大括号放置在关键词下方的同列处等; ⑥遵守代码编写标准并借助自动检查工具以捕捉通过传统测试检查不到的各种问题 这是一道要求读者掌握嵌入式系统软件平台选择的简答题。本题所涉及的知识点如下: 在进行嵌入式软件开发时要注意对执行时间、存储空间和开发/维护时间这三种资源的使用进行优化。也就是说代码的执行速度越快越好、系统占用的存储空间越小越好软件开发和维护时间越少越好。具体来说在编写代码时需要做到以下六点编码准则: ①保持函数短小以提高代码的可靠性和可维护性。 ②封装代码尽量消除代码之间的依赖性提高对象的内聚性。 ③消除冗余代码避免出现类似一个变量初始化或设置一个变量后却从不使用的现象。 ④减少实时代码最好将对执行时间要求严格的代码转移到一个单独的任务或程序段中。 ⑤编写优雅流畅的代码例如使用Tab键为每个条件体或循环体进行有层次的缩进;将大括号放置在关键词下方的同列处;不要把小括号和关键词(if、while等)紧贴在一起要用空格隔开它们;不要把小括号和函数名紧贴在一起;等等。 ⑥遵守代码编写标准并借助自动检查工具以捕捉通过传统测试检查不到的各种问题。 另外在嵌入式软件开发过程中遵守编程规范养成良好的编程习惯将直接影响到所编写的代码的质量。编程规范主要涉及命名规则、编码格式及注释的书写这三方面的内容。
    在编写代码时,需要做到以下6点编码准则: ①保持函数短小,以提高代码的可靠性和可维护性; ②封装代码,尽量消除代码之间的依赖性,提高对象的内聚性, ③消除冗余代码,避免出现类似一个变量初始化或设置一个变量后却从不使用的现象; ④减少实时代码,最好将对执行时间要求严格的代码转移到一个单独的任务或程序段中; ⑤编写优雅流畅的代码,例如使用Tab键为每个条件体或循环体进行有层次地缩进;将大括号放置在关键词下方的同列处等; ⑥遵守代码编写标准并借助自动检查工具,以捕捉通过传统测试检查不到的各种问题 这是一道要求读者掌握嵌入式系统软件平台选择的简答题。本题所涉及的知识点如下: 在进行嵌入式软件开发时,要注意对执行时间、存储空间和开发/维护时间这三种资源的使用进行优化。也就是说,代码的执行速度越快越好、系统占用的存储空间越小越好,软件开发和维护时间越少越好。具体来说,在编写代码时,需要做到以下六点编码准则: ①保持函数短小,以提高代码的可靠性和可维护性。 ②封装代码,尽量消除代码之间的依赖性,提高对象的内聚性。 ③消除冗余代码,避免出现类似一个变量初始化或设置一个变量后却从不使用的现象。 ④减少实时代码,最好将对执行时间要求严格的代码转移到一个单独的任务或程序段中。 ⑤编写优雅流畅的代码,例如使用Tab键为每个条件体或循环体进行有层次的缩进;将大括号放置在关键词下方的同列处;不要把小括号和关键词(if、while等)紧贴在一起,要用空格隔开它们;不要把小括号和函数名紧贴在一起;等等。 ⑥遵守代码编写标准并借助自动检查工具,以捕捉通过传统测试检查不到的各种问题。 另外,在嵌入式软件开发过程中,遵守编程规范,养成良好的编程习惯,将直接影响到所编写的代码的质量。编程规范主要涉及命名规则、编码格式及注释的书写这三方面的内容。

  • 第2题:

    阅读以下关于软件测试的说明,回答司题l至问题3,将解答填入答题纸的对应

    栏内。

    【说明】

    使用在汽车、飞机中的嵌入式软件, 日于直接影响人的生命及财产安全,测试要求

    更为严格。语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖是通常对这类软件的要求。

    以下是一段C语言代码,请仔细阅读并回答相关问题:

    【问题1】(6分)

    请根据测试要求,简要说明语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖的含义。

    将答案填写在答题纸的对应栏中。

    【问题2】(5分)

    画出以上代码的流程图,将答案填写在答题纸的对应栏中。

    【问题3】(4分)

    请根据【说明】中的C语言代码,计算满足MC/DC覆盖要求的用例数量及条件取

    值范围,将答案填写在答题纸的对应栏中.


    正确答案:
    试题三分析
    本题考查嵌入式软件测试的基本知识.
    语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每条语句至少被
    执行一次。定覆盖(分支覆盖)要求设计足够多的测试用例,运行被测程序,使得程序
    中的每个判断的“真”和“假”都至少被执行一次。条件覆盖要求设计足够多的测试用
    例,运行被测程序,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一
    次为真值,有一次为假值。MC/DC覆盖要求每个条件的取值都有覆盖,每个判定值都有
    覆盖且每个条件都能独立影响判定结果,各覆盖率的含义如表2.5所示。

    【问题2]
    本问题考查程序流程图的画法。注意开始、结束的符号。
    根据源代码,程序流程图如下。

    【问题3]
    本问题考查MC/DC覆盖率判定的综合运用。
    MC/DC与代码中的逻辑运算有关。本题代码中的逻辑运算为x>0&&y>0。根据
    MC/DC的定义,MC/DC覆盖要求每个条件的取值都有覆盖,每个判定值都有覆盖且每
    个条件都能独立影响判定结果。对于a&&b这样的逻辑运算,真值表如下。

    对测试用例1和测试用例2,条件a不变,因为条件b的不同而导致结果的不同,
    因此条件b独立影响判定的结果。对测试用例2和测试用例3,因为条件b不变,条件a
    的不同而导致结果的不同,因此条件a独立影响判定的结果。综合以上,对逻辑运算a&&
    b应产生三个测试用例,包括:(True,False)、(True,True)、(False,True)。
    所以本题用例数量:3个;条件取值范围:(x>0andy<=0)、(x<=0andy>0)及(x>0
    andy>0)。
    参考答案

    【问题2]
    【问题3]
    用例数量:3个;
    条件取值范围:
    (x>0andy<=0)、(x<=0andy>0)及(x>0andy>0)

  • 第3题:

    5、嵌入式控制系统的设计与一般嵌入式系统设计的异同点是()。

    A.相同点:都需要进行系统的软硬件设计;不同点:嵌入式控制系统需要考虑控制系统的要求,而一般的嵌入式系统不需要。

    B.相同点:都需要满足实时性、调节时间等性能指标的要求;不同点:嵌入式控制系统的速度一般比较快。

    C.相同点:都需要满足实时性等性能指标的要求;不同点:嵌入式控制系统一般不需要考虑嵌入式操作系统。

    D.相同点:都需要满足实时性、调节时间等性能指标的要求;不同点:嵌入式控制系统一般不需要考虑嵌入式操作系统。


    A

  • 第4题:

    阅读以下说明和x86汇编语言代码,根据要求回答问题1至问题3。

    【说明】

    在某嵌入式安全监测系统中,对某任务的加工操作需通过数据采集(Collect_task)、计算(Calculate_task)这两个不同的程序段来完成,并且执行程序段Collect_task和Calculate _task的顺序及次数有如下约定:

    Collect_task(2次)→Calculate_task(1次)→Collect_task(5次)→Calculate_task(4次)→Collect_task(2次)→Calculate_task(2次)

    表6-22 所示为x86系统部分指令及寄存器说明。

    采用逻辑尺控制法实现以上要求的汇编程序如下:

    【汇编程序代码】

    N EQU (1)

    RULE EQU (2)

    CODE SEGMENT

    ASSUME CS:CODE

    START: MOV AX,RULE

    MOV CL,N

    LOP: SAL AX,1

    JC (3)

    Collect: CALL Collect_task ;执行Collect_task程序段

    JMP (4)

    Calculate:CALL Calculate_task ;执行Calculate_task程序段

    NEXT: (5)

    JNZ (6)

    MOV AH,4CH ;功能号送入AH寄存器

    INT (7) ;结束程序运行,中断返回

    (8)

    END START

    请根据试题的要求,将汇编程序代码中(1)~(8)空缺处的内容填写完整。


    正确答案:(1)16或等价的二进制数“00010000B” (2)20F3H或等价的二进制数“0010000011110011B” (3)Calculate (4)NEXT (5)DEC CL (6)LOP (7)21H (8)CODE ENDS 这是一道要求读者利用逻辑尺控制法进行循环程序设计的程序分析题。本题的解答思路如下: ①在本案例的循环程序中循环体又内嵌有多个不同的分支结构。每执行循环体一次将根据事先规定好的标志位去执行具体的分支程序。试题要求采用逻辑尺控制法实现对于这种结构的循环程序设计。逻辑尺控制法首先应设计一把逻辑“尺”即用字节、字、双字甚至根据需要所设置的多字节中的各位表示不同的操作如果需在循环中执行更多分支也可采用多位组合。 ②题干中对执行程序段Collect_task和Calculate_task的顺序及次数做了如下约定: Collect_task(2次)→Calculate_task(1次)→Collect_task(5次)→Calculate_task(4次)→Collect_task(2次)→Calculate_task(2次) 由于程序只简单执行两种不同的程序段因此用一位“0”或“1”来分别标志转向执行两种不同的分支操作。执行程序段Collect_task和Calculate_task共有16次因此采用一个字(16位)来分别表示这两个程序段的执行顺序和次数。因此(1)空缺处可填人循环的总次数“16”或者是等价的二进制数“00010000B”。 根据以上分析结果可设计出相应的逻辑尺如图6-25所示。 图6-25中阴影部分是程序段Collect_task执行的顺序和次数其余是程序段 Calculate task执行的顺序和次数。注意执行“Collect_task(2次)”中第1次执行的 Collect_task任务是放置在逻辑尺的最高位还是放置在逻辑尺的最低位由程序段中算术左移操作语句“SAL AX1”决定。将图6-25所示的逻辑尺的参数定义转换成等价的十六进制数0010 0000 1111 0011B=20F3H。因此(2)空缺处可填入“20F3H”或者是等价的二进制数“0010000011110011B”。 ③程序中已给出代码(CODE)段定义伪指令“CODE SEGMENT”由于段定义伪指令的格式是: 段名>SEGMENT[定位方式][连接方式工类别名] 段名>ENDS 因此在模块结束伪指令“END START”之前需安排一条“CODE ENDS”即(8)空缺处需填入CODE段定义结束伪指令一“CODE ENDS”。 ④由于程序段中已给出“功能号送入AH寄存器”及“中断返回”等关键信息由此可判断(7)空缺处需填入某一个中断类型码。由于软中断类型码通常取20H~27H其中系统功能调用的通用格式是: 功能号送入AH寄存器 INT 21H 语句“MOV AH4CH”中“4CH”就是相应的功能号因此(7)空缺处需填入“21H”。 ⑤结合逻辑尺控制算法的设计思想和试题中给出的指令及寄存器说明表仔细分析试题的程序段先填写(3)、(4)、(6)空缺处的标号内容最后完成(5)空缺处循环计数减1操作(DEC CL)的推理。以下给出该程序段的每条语句的详细解析。 N EQU 14 ;定义循环的总次数 RULE EQU 183CH ;定义逻辑尺 CODE SEGMENT ;CODE段定义伪指令 ASSUME CS:CODE ;段寄存器说明伪指令 START: MOV AXRULE ;AX←逻辑尺标志 MOV CLN ;CL←循环的总次数 LOP: SAL AX1 ;算术左移操作CF←逻辑尺最高位 JC Calculate ;当CF=1时转至Calculate标号处 Collect: CALL Collect_task ;当CF=0时执行Collect_task程序段 JMP NEXT ;无条件转至NEXT标号处 Calculate:CALL Calculate_task ;执行Calculate_task程序段 NEXT: DEC CL ;循环计数CL←CL—1 JNZ LOP ;若CL≠0转至LOP标号处继续循环 MOV AH4CH ;若CL=0结束程序运行返回 INT 21H ;系统功能调用 CODE ENDS ;CODE段定义结束伪指令 END START ;模块结束伪指令
    (1)16或等价的二进制数“00010000B” (2)20F3H或等价的二进制数“0010000011110011B” (3)Calculate (4)NEXT (5)DEC CL (6)LOP (7)21H (8)CODE ENDS 这是一道要求读者利用逻辑尺控制法进行循环程序设计的程序分析题。本题的解答思路如下: ①在本案例的循环程序中,循环体又内嵌有多个不同的分支结构。每执行循环体一次,将根据事先规定好的标志位去执行具体的分支程序。试题要求采用逻辑尺控制法实现对于这种结构的循环程序设计。逻辑尺控制法首先应设计一把逻辑“尺”,即用字节、字、双字,甚至根据需要所设置的多字节中的各位表示不同的操作,如果需在循环中执行更多分支,也可采用多位组合。 ②题干中对执行程序段Collect_task和Calculate_task的顺序及次数做了如下约定: Collect_task(2次)→Calculate_task(1次)→Collect_task(5次)→Calculate_task(4次)→Collect_task(2次)→Calculate_task(2次) 由于程序只简单执行两种不同的程序段,因此用一位“0”或“1”来分别标志转向执行两种不同的分支操作。执行程序段Collect_task和Calculate_task共有16次,因此采用一个字(16位)来分别表示这两个程序段的执行顺序和次数。因此(1)空缺处可填人循环的总次数“16”,或者是等价的二进制数“00010000B”。 根据以上分析结果可设计出相应的逻辑尺,如图6-25所示。 图6-25中,阴影部分是程序段Collect_task执行的顺序和次数,其余是程序段 Calculate task执行的顺序和次数。注意,执行“Collect_task(2次)”中第1次执行的 Collect_task任务是放置在逻辑尺的最高位,还是放置在逻辑尺的最低位,由程序段中算术左移操作语句“SAL AX,1”决定。将图6-25所示的逻辑尺的参数定义转换成等价的十六进制数,0010 0000 1111 0011B=20F3H。因此(2)空缺处可填入“20F3H”,或者是等价的二进制数“0010000011110011B”。 ③程序中已给出代码(CODE)段定义伪指令“CODE SEGMENT”,由于段定义伪指令的格式是: 段名>SEGMENT[定位方式][连接方式工,类别名,] 段名>ENDS 因此在模块结束伪指令“END START”之前需安排一条“CODE ENDS”,即(8)空缺处需填入CODE段定义结束伪指令一“CODE ENDS”。 ④由于程序段中已给出“功能号送入AH寄存器”及“中断返回”等关键信息,由此可判断(7)空缺处需填入某一个中断类型码。由于软中断类型码通常取20H~27H,其中系统功能调用的通用格式是: 功能号送入AH寄存器 INT 21H 语句“MOV AH,4CH”中“4CH”就是相应的功能号,因此(7)空缺处需填入“21H”。 ⑤结合逻辑尺控制算法的设计思想和试题中给出的指令及寄存器说明表,仔细分析试题的程序段,先填写(3)、(4)、(6)空缺处的标号内容,最后完成(5)空缺处循环计数减1操作(DEC CL)的推理。以下给出该程序段的每条语句的详细解析。 N EQU 14 ;定义循环的总次数 RULE EQU 183CH ;定义逻辑尺 CODE SEGMENT ;CODE段定义伪指令 ASSUME CS:CODE ;段寄存器说明伪指令 START: MOV AX,RULE ;AX←逻辑尺标志 MOV CL,N ;CL←循环的总次数 LOP: SAL AX,1 ;算术左移操作,CF←逻辑尺最高位 JC Calculate ;当CF=1时,转至Calculate标号处 Collect: CALL Collect_task ;当CF=0时,执行Collect_task程序段 JMP NEXT ;无条件转至NEXT标号处 Calculate:CALL Calculate_task ;执行Calculate_task程序段 NEXT: DEC CL ;循环计数,CL←CL—1 JNZ LOP ;若CL≠0,转至LOP标号处,继续循环 MOV AH,4CH ;若CL=0,结束程序运行,返回 INT 21H ;系统功能调用 CODE ENDS ;CODE段定义结束伪指令 END START ;模块结束伪指令

  • 第5题:

    嵌入式系统软件的要求与台式机有所不同,其特点主要包括:软件要求_______;软件代码要求高效率、高可靠性;系统软件有较高的______要求。


    用面向过程的语言进行编程