第七章 嵌入式软件设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
24
嵌入式系统的调试过程:
25
嵌入式系统的调试方法:
1.源程序模拟器方式
2.监控器方式
3.仿真器方式
26
源程序模拟器(Simulator)是在PC机上,通过软件
手段模拟执行为某种嵌入式处理器编写的源程序的测
试工具。
注:模拟器的功能毕竟是以一种处理器模拟另一种
处理器的运行,在指令执行时间、中断响应、定时器
10
DARTS设计方法的设计步骤如下: 数据流分析--从功能需求分析数据流图
划分任务--在数据流图上把可并行的、相对
独立功能抽象成一个系统任务
定义任务间的接口--确定任务之间的通信和
同步
11
生成代码阶段需要完成的工作包括代码编程、 交叉编译和链接、交叉调试和测试等。
12
在嵌入式系统的开发过程中,一般采用的方法
5
嵌入式软件的开发流程与通用软件的开发流程大 同小异,但开发所使用的设计方法具有嵌入式开发 的特点。整个开发流程可分为: 需求分析阶段 设计阶段 生成代码阶段 固化阶段
6
嵌入式系统应用需求中最为突出的是注重应用的时 效性,需求分析阶段的主要任务是: (1)对问题的识别和分析 对用户提出的问题进行抽象识别用以产生以下的需 求:功能需求、性能需求、环境需求、可靠性需求、 安全需求、用户界面需求、资源使用需求、软件成本 与开发进度需求。
宿主机(Host)是一台通用计算机,一般是 PC机。它通过串口或网络连接与目标机通信。

目标机(Target) 可以是嵌入式应用软件的 实际运行环境,也可以是能替代实际环境的 仿真系统。

4
–引入任务设计方法 –需要固化程序 –软件开发难度大

嵌入式应用软件对实时性、稳定性、可
靠性、抗干扰性等性能的要求都比通用软 件的要求更为严格和苛刻。

赋予这些任务高的优先级,以满足对时间 的需要
38
计算需求 •把计算功能捆绑成任务,以消耗CPU的剩余时间 •计算量大的功能占用CPU的时间多 •赋予计算量大的任务较低优先级 •能被高优先级的任务抢占 •保持高优先级的任务是轻量级的
•多个计算任务可安排成同优先级,按时间片循
环轮转
39

功能内聚 将紧密相关的功能变换组成一个任务,减 少通信的开销
求开发机上的编译器能支持交叉编译。
嵌入式集成开发环境都支持交叉编译、链接, 如 WindRiver 公司的TornadoⅡ以及 GNU 套件等。交 叉编译链接生成两种类型的可执行文件:调试用 的可执行文件和固化的可执行文件。
14
交叉调试,又叫远程调试,具有以下特点:
调试器和被调试的程序运行在不同的机器上。调
20
系统测试关注所设计的系统,在模块与模 块集成之后构成完整系统时所表现出的质量指 标,包括正确性、可扩性等。
21

确认测试是针对确认标准的测试。确认标 准由需求分析产生,所以实际上就是指规 格化的需求,通常采用黑盒测试技术。

所有的系统测试和确认测试必须在目标环 境下执行。
22
嵌入式系统的应用软件是针对特定的实际专业领域的, 基于相应的嵌入式硬件平台,并能完成用户预期任务的 计算机软件嵌入式软件的特点如下: (1)软件要求固态化存储。 (2)软件代码要求高质量、高可靠性。 (3)系统软件的高实时性是基本要求。 (4)多任务实时操作系统成为嵌入式应用软件的必需
试器运行在PC或工作站上,而被调试程序运行在各
式的专用目标机上;
调试器通过某种通信方式与目标机建立联系,如
串口、并口、网络、JTAG或者专用的通信方式;
15
在目标机上一般具有某种调试代理,这种代理能与 调试器一起配合完成对目标机上运行程序的调试。 这种代理可以是某种能支持调试的硬件,也可以是 某种软件; 目标机可以是一种仿真机。通过在宿主机上运行 目标机的仿真软件,仿真一台目标机,使整个调试 工作只在一台计算机上进行。
语分别实现紧耦合通信和松耦合通信。
•紧耦合通信:发送方发送消息后立即等待回答
•松耦合通信:通过消息队列缓冲消息
•信息隐藏模块
•实现数据结构和访问方法
•系统由任务(主动对象)和信息隐藏模块(被
动对象)构成
44

任务同步模块TSM(Task Synchronization Module)
• •
采用互斥等待和信号灯交叉激励的方式实现 管理“控制”(而不是“数据”)在任务间 的传递
–数据流(箭头)—变换间的数据流动
–数据存储区(方框)—数据的存储场所
–文件(双线)—输入/输出文件
–数据字典,定义了数据流和数据存储区所包含
的数据项
34
机器人控制器数据流图
35
划分任务
识别出并行性的功能--需要考虑系统内功能的异步性 分析数据流图中的变换,确定哪些变换可以并行, 哪些变换本质上是顺序的 一个任务可对应一个变换,也可对应多个变换。 划分任务的规则 – I/O 依赖性 – 功能的时间关键性 – 计算需求 – 功能内聚 – 时间内聚 – 周期执行
28
29
仿真器调试方式是在微处理器的内部嵌入额外的
控制模块。当特定的触发条件满足时,系统将进入某
种特殊状态,被调试的程序暂时停止运行,宿主机的
调试器通过微处理器外部特设的通信口访问各种寄存
器、存储器资源,并执行相应的调试指令 一 般 高 档 的 微 处 理 器 都 带 JTAG (Joint Test Action Group,联合测试行动组)接口,它是一种边界 扫描标准,只需 5根引脚就可以实现在线仿真的功能。
等方面很有可能与实际处理器有相当大的差别。另外,
它无法仿真嵌入式系统在应用系统中的实际执行情况
比如:ARM公司的ARMulator模拟器
27
监控器(Monitor)调试方式需要目标机与宿主机 协调。首先,在宿主机和目标机之间通过串口、以 太口等建立物理连接,然后在宿主机上运行调试器, 目标机运行监控程序和被调试程序,从而建立宿主 机与目标机的逻辑连接。宿主机通过调试器与目标 机的监控器建立通信连接,它们相互间的通信遵循 远程调试协议。比如ARM公司的Angel。
46
需求分析与SPEC
分析用户需求,定义系统功能需求和I/O接口 数据流分析:采用DFG 系统设计:DARTS方法 完成任务分解(并行进程), 定义任务间接口关系 划分任务:在DFG中确定并发任务 定义任务接口 DARTS使用RTSA时间规范将时间 预算分配到每个任务上。
19
目的:检测系统划分软硬件功能后,在软件集成测试完成的基 础上,测试模块软件在硬件平台上的运行情况,主要是对嵌 入式软件的实时性、嵌入性及功能性能指标的测试。 软硬件集成测试过程主要是在需求规格说明完成的情况下,结
wenku.baidu.com
合通用的标准、规范以及接口控制文件,与软件设计同步,
编写软硬件集成测试的《测试计划》和《测试说明》,经过 评审后,把被测试软件加载到目标机上运行,以检测嵌入式 软件与硬件配合完成系统功能、性能的质量。
18
集成测试的目的是检测程序是否符合《概要设计说 明书》的要求。通常采用黑盒测试技术,但有时为 了确保主要控制路径的覆盖测试,也会采用一定的 白盒测试技术。 软件集成也可在主机环境上完成,在主机平台 上模拟目标环境运行,当然在目标环境上重复测试 是有必要的,在此级别上的确认测试将确定一些环
境上的问题,比如内存定位和分配上的一些错误。
是先在通用PC上编程,然后通过交叉编译链接,将
程序做成目标平台上可以运行的二进制代码格式。
最后将程序下载到目标平台上的特定位置,在目标
板上启动运行这段二进制代码。
13
嵌入式软件开发编码完成后,要进行编译和链
接以生成可执行代码。但是,在开发过程中设计 人员普遍使用Intel的x86系列CPU的计算机进行开 发,而目标环境的处理芯片却是多种多样的,如 ARM,DSP,PowerPC,DragonBall系列等,这就要
9
系统的设计阶段包括系统设计、任务设计和任务
的详细设计。由于嵌入式系统中任务的并发性,嵌入
式软件开发中引入了DARTS的设计方法。
DARTS(Design
Approach
for
Real-Time
Systems)设计方法:是结构化分析/结构化设计的
扩展。它给出划分任务的方法,并提供定义任务
间接口的机制。
23
嵌入式应用软件高度依赖目标应用的软硬件环境, 软件的部分任务功能函数由汇编语言完成,具有高 度的不可移植性。 为了保证实时性能,使用效率高和速度快的汇编 语言是不可避免的 尽可能提高嵌入式应用软件的可移植性方法: (1)尽量用高级语言开发,少用汇编语言
(2)局域化不可移植部分
(3)提高软件的可重用性
创建第一个Windows CE工程文件 配置工程并编译内核镜像文件
2

嵌入式系统与通用计算机系统的差别:
– 人机交互界面 – 有限的功能 – 时间关键性和稳定性
3

嵌入式软件开发的特点:
–需要交叉开发环境:交叉开发环境是指实现编
译、链接和调试应用程序代码的环境。与运行应 用程序的环境不同,它分散在有通信连接的宿主 机与目标机环境之中。
41

周期执行
一个需要周期执行的变换可以作为一个独
立的任务,按一定的时间间隔被激活

将在相同周期内执行的各功能组成一个任 务频率高的任务赋予高优先级
42
机 器 人 控 制 器 的 任 务 划 分
43
•定义任务接口
•任务间通信模块TCM(Task Communication Module)
• 消息通信模块:通过管理消息队列和同步通信原
16
嵌入式软件的测试过程正好与开发过程相反:

单元测试 集成测试(配置项测试)


软硬件集成测试
系统测试 确认测试
17
软件单元测试的目的是检测程序模块是否符合 《详细设计说明书》的要求。通常会采用白盒测 试技术,如基于路径覆盖原理等。 所有单元级测试都可以在主机环境上进行,除 非特别指定单元测试直接在目标环境进行。
• 按下“运行”按钮,则选定的程序开始运行,系统
转为运行态。
• 程序运行中如果按下“停止”键,程序被挂起。之 后,操作者可以按下“运行”键,使程序恢复执行,
也可按下“结束”键,结束程序。
• 按下“结束”键后,系统进入终止态。当程序最终
终止执行时,系统返回手动状态。
33
数据流图
每个数据流图都包含:
–加工(椭圆—对数据的操作变换
7
(2)制订规格说明文档
经过对问题的识别,产生了系统各方面
的需求。通过对规格的说明,文档得以清
晰、准确地描述。这些说明文档包括需求
规格说明书和初级的用户手册等。
8
(3)需求评审 需求评审作为系统进入下一阶段前最后的需 求分析复查手段,在需求分析的最后阶段对各项 需求进行评估,以保证软件需求的质量。需求评 审的内容包括正确性、无歧义性、安全性、可验 证性、一致性、可理解性、可修改性、可追踪性 等多个方面。
36
I/O 依赖性
•变换依赖于I/O,性能受限I/O,可独立成任务
•在系统中创建与I/O设备数目相当的I/O任务
•在任务中分离设备相关性
• I/O任务只完成与设备相关的功能 • I/O任务的执行只受限于I/O设备的性能,而 不是处理器
37


功能的时间关键性
将有时间关键性(deadline)的功能分离 出来,组成独立运行的任务
45
DFG强调数据流动,不强调控制信号流动,因此有利 于描述并发,但难于描述同步 扩充DFG 表示任务通信与同步和状态依赖 DARTS设计方法的设计步骤如下: 数据流分析--从功能需求分析数据流图
划分任务--在数据流图上把可并行的、相对独立
功能抽象成一个系统任务
定义任务间的接口--确定任务之间的通信和同步
第七章
本章知识点
嵌入式软件设计
嵌入式软件开发的特点 嵌入式系统开发的流程 需求分析 设计阶段 编码阶段 固化阶段 嵌入式系统的调试
1
实例分析
基于Windows CE的嵌入式应用程序开发实例
基于Windows CE嵌入式应用程序开发环境
基于Windows CE嵌入式应用程序开发流程
30
•控制设备由内部控制器和外部控制面板组成
•控制器控制六个转轴,并与数字I/O传感器交互作用
•转轴和I/O由程序控制
•该程序由控制面板操作启动执行
31
需求分析与说明
32
控制执行过程
• 按下“上电”按钮,系统进入了上电状态。 • 上电成功后,系统进入了手动状态。此时,操作者
可以通过程序选择开关选择程序

把每个变换都作为同一任务中的一个独立
模块,不仅保证了模块级的功能内聚,也
保证了任务级的功能内聚
40
时间内聚
•将在同一时间内完成的各功能形成一个任务
•即使这些功能是不相关的
•功能组的各功能是由相同的外部事件驱动的, 这样每次任务接收到一个事件,它们都可以 同时执行 •减少了任务调度及切换的次数,减少了系统的 开销
相关文档
最新文档