第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... ·...

79
基于硬件构件的嵌入式底层软件开发方法研究及其应用 - I - 面向对象方法和软件构件技术已经广泛应用到传统软件开发中,大大提高软 件的开发效率、增强软件的重用性和移植性,而在嵌入式领域这种开发技术还微乎 其微。但随着嵌入式系统规模和复杂性的日趋增大,传统的嵌入式开发方式难以解 决面临的新问题,为此人们加大了对嵌入式开发方法的研究力度。由于嵌入式系统 是一个软硬件紧密结合的系统,所有嵌入式软件的执行都离不开特定的硬件体系, 因此,研究硬件模块及底层软件构件化的嵌入式开发方式对增强它们的重用性与移 植性具有重要意义。 本文从对现有通用软件开发方法的分析中获得启示,探讨面向嵌入式硬件模块 及底层软件的开发方法的具体实现过程。文中提出的硬件构件和底层构件技术,借 用面向对象方法和构件化技术中的封装方式、可重用与可移植等特点,实现硬件模 块及底层软件在同一系统或不同系统中的重用与移植。本文给出硬件构件和基于硬 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础 上提出基于硬件构件的嵌入式硬件电路图的设计原则及注意事项、底层构件化的嵌 入式底层软件开发框架及实例说明。 上述研究成果对丰富嵌入式开发方式具有重要的理论意义和实际应用价值。文 中提出的两种构件技术能有效的提高嵌入式系统的开发效率,增强系统的可靠性与 稳定性。本文将这两种构件开发技术应用到恒温恒湿控制器系统(CTHCS)的设计与 实现中,为嵌入式硬件系统及底层软件的开发提供新的方法。 关键词:嵌入式系统,硬件构件,底层构件,底层软件,构件重用,构件移植 作者:荐红梅 指导老师:王宜怀

Transcript of 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... ·...

Page 1: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 摘 要

- I -

摘 要

面向对象方法和软件构件技术已经广泛应用到传统软件开发中,大大提高软

件的开发效率、增强软件的重用性和移植性,而在嵌入式领域这种开发技术还微乎

其微。但随着嵌入式系统规模和复杂性的日趋增大,传统的嵌入式开发方式难以解

决面临的新问题,为此人们加大了对嵌入式开发方法的研究力度。由于嵌入式系统

是一个软硬件紧密结合的系统,所有嵌入式软件的执行都离不开特定的硬件体系,

因此,研究硬件模块及底层软件构件化的嵌入式开发方式对增强它们的重用性与移

植性具有重要意义。

本文从对现有通用软件开发方法的分析中获得启示,探讨面向嵌入式硬件模块

及底层软件的开发方法的具体实现过程。文中提出的硬件构件和底层构件技术,借

用面向对象方法和构件化技术中的封装方式、可重用与可移植等特点,实现硬件模

块及底层软件在同一系统或不同系统中的重用与移植。本文给出硬件构件和基于硬

件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

上提出基于硬件构件的嵌入式硬件电路图的设计原则及注意事项、底层构件化的嵌

入式底层软件开发框架及实例说明。

上述研究成果对丰富嵌入式开发方式具有重要的理论意义和实际应用价值。文

中提出的两种构件技术能有效的提高嵌入式系统的开发效率,增强系统的可靠性与

稳定性。本文将这两种构件开发技术应用到恒温恒湿控制器系统(CTHCS)的设计与

实现中,为嵌入式硬件系统及底层软件的开发提供新的方法。

关键词:嵌入式系统,硬件构件,底层构件,底层软件,构件重用,构件移植

作者:荐红梅

指导老师:王宜怀

Page 2: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

Research and Application of Development Method for Embedded Underlying Software based on Hardware-Component

- II -

Abstract

Object-Oriented methodology and Software Components technology have been

widely used into traditional software development, which have improved software

development efficiency and enhanced software reusability and transplantation. But for

embedded systems, it is extremely lacked of these kinds of development methods.

However, with the increasing size and complexity of embedded systems, the new

problems can not be solved by traditional software development methods easily, so

people has to increase the intensity of the study on embedded system development

methods. As embedded system is a closely integrated hardware and software system and

all embedded software should run on special hardware architecture, it is useful to study

on the embedded development methods of component-based hardware module and

underlying software, to enhance the reusability and transplantation.

In this paper report, author first analyzes the exiting general software development

methods and discusses the realization process of embedded hardware module and

underlying software-oriented method. Then, the hardware component and underlying

component technologies have been proposed, which use some features of Object-

Oriented methodology and Software Component technology, such as package, reusability

and transplantation. The definition and concept model of hardware component and

underlying component are given in this paper, followed by their implementation and

application process. On this basis, some principles are proposed, which are embedded

hardware circuit design principles and notes based on hardware component, embedded

software development framework and examples based on software component.

Those above study results have important theoretical and practical value, for the

enrichment of embedded development methods. These component technologies proposed

in this paper, can improve the efficiency of embedded systems development and enhance

system reliability and stability. The two technologies are applied to the design and

implement of constant temperature and humidity controller system (CTHCS), which

provide a new method for the development of embedded hardware system and underlying

software.

Key Words: Embedded System; Hardware Component; Underlying Component;

Underlying Software; Component Reusability; Component Transplantation

Written by Jian Hongmei

Supervised by Wang Yihuai

Page 3: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

目 录

摘 要 ------------------------------------------------------------------------------------I

Abstract ---------------------------------------------------------------------------------II

第一章 绪 论 -------------------------------------------------------------------------- 1

1.1 课题背景 --------------------------------------------------------------------- 1

1.1.1 嵌入式系统及其发展历程 ------------------------------------------- 1

1.1.2 嵌入式系统的构成及其特点----------------------------------------- 2

1.2 嵌入式系统开发遇到的难点 ------------------------------------------------ 4

1.3 嵌入式系统开发方法的现状及其启示 ------------------------------------- 5

1.4 本文的课题意义及主要工作 ------------------------------------------------ 5

1.4.1 本文的课题意义 ------------------------------------------------------ 5

1.4.2 本文的主要工作 ------------------------------------------------------ 5

1.5 论文结构 --------------------------------------------------------------------- 6

第二章 嵌入式系统当前开发理论及其启示----------------------------------------- 7

2.1 嵌入式软件工程及其开发难点 --------------------------------------------- 7

2.1.1 软件工程与嵌入式软件工程----------------------------------------- 7

2.1.2 嵌入式软件开发的难点 ---------------------------------------------- 8

2.2 结构化的软件开发方法分析 ------------------------------------------------ 8

2.2.1 结构化方法的概述及其特点----------------------------------------- 8

2.2.2 结构化方法的不足 --------------------------------------------------- 9

2.2.3 结构化的嵌入式软件开发方法分析--------------------------------- 9

2.3 面向对象方法的分析 ------------------------------------------------------- 10

2.3.1 面向对象方法的简介------------------------------------------------ 11

2.3.2 面向对象方法的特点------------------------------------------------ 11

2.3.3 面向对象的嵌入式系统开发方法分析 ----------------------------- 12

2.4 构件化技术分析 ------------------------------------------------------------ 12

2.4.1 构件及其发展-------------------------------------------------------- 13

2.4.2 构件化的软件开发方法 --------------------------------------------- 13

2.4.3 构件化的嵌入式软件开发方法 ------------------------------------- 13

2.5 三种开发方法的比较分析-------------------------------------------------- 14

2.6 现有嵌入式开发方法的启示 ----------------------------------------------- 15

2.7 本章小结 -------------------------------------------------------------------- 16

第三章 基于硬件构件的嵌入式硬件系统开发 ------------------------------------- 17

Page 4: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

3.1 嵌入式硬件的最小系统 ---------------------------------------------------- 17

3.2 硬件构件开发技术分析 ---------------------------------------------------- 18

3.2.1 硬件构件的定义及分类 --------------------------------------------- 18

3.2.2 硬件构件的设计实现------------------------------------------------ 19

3.2.3 硬件构件的特点分析------------------------------------------------ 20

3.3 基于硬件构件的嵌入式系统硬件电路原理图设计 ----------------------- 21

3.3.1 硬件构件化电路原理图设计基本原则 ----------------------------- 21

3.3.2 绘制电路原理图的注意事项---------------------------------------- 23

3.4 硬件构件化的 PCB 设计及印制原则 -------------------------------------- 24

3.4.1 基于硬件构件的 PCB 设计基本原则------------------------------- 25

3.4.2 设计 PCB 的技巧与注意事项--------------------------------------- 27

3.5 硬件构件的低功耗设计策略 ----------------------------------------------- 28

3.5.1 功耗简介 ------------------------------------------------------------- 28

3.5.2 基于硬件构件的低功耗设计策略 ---------------------------------- 28

3.5.3 软件低功耗设计方法------------------------------------------------ 30

3.6 本章小结 -------------------------------------------------------------------- 30

第四章 基于硬件构件的嵌入式底层构件开发技术-------------------------------- 32

4.1 嵌入式软件开发的特点分析------------------------------------------------ 32

4.2 开发文档的设计规范 ------------------------------------------------------- 33

4.3 系统信号量分析设计规范-------------------------------------------------- 34

4.4 硬件构件化的嵌入式底层构件开发技术分析 ---------------------------- 34

4.4.1 基于硬件构件的嵌入式底层构件 ---------------------------------- 34

4.4.2 底层构件的设计模型------------------------------------------------ 35

4.4.3 底层构件的实现 ----------------------------------------------------- 35

4.4.4 基于底层构件的嵌入式底层软件编程思想------------------------ 37

4.5 硬件构件及底层构件的重用与移植分析---------------------------------- 39

4.6 本章小结 -------------------------------------------------------------------- 40

第五章 硬件构件化嵌入式开发技术的应用实例 ---------------------------------- 41

5.1 系统功能分析 --------------------------------------------------------------- 41

5.1.1 系统功能简介-------------------------------------------------------- 41

5.1.2 CTHCS 输入/输出信号分析 ----------------------------------------- 42

5.2 基于硬件构件的 CTHCS 硬件系统的实现-------------------------------- 43

5.2.1 系统硬件选型-------------------------------------------------------- 43

Page 5: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

5.2.2 CTHCS 的硬件设计方案 -------------------------------------------- 45

5.2.3 CTHCS 的核心构件-------------------------------------------------- 46

5.2.4 硬件构件化的 CTHCS 硬件系统的实现 --------------------------- 47

5.3 底层构件化的 CTHCS 底层软件的实现 ---------------------------------- 51

5.3.1 CTHCS 中底层构件的实现------------------------------------------ 51

5.3.2 CTHCS 执行流程分析 ----------------------------------------------- 52

5.3.3 CTHCS 中功能程序的实现------------------------------------------ 53

5.4 嵌入式底层软件的测试及体会 -------------------------------------------- 55

5.5 CTHCS 参数查阅与校正的设计与实现------------------------------------ 57

5.6 本章小结 -------------------------------------------------------------------- 58

第六章 总结与展望 ------------------------------------------------------------------ 59

6.1 本文总结 -------------------------------------------------------------------- 59

6.2 研究展望 -------------------------------------------------------------------- 60

参考文献 ------------------------------------------------------------------------------ 61

附录 A CTHCS 布局结构图 ---------------------------------------------------------- 64

附录 B CHTCS 输入/输出信号分析表 ---------------------------------------------- 65

附录 C CHTCS 芯片引脚分配表----------------------------------------------------- 68

附录 D CTHCS 底层构件列表 ------------------------------------------------------- 70

附录 E CTHCS 实物图 --------------------------------------------------------------- 71

攻读学位期间公开发表的论文及参与的鉴定项目 --------------------------------- 72

致 谢 ---------------------------------------------------------------------------------- 73

Page 6: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础
Page 7: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第一章

- 1 -

第一章 绪 论

自从 20 世纪 70 年代单片机出现以来,嵌入式系统已获得了较为深入的研究,

提出了一些嵌入式软件的开发方法,但嵌入式系统仍处于发展阶段,尤其是在嵌入

式硬件系统及其相应底层软件方面。目前,嵌入式系统已经显示出广阔的应用前景,

面向硬件模块的嵌入式系统开发也成为值得关注的研究方向之一。本文在分析嵌入

式系统特点、现有嵌入式软件开发方法的基础上,深入研究面向硬件模块的嵌入式

系统开发的技术本质,借用构件化和面向对象的技术要点,提出基于硬件构件的嵌

入式硬件系统开发方法和基于底层构件的嵌入式底层软件开发方法,并探讨了硬件

构件及底层构件在嵌入式系统中的实际应用。作为本文的引导,本章概述了嵌入式

系统的发展历程,分析嵌入式系统的特点及其开发的困惑,简要阐述本文的课题意

义、研究内容及论文结构。

1.1 课题背景

1.1.1 嵌入式系统及其发展历程

嵌入式系统具有悠久的历史。最初,嵌入式系统主要用于军事、航空航天、工

业控制、通信设备系统等领域,并不为普通人所熟悉。但随着计算机技术、微处理

器技术、电子技术、通信技术、集成电路技术的迅猛发展,嵌入式系统已成为计算

机技术和计算机应用领域的一个重要组成部分,逐渐走进了普通人的生活和工作当

中。

1. 嵌入式系统的定义

嵌入式系统现已深入到人们工作、生活的各个方面,可以说,随着嵌入式技术

的发展,嵌入式系统无处不在。从固定功能或可编程方面来讲,嵌入式系统是结合

计算机硬件和软件的专用性设备[1]。

嵌入式系统又称为嵌入式计算机系统,是指嵌入到对象体系中的专用计算机系

统。对象系统则是指嵌入式系统所嵌入的宿主系统,嵌入性、专用性与计算机系统

是嵌入式系统的三个基本要素[2]。嵌入式系统通常被描述为:以应用为中心,以计

算机技术为基础,软硬件可剪裁,适应于应用系统对功能、可靠性、成本、体积和

功耗有严格要求的专业计算机系统[3]。

Page 8: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第一章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 2 -

2. 嵌入式系统的发展历程

嵌入式系统是在硬件和软件交替发展的支撑下逐渐趋于稳定和成熟的,它有着

悠久的历史。从 20 世纪 70 年代单片机的出现到现在各种嵌入式微处理器、微控制

器的大规模应用,嵌入式系统己经有了 30 多年的发展历史。纵观嵌入式技术的发展,

大致经历了以下几个发展阶段[4]。

(1) 无操作系统阶段:主要是以功能简单的专用计算机或单片机为核心的可编

程控制器形式存在的系统,具有监测、伺服、设备指示等功能,一般没有操作系统

的支持,通过汇编语言编程对系统进行直接控制。主要特点是:系统结构和功能都

相对单一,处理效率较低,存储容量较小,几乎没有用户接口,比较适合于各类专

用领域。

(2) 以嵌入式处理器和嵌入式操作系统为标志的嵌入式系统:主要特点是出现

了高可靠、低功耗的嵌入式处理器,嵌入式操作系统能运行于各种不同类型的微处

理器上,兼容性好;操作系统内核精小、效率高,并且具有高度的模块化和扩展性;

具有大量的应用程序接口,开发应用程序简单,应用软件丰富。

(3) 以芯片技术和 Internet 技术为标志的嵌入式系统:伴随着微电子技术的迅速

发展,片上系统(System On Chip,SOC)使得嵌入系统越来越小,功能却越来越强。

目前多数嵌入式系统还孤立于 Internet 之外,但随着 Internet 的发展以及 Internet 技

术与信息、家电、工业控制技术等结合日益密切,嵌入式技术与 Internet 技术的结

合正推动网络化嵌入式技术的快速发展。

1.1.2 嵌入式系统的构成及其特点

1. 嵌入式系统的构成

嵌入式系统是一个用于控制、监测或协助特定机器和设备正常运转的计算机系

统,是一种典型的软硬件混合系统[5],集软硬件于一体的可独立工作的“器件”,

又称为“固件”。

1) 嵌入式系统的组成

嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件

系统等组成,具有专用性、可嵌入性、实时性、可移植性和分布式等特点。其中,

嵌入式微处理器是嵌入式硬件系统的核心部分,它担负着控制、协调系统工作的重

要任务,通常具有实时多任务处理能力、中断处理能力、存储器保护能力和低功耗

Page 9: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第一章

- 3 -

能力[6];支撑硬件主要包括存储介质、通信部件和显示部件等;支撑硬件的驱动程

序、操作系统、应用软件等一起构成嵌入式软件。

2) 嵌入式软件的概述

嵌入式软件是与嵌入式硬件密不可分的[7]。从广义上讲,嵌入式软件是计算机

软件的一种,也是由程序及其文档组成的,可分成系统软件、支撑软件、应用软件

三类[8]。

嵌入式系统软件一般都具有容量小、效率高等特点,同时为了提高执系统行速

度和可靠性,嵌入式系统软件一般固化在存储芯片上或微控制器内部。嵌入式操作

系统是嵌入式软件的重要组成部分,一般都是实时操作系统(Real Time Operating

System,RTOS),以便有效调度多任务,合理利用系统资源。RTOS 大都嵌入在目

标代码中,用户的应用程序都建立在 RTOS 之上[6]。

2. 嵌入式系统的特点

嵌入式系统是一个软件和硬件的集合体,它将先进的计算机技术、半导体技术、

电子技术与应用软件开发技术相结合,是一个技术密集、资金密集、不断创新的知

识集成系统。与通用计算机系统相比,嵌入式系统在很多方面独具特色,下面介绍

了嵌入式系统的几大特点[5,9-10]。深入研究嵌入式系统的特点,对合理设计嵌入式系

统具有重要的指导意义。

(1) 软硬件紧密结合:嵌入式系统的主要特征之一是软件与硬件的紧密结合,

其底层的组织结构常常因为所选用硬件体系的不同而发生变化。平台差异性是不存

在通用解决方案的主要原因之一,也使得嵌入式系统具有多种专用工具和特殊方法。

(2) 多样性(专用性、定制性):每个嵌入式计算机系统总是跟具体的应用联系在

一起,以应用为中心,为具体的应用服务。因此嵌入式系统是多样化的,需要为满

足不同的应用需求而专门定制,其中既包括硬件系统的多样性,也包括软件系统的

多样性。

(3) 资源有限性:受制造工艺和应用环境的限制,嵌入式系统拥有的资源十分

有限。主要表现在对整个计算机系统的体积、功耗、CPU(Central Processing Unit,

中央处理器)的处理能力、存储器的容量和性能等方面都有较多的限制。

(4) 高实时性:嵌入式系统的计算处理过程往往需要在规定时限内完成,这就

要求系统对外部事件的反应要及时准确。

(5) 低功耗:功耗问题是嵌入式系统设计中普遍关注的热点和难点,特别是对

Page 10: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第一章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 4 -

于电池供电的系统。降低功耗不仅可以延长用电池供电的设备的工作时间,同时也

可以更容易解决系统的散热问题。

(6) 高可靠性:嵌入式系统对可靠性的要求与系统的规模、应用环境和目的有

密切关系。一些实时系统对可靠性的要求极高,如航空航天技术。嵌入式系统的可

靠性涉及到很多方面,如机械设计的可靠性、嵌入式硬件与软件的可靠性等。

1.2 嵌入式系统开发遇到的难点

随着电子技术的发展及制造工艺的提高,嵌入式系统的片内 ROM (Read Only

Memory,只读存储器)容量不断增大,CPU 执行速率不断提高,尤其是嵌入式操作

系统的出现,这使得嵌入式系统在代码实现上发展迅速,现已出现了多种嵌入式编

程语言及其编译环境,如嵌入式 C、C++、Java、Linux 等等。尽管近几年嵌入式系

统发展迅速,但嵌入式系统的特性及其开发方法的不完善,使得嵌入式系统的开发

非常复杂和昂贵,嵌入式开发仍面临着以下重要的问题:

(1) 嵌入式系统分析和设计方面没有统一的标准:分析设计方法不统一、从分

析设计到制作和编程没有一个始终一贯的工程化方法,使得产品形成的每一个过程

受人为因素影响十分严重、分析设计的成果不能被开发类似项目或产品重用。

(2) 嵌入式系统的专用性很强,其软件和硬件的结合非常紧密,软件需要根据

系统硬件的变化和增减不断进行修改。而且嵌入式系统中微处理器(Micro-Controller

Unit,MCU)的系列十分丰富,使得 MCU 的编译环境无法做到完全的通用。

(3) 功耗问题依然是人们在嵌入式系统设计中普遍关注的难点与热点,它也严

重地制约着嵌入式系统的应用与发展。

(4) 由于嵌入式系统多工作于工业企业现场或军用装备,不允许死机和系统重

启发生,一旦出现故障,有可能造成整个生产的混乱,甚至产生严重后果,因此对

可靠性和安全性要求很高。

以上几个方面的问题成为近几年来制约嵌入式系统发展的主要瓶颈,使得大部

分从事嵌入式系统应用开发的组织和团体,基本上是采用小组甚至是作坊式的运作

模式。这使得开发较复杂或大型系统的工作变得十分困难甚至无法进行,或因为系

统需求的不断变化、小组成员的流动导致项目失败。

Page 11: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第一章

- 5 -

1.3 嵌入式系统开发方法的现状及其启示

现有嵌入式开发方法中,结构化方法已经广泛应用于嵌入式系统开发中;面向

对象嵌入式开发方法的理论已经比较成熟,在实际开发中也有应用;而构件化的嵌

入式开发技术目前尚处于起步阶段,相关研究很不成熟,要使其进入实际应用阶段,

还有相当长的路要走(这三种开发方法的详细分析见第二章)。但这些基本上只是局

限于嵌入式软件开发方法的研究,而面向硬件模块的嵌入式系统开发的研究十分稀

少,且没有形成相关的理论方法。

本文从对现有嵌入式软件开发方法的分析中获得启示,通过借用构件化技术和

面向对象方法的思想要点,进行面向嵌入式硬件模块及其底层软件的开发方法的研

究。该方法借用面向对象的可重用和可移植的特点,实现了硬件模块和底层软件在

同一系统或不同系统中的重用与移植,是一种降低系统开发成本、提高开发效率和

产品质量的,非常合理、有效的开发方法。

1.4 本文的课题意义及主要工作

1.4.1 本文的课题意义

现今国内外对于通用软件系统开发方法的研究已有相当成熟的理论,然而嵌入

式系统的开发与普通软件的开发不同,具有自身的特点。在嵌入式系统开发中,传

统方法大多是针对嵌入式软件开发方法的研究,其理论并没有完全成熟,还处于探

索阶段;而面向嵌入式硬件模块、以及与硬件密切相关的嵌入式底层软件开发方法

的研究微乎其微。再者嵌入式系统是一个软硬件紧密结合的系统,所有嵌入式软件

的执行都离不开特定的硬件体系,因此,研究面向硬件模块与底层软件的嵌入式开

发方法对提高嵌入式系统开发效率、增强产品可靠性与稳定性有十分重要的意义。

1.4.2 本文的主要工作

本文在研究嵌入式系统特点的基础上,分析现有嵌入式系统开发方法,结合实

践经验,把以微处理器为核心的、嵌入式 C 为开发语言的系统作为主要研究对象,

提出了基于硬件构件的嵌入式硬件系统开发方法及其原则、基于底层构件的嵌入式

底层软件框架及其开发原则,并将这些方法应用到实际开发过程中。本文的主要工

作内容包括:

(1) 从分析现有嵌入式软件开发方法中获得启示,明确了本文的研究重点――

Page 12: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第一章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 6 -

面向硬件模块及底层软件的嵌入式系统开发方法的研究。

(2) 提出嵌入式系统硬件构件的定义、概念模型和实现方法;分析现有嵌入式

系统硬件电路图的设计方法,结合实际应用经验,归纳总结并提出了基于硬件构件

的嵌入式硬件电路图设计的原则和注意事项。

(3) 对嵌入式软件开发特点进行分析,提出了基于硬件构件的嵌入式底层构件

的定义、概念模型和实现方法;对嵌入式底层软件设计方法进行分析,总结并提出

了基于底层构件的嵌入式底层软件设计的原则和注意事项。

(4) 将本文提出的硬件构件和底层构件开发方法应用到实例中,给出两种构件

化方法的实际应用说明。

(5) 分析并解决实际应用中遇到的软硬件设计方面的问题。

1.5 论文结构

本文第一章介绍了嵌入式系统的定义、发展历程、特点、嵌入式系统开发方法

的现状及其启示。在此基础上,给出了本文设计的核心内容、课题意义及论文结构。

第二章对当前嵌入式软件系统的开发方法做出阐述和分析,吸取当前开发方法

的思想要点,提出面向硬件模块及其底层软件的嵌入式系统开发方法,即硬件构件

和底层构件开发方法。

第三章在分析嵌入式硬件系统特点的基础上,借用构件化技术和面向对象方法

的定义思想、封装方式、可移植、可重用等特点,提出了基于硬件构件的嵌入式硬

件系统开发方法,给出硬件构件的定义和实现过程,并利用硬件构件的思想,提出

嵌入式硬件系统原理图设计和 PCB (Printed Circuit Board,印刷电路板)绘制的原则

及注意事项。

第四章在分析嵌入式软件系统开发特点的前提下,在本文提出的硬件构件设计

思想的基础上,提出了基于硬件构件的嵌入式底层构件的开发方法,给出了嵌入式

底层构件的定义、概念模型和实现过程,以及基于底层构件的嵌入式底层软件设计

的原则和注意事项。

第五章通过一个具体应用实例,详细阐述在系统开发过程中如何使用硬件构件

和底层构件开发方法完成系统的开发。

第六章对全文的内容进行总结,指出本文的工作创新之处,并对本文相关研究

内容的下一步和未来研究工作提出一些意见。

Page 13: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第二章

- 7 -

第二章 嵌入式系统当前开发理论及其启示

嵌入式系统及其产品现已经渗透到人们生活的各个方面,此时,嵌入式软件的

质量和开发效率对嵌入式产品的成功起着决定性的影响。由于嵌入式系统的特殊性,

长期以来嵌入式软件设计和开发使用的是过程化技术,并在专用的硬件和操作系统

之上运行,运行效率、资源利用率以及与硬件的集成是考虑的主要方面,而模块化

和重用性是在第二位的。但随着嵌入式系统的快速发展和嵌入式软件复杂度的增长,

实时系统的构件化越来越受到重视,如何提高嵌入式开发质量和效率以及缩短产品

进入市场时间是亟待解决的问题,为此,很多学者提出了多种嵌入式软件的开发方

法。

2.1 嵌入式软件工程及其开发难点

2.1.1 软件工程与嵌入式软件工程

1. 软件工程

“软件工程”这一概念首次提出于 1968 年的 NATO 会议上[11-12],它的提出使

软件开发开始了从“艺术”、“技巧”和“个体行为”向“工程”和“群体协同工

作”转化的历程[13]。“软件工程”作为一门独立的学科,已有近 40 年的发展历史,

其研究和实践取得了长足的进步。

软件工程是指应用计算机科学理论和技术以及工程管理原则和方法,按照预算

和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或以之为

研究对象的学科[14]。软件工程的目标是提高软件的质量与生产率,最终实现软件的

工业化生产。

2. 嵌入式软件工程

进入 90 年代以来,嵌入式软件产业发展迅猛,已成为软件体系的重要组成部分,

在整个软件产业中的比重日趋提高,随之产生了嵌入式软件工程的概念。

嵌入式软件工程是根据普通软件工程的原理和方法[15],针对嵌入式系统的特殊

性,研究嵌入式软件开发要求的方法和技术,同时将这些工程化方法和技术应用到

嵌入式软件开发中[16]。简单来说,嵌入式软件工程就是软件工程思想在嵌入式软件

系统开发中的应用。与普通软件工程不同,嵌入式软件工程研究的重点是对具有实

Page 14: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第二章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 8 -

时性约束的嵌入式软件系统提供软件设计方法论、工程开发技术以及相应的辅助工

具,它具有实时性、可靠性、并发性、可嵌入性以与软硬件紧密结合等特点。

2.1.2 嵌入式软件开发的难点

随着技术的进步和需求的扩大,嵌入式系统的规模越来越大,嵌入式软件的复

杂度和开发难度也随之不断增加。目前,嵌入式软件开发的难点主要有如下几点:

(1) 嵌入式系统的一个最大特点就是软硬件紧密结合,为此,嵌入式软件(尤其

是嵌入式底层软件)的设计和验证要充分考虑硬件因素。

(2) 嵌入式软件运行在特定的硬件体系和环境中,在进行设计时,不但需要考

虑各个节点间的通信和同步问题,还需要考虑整个系统的时序问题[16]。

(3) 嵌入式产品广泛的应用于工业、军事和航空航天等领域,这使得嵌入式系

统对可靠性、防危性、和容错性等功能有更苛刻的要求,丢失数据在许多情况下是

不可容忍的。

(4) 在实际产品应用中,嵌入式系统大多数是事件驱动的系统,而且外部事件

是多发的和并发的随机事件,即异步事件[16]。嵌入式应用软件系统需要有效地处理

并发事件,所以往往采用多线程(任务)运行机制,以适应这种复杂的并发环境,这

就增加了软件设计的复杂度。

2.2 结构化的软件开发方法分析

2.2.1 结构化方法的概述及其特点

1978 年 L.L.Constantine 和 E.Yourdon 提出了结构化的软件设计方法,经过 30

多年的研究及应用,已成为技术最成熟、应用最广泛的软件开发方法之一。

结构化方法强调过程抽象化和功能模块化[17]。其中,结构是指系统内各个组成

要素之间的相互联系、相互作用的框架。结构化方法的基本思想可以概括为:用系

统工程的思想和工程化的方法,按用户至上的原则,自顶向下、逐步求精地对信息

系统进行分析与设计。采用模块化技术、分而治之的方法,将系统按功能分解为若

干模块,模块内部由顺序、分支、循环基本控制结构组成,应用子程序实现模块化

[18]。

结构化方法是用基于功能分解的观点来分析和解决问题的,即把一个复杂的系

统分解成若干个尽可能独立的子系统、子模块,采用“自顶向下”逐层分析,整个

Page 15: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第二章

- 9 -

过程从一个阶段到另一个阶段,其间有明显的间隔。任何软件系统都可以用数据流

图表示,理论上,结构化方法可以用于任意一种软件系统的开发。使用结构化方法

开发的软件运行效率高,且能够增加软件规格说明的可读性及系统的可靠性,因为

数据流图容易理解,有利于开发人员与客户的交流[19]。

2.2.2 结构化方法的不足

结构化设计方法中,软件系统结构对系统功能的变化十分敏感,功能的变化往

往意味着需要重新设计。结构化方法中过程抽象化和功能模块化的特点使其在设计

过程中有如下不足[18,20]:

1) 与用户交流不直观,难以应对需求变化

结构化分析设计是一种面向过程的方法,形成的系统模型实际上是信息的一种

抽取,这种模型用户难以理解。结构化分析设计对需求变化的适应能力比较弱,当

用户需求信息发生变化或外界条件改变时,设计者无法直观地改变系统,必须映象

为数据流及过程后才有可能实现。

2) 开发过程繁琐,从分析到设计难以实现

结构化分析设计中的数据流程图是分层次展现系统模型的,这样的设计方法难

以详细地了解整个系统;而且结构化方法中设计文档很难与分析文档对应,因为二

者的表示体系不一致,从分析到设计的“转换”不存在可靠的转换规则,而更多地

是带有人为的随意性,容易因理解上的错误而埋下隐患。

3) 开发周期长

结构化分析设计强调弄清楚用户信息需求,事实上很多情况下信息需求是难以

一次性弄清的,特别是比较大型的系统。而且,设计过程中从结构化分析到结构化

程序设计的转换不可靠,设计出的软件难以重用,进而延缓了开发的进度。

2.2.3 结构化的嵌入式软件开发方法分析

针对嵌入式软件分析与设计的特性,许多传统的软件开发方法被引入到嵌入式

软件开发过程中,结构化的嵌入式软件开发方法就是其中之一。目前,结构化的软

件设计方法是嵌入式软件设计领域中理论最成熟、使用最广泛的方法。

结构化程序就是指程序组成结构化、功能模块化、执行流程化[21],要求将特定

任务的代码和数据与程序其余部分相分割,实现分割的方法是将处理特定任务的指

令和数据设计成子程序或中断服务子程序,这些子程序或中断服务子程序称作功能

Page 16: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第二章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 10 -

模块,具有特定功能、可处理特定任务、能解决专门问题。结构化的嵌入式软件设

计流程是:按照系统总体规划和总体设计,由设计人员分别编程设计各功能模块;

接着依据软件结构和程序流程,将功能模块组成结构化程序,实现系统整体功能,

满足系统要求,解决实际问题。

根据实际应用需求的不同,结构化的软件设计方法可分为单任务和多任务两种

类型[22]。单任务模式下,所有外部事件都有相应的事件处理模块,主程序或中断子

程序作为调度模块,在满足一定条件时,调用相应的事件处理模块,如图 2.1-a。单

任务软件设计方法只需要相应语言的运行实时库,不需要 RTOS 支持,具有结构简

单、运行效率高、占用资源少等优点。多任务设计的基本单元是任务,它不但需要

编程语言的运行实时库,还需要 RTOS 的支持,如图 2.2-b。多任务模式下,任务之

间按照优先级进行抢占,任务之间的通信、互斥和同步由 RTOS 的任务通信模块来

完成。

a 单任务的结构化嵌入式设计模型 b 多任务的结构化嵌入式设计模型

图 2.1 结构化的嵌入式软件设计模型

结构化程序具有结构清晰、逻辑性强、易于维护、便于共享、运行稳定、可靠

性高等特点。按照结构化程序设计要求编程,有助于规范软件设计人员的编程工作,

提高软件设计人员的编程效率,提升软件设计人员的编程水平。

2.3 面向对象方法的分析

近几年,面向对象方法无论是在理论上还是实践上都在飞速发展[23],它能够满

足软件开发对于生产效率、可靠性、易维护性、易管理等方面的更高、更快、更强

的需求[19],正引起全世界越来越广泛的关注,它被誉为“研究高技术的好方法”,

大有取代结构化方法的趋势。

主程序循环模块(或中断子程序): while(1) {

DealwithEvent(cond1); ┅

} DealwithEvent (Event_Typ cond1) {

//调用事件处理模块 1 deal with cond1;

}

调度模块

事件处理模块

任务 1 任务 2 任务 n ┅

实时操作系统(RTOS) 编程语言运行实时库

调用编程语言的运行实时库的功能模块

调用 RTOS的任务通信模块 图例:

Page 17: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第二章

- 11 -

2.3.1 面向对象方法的简介

面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等

概念来构造系统的软件开发方法[19]。面向对象技术中最重要的就是对象(Object)的概

念。

对象作为面向对象方法学的基本要素,是封装了数据结构及可以施加在这些数

据结构上的操作的封装体,这个封装体可以唯一的标识其名字,而且向外界提供了

一组服务(即公共操作),对象中的数据表示对象状态,一个对象的状态只能由该对

象的操作来改变[24]。

对象的形式化表示为:对象=< ID, MS, DS, MI >

其中,ID 是对象的表示或名称;MS 是对象中操作的集合;DS 是对象的数据

结构;MI 是对象受理的消息名集合,即对外接口集合。

面向对象的基本思想[25]就是:程序被看作是相互协作的对象集合,每个对象都

是某个类的实例,所有的类构成一个通过继承关系相联系的层次结构。程序一般由

类的定义和类的使用组成,它以对象为中心,以消息为驱动。面向对象的建模,就

是把系统看作是相互协作的对象,这些对象是结构和行为的封装,都属于某个类。

系统的所有功能通过对象之间相互发送消息来获得。

2.3.2 面向对象方法的特点

面向对象的方法克服了原有软件系统规模庞大、研制周期长、维护费用高、软

件系统过于复杂、应用软件不易集成等困难。该方法具有以下特点[25-26]:

1) 维护简单

模块化是面向对象编程中的一个特征。实体被表示为类和同一名字空间中具有

相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其它成

员。

2) 可重用、可扩展

系统的各个功能被封装在类中,并且类是作为一个独立实体而存在的。功能相

同的模块,只要调用相应的类即可。类具有扩充性,只要扩充一个类,就可以扩充

系统的相应功能。

2.3.3 面向对象的嵌入式系统开发方法分析

结构化的嵌入式软件开发方法在信息封装和隐藏方面存在很大缺陷,对于复杂

Page 18: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第二章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 12 -

度高、规模大的嵌入式系统来说,难以满足在扩展性、维护性等方面的要求。目前,

面向对象技术在嵌入式系统中的应用虽然有限,但是已经得到了充分的发展。

面向对象的嵌入式开发方法主要解决

嵌入式系统基本特性的实现机制问题,特

别是实时性的实现机制[25]。根据对象并

行、异步的特性,可分为主动对象和被动

对象,主动对象之间可以并行执行、可以

抢占执行;而被动对象则是一般的对象,

如图 2.2[22]所示。面向对象嵌入式技术的

总体设计思想是所有操作由对象和消息来

驱动(或者事件驱动)。通过对现有面向对

象技术的分析,对多种嵌入式应用系统的

开发技术要求进行总结,抽象出各种接口和组件类。各个组件、接口、数据都被设

计成为对象,对象之间通过消息通信形成整体、构成系统。在分析和设计的过程中,

采用面向对象的设计模型进行分析设计,形成一个层次清楚、移植性好、易于扩展

和重定义的系统结构。

嵌入式系统大都采取分层结构设计,并允许根据需要对不同的层次进行重写和

替换。抽象接口是在抽象层定义的,不依赖于任何特殊硬件。所有顶层的操作和输

入处理都建立在抽象接口之上。这种分层结构实际上就是一种面向对象的程序结构,

其目的是将底层实际的不同驱动抽象成对上层的统一接口。进程管理、线程管理、

内存管理、设备管理等也可以抽象成为统一的接口,方便嵌入式系统的开发。

2.4 构件化技术分析

面向对象的嵌入式软件开发大大提高了对大而复杂的软件系统的适用性,并且

通过其继承、多态、重载等功能提高了软件的重用性,但是这种重用性主要是在源

代码级别。要达到使软件像硬件一样在生产线上生产出来,应该强调被重用的软件

单元其内部的实现对使用者不可见,也就是说使用者完全感觉不到重用体内部的变

化[22]。为此,在面向对象的基础上,提出来构件的概念。

图 2.2 面向对象嵌入式实时软件设计模型

RTOS 对象

实时操作系统(RTOS)

主动对象

主动对象

被动对象

被动对象

调用 RTOS 的对象方法完成主动对象之间的同步、互斥等操作

调用被动对象的方法

图例:

Page 19: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第二章

- 13 -

2.4.1 构件及其发展

构件化开发技术是在面向对象的基础上发展起来的,但它却摆脱了面向对象理

论的束缚。与面向对象技术不同,构件化技术是一种更高层次的对象技术[27]:它是

独立于语言和面向应用程序的,它只规定构件的外在表现形式,而不关心其内部实

现方法;它既可用面向对象编程语言实现,也可用非面向对象的过程语言实现。只

要遵循构件技术的规范,设计人员就可以使用方便的语言实现可重用的构件,系统

开发人员就可以在开发过程中挑选构件、组合新的应用软件,而不需要从头作起。

早在 1968 年的软件工程会议上,McIlroy 就借鉴传统行业基于标准零部件来生

产产品的模式,提出了采用软件重用、软件构件、软件工厂等思想来开发软件[28],

但他并没有对构件给出明确的定义。构件技术目前并没有统一的规范和定义,本文

结合不同的应用领域和角度的需求,给出构件的定义:

构件是一个可重用的实体,它包含了合乎规范的接口和功能实现体,能够被独

立部署和被第三方组装[29-30],可以是设计、代码或系统开发过程中的其他产品。构

件是一个不透明的功能实体,可以单独生产、获取和部署[31],它们之间可以通过接

口互相作用构成一个功能系统。

2.4.2 构件化的软件开发方法

构件化的软件开发方法是将一完整系统看作是若干独立部分(构件)的联结的软

件开发方法[32],它将每个功能模块做成一个可重用单元,通过替换和重配置来完成

软件的设计。采用构件化的软件开发方法有高开发率、低开发成本、高可用性等特

性。使用己存在的构件来开发新系统,在开发一个新的功能模块的时候,要充分考

虑它为其他系统使用的重用性。虽然这个想法非常简单,但是它的实现却非常困难

[32-33]。

构件本质上是把对象对外的接口声明与对象内部的接口实现相隔离,一个构件

在修改自己的接口时,只影响与修改接口相交互的构件,与被修改构件相交互的其

他构件不受影响,因此它重用性和可扩展性更高。

2.4.3 构件化的嵌入式软件开发方法

构件以其清晰的功能和良好的接口,日益成为提高嵌入式软件开发效率和改善

嵌入式软件开发质量的一种重要手段。设计者可以将其直接集成到自己的嵌入式应

用中,而不需要从头开发。

Page 20: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第二章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 14 -

考虑到嵌入式系统具有资源(CPU、存储器等)有限性,专用性强(很多硬件设备

根据应用定制),要求实时处理的基本特点,嵌入式构件被定义为:被标准化的、具

有重用性、支持 Qos (Quality of Service,服

务质量)的、能够提供实时应用的软(或硬)件

资源[34]。而嵌入式软件构件定义为:实现一

定嵌入式系统功能的一组封装的、规范的、

可重用的、具有嵌入特性的软件单元,是组

织嵌入系统的功能单位[35]。通过分析得到嵌

入式软件的构件化开发流程,如图 2.3 所示。

2.5 三种开发方法的比较分析

自从结构化的、面向对象的、构件化的软件开发出现以来,它们的优劣一直是

人们争论的焦点。下面,从多个角度给出三种开发方法的特点分析[20],设计者可以

根据具体的系统需求选择合适的开发方法。

(1) 执行效率:结构化方法比面向对象、构件化方法的执行效率要高,因为它

可以产生更直接、效率更高的代码,所以对于一些嵌入式的系统,结构化方法产生

的系统更小、运行效率更高。

(2) 可重用性:结构化设计方法中各功能通过接口与外界交互,当接口发生变

化时往往造成系统结构较大变动,难以扩充新的功能接口,因此结构化的设计方法

复用性差;面向对象和构件化设计方法分别通过调用对象和构件来设计系统,遇到

类似的问题时,只需要根据要求修改对象或构件即可,因此这两种方法具有很好的

可重用性。

(3) 理论基础和知识难度:经过多年的发展,结构化的软件开发方法不论在理

论上还是在实际应用中,都得到了充分的发展,理论知识十分丰富;而面向对象技

术和构件化技术近几年也发展迅速,但是仍有很大的发展空间。

(4) 应用的范围:结构化方法适用于数据少而操作多的问题,实践证明对于以

功能为主的系统,结构化方法比较适用;面向对象方法正好相反,对于数据库、信

息管理等以数据为主的系统,用面向对象方法描述要好于结构化方法。详细情况参

见表 2.1。

图 2.3 嵌入式软件的构件化开发流程图

从库中选择可直接使用的构件

重组库中类似的构件

设计不可获得的构件

组合并测试构件

生产最终软件

Page 21: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第二章

- 15 -

表 2.1 三种开发方法的性能对比

项目 结构化技术 面向对象 基于构件

基本思想 自顶向下设计过程类 自底向上设计库类 自底向上设计构件库

概念/术语 过程、函数、数据等 对象、消息、类、继承等 构件

处理问题

的出发点 面向过程 面向问题域 面向构件

程序控制方式 通过设计调用/返回

程序

通过事件驱动开激活、运

行程序

根据选用的设计语言

而定

可扩展性 功能变化会危机整个

系统,扩展性较差

只需要修改或增加操作,

基本结构不变,扩展性好

只需要修改构件,基本

结构不变,扩展性好

重用性 不好 好 好

运行效率 相对高 相对低 相对低

理论基础 相对成熟 相对不成熟 不成熟

适应范围 简单的嵌入式系统 复杂度高、规模大的嵌入

式软件系统

复杂度高、规模大的嵌

入式软件系统

2.6 现有嵌入式开发方法的启示

通过前面的分析可以看出,现有的嵌入式开发方法多集中在嵌入式软件开发方

面,尤其是基于嵌入式操作系统的嵌入式应用软件开发。而嵌入式系统开发区别与

普通软件开发的最大之处就是:嵌入式系统是软硬件紧密结合的系统,所有的嵌入

式软件(嵌入式应用程序和嵌入式操作系统)都必须运行在特定的硬件体系上。因此,

有必要对面向硬件模块的嵌入式系统开发方法进行系统研究,即嵌入式硬件构件的

开发方法和基于硬件的底层软件的开发方法,以提高硬件系统的开发效率、可靠性

及重用性,便于系统维护。

本文分析了面向对象开发方法和构件化技术的特点,借鉴构件化技术的定义特

点及面向对象技术中的封装、重用性、移植性等特点,提出了嵌入式硬件系统的开

发方法——硬件构件技术、以及与硬件紧密相关的嵌入式底层软件的开发方法——

底层构件技术,这两种技术的具体定义和实现方法在第三、四章给出详细介绍。硬

件构件和底层构件技术的思想来源主要有:

(1) 构件化技术独立于语言和应用程序,它只规定构件的外在表现形式,而不

关心其内部实现方法,应用范围广。

(2) 构件是一个可重用的实体,能够被独立部署和被第三方组装。

(3) 面向对象方法的封装方法、消息传送方式。

(4) 面向对象方法中对象的高重用性、高移植性、易于扩展等特性。

Page 22: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第二章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 16 -

2.7 本章小结

随着嵌入式系统规模的扩大,嵌入式软件开发变成一项极具挑战性、较复杂的

任务。目前工业界对嵌入式系统开发方法的研究主要停留在嵌入式应用软件层面,

而对于硬件模块及其底层软件的研究十分少。本章通过现有嵌入式软件开发方法的

启示,指出研究面向硬件模块的嵌入式系统开发方法的必要性,其主要工作总结如

下:

(1) 分析、总结现今嵌入式软件开发的难点。

(2) 阐述结构化、面向对象和构件化的嵌入式软件开发方法的思想,并分析比

较它们的特点。

(3) 由于嵌入式系统具有软硬件紧密结合的特点,从三种嵌入式软件开发方法

的分析中获得启示,借用它们的定义特点、封装形式、重用性及移植性等特点,提

出研究面向硬件模块的嵌入式系统开发方法的必要性,并给出该方法的借鉴思想。

Page 23: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第三章

- 17 -

第三章 基于硬件构件的嵌入式硬件系统开发

嵌入式硬件系统是嵌入式产品不可分割的重要组成部分,是整个嵌入式系统的

构建基础,嵌入式应用程序和操作系统都运行在特定的硬件体系上。研究嵌入式硬

件模块的构件化不仅能缩短设计时间、节省资源,还可以增加最终硬件体系的可靠

性。本章借用面向对象技术和构件化技术的思想,提出面向嵌入式硬件模块的构件

化技术——硬件构件技术,并给出了硬件构件化的嵌入式硬件系统开发原则。

3.1 嵌入式硬件的最小系统

嵌入式硬件系统的核心器件是微处理器,微处理器主要包括微控制器(MCU)、

微处理器(Micro-Processor Unit,MPU)和数字信号处理器(Digital Signal Processing,

DSP)。系统中单独一个微处理器是无法工作的,它必须与其他相应的外围电路一起

构成一个最小系统,才能正常工作。微处理器的最小系统是指可使微处理器内部程

序正常运行所必需的外围电路[36]。微处理器的最小系统主要包括系统电源与滤波电

路、PLL(Phase Locked Loop,锁相环)电路、复位电路、晶振电路、调试写入接口等。

1) 电源与滤波电路

电源电路为芯片及其内部功能模块提供工作电源。电源电路中的滤波电路,可

以改善系统的电磁兼容性,有效降低电源波动对系统的影响,增强电路工作稳定性。

另外,为标识系统是否正常上电,可以增加电源指示灯。

2) PLL 电路

片内的 PLL 电路兼有频率放大和信号提纯的功能,因此系统可以使用较低的外

部时钟信号获得较高的工作频率,以降低因高速开关时钟所造成的高频噪声。

3) 晶振电路

晶体振荡器分为无源晶振和有源晶振两种类型。有源晶振需要外接电源,对于

有源晶振而言,接上电源 Vcc 与地 GND,可以使用示波器在 OUT 输出端测量到振

荡信号。无源晶振是有两个引脚的无极性元件,需要借助于时钟电路才能产生振荡

信号,无法自身起振。

4) 复位电路

系统复位的作用是错误恢复,即当微控制器检测到内部故障时,尝试回到一个

Page 24: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第三章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 18 -

已知的、明确的状态而从故障中回复。系统复位包括内部复位和外部复位。复位电

路是一种外部复位方式,通常芯片配备一个标记为 RESET 的低电平有效的复位引

脚,当该引脚电压为低电平时,触发复位。注意:如果复位引脚被一直拉低,则芯

片将不能正常工作。

3.2 硬件构件开发技术分析

3.2.1 硬件构件的定义及分类

1. 硬件构件的定义

硬件构件(Hardware Component,HwC)是将一个硬件功能模块、支撑电路及其

功能描述封装成可重用的硬件实体,并提供一系列规范的输入/输出接口(对外接线

引脚),能够被独立部署和被第三方组装。

硬件构件的模型结构参见图 3.1,从图中可以看出,硬件构件可以分为功能模块,

接口描述和模块描述三个部分。其中,接口是硬件构件与其他构件交互的唯一通道;

模块描述用于描述整个硬件构件的相关信息,

包括硬件构件功能描述、接口接线描述和注意

事项等;功能模块用于实现本构件的具体逻辑

功能,对外界而言功能模块是一个不可见的黑

盒,与接口之间具有“接线/驱动”的关系。

2. 硬件构件的分类

一个硬件构件代表硬件系统中的一个功能模块,根据硬件构件存在形式的不同,

可分为内部硬件构件和外部硬件构件。内部硬件构件内嵌在微控制器中,不需要添

加额外的功能芯片,只需要相关的支撑电路即可实现其功能;外部硬件构件则是由

设计者自己设计完成的、位于微控制器外的外部功能模块,它同时需要集成功能芯

片及其支撑电路。嵌入式硬件系统的部分内部和外部硬件构件参见表 3.1。

表 3.1 嵌入式硬件系统部分硬件构件

内部构件 功能 外部构件 功能

SCI构件 片内串行通信接口模块 外部AD构件 外部模拟量采集模块

SPI构件 片内串行外设接口模块 DA构件 外部模拟量输出模块

I2C构件 IC器件间通信模块 时钟构件 外部时钟模块(可用电池供电)

Timer构件 定时器接口模块 RS232构件 RS232串行通信模块

图 3.1 硬件构件模型结构

硬件

功能 模块

模块

描述

接口

接线/

驱动

接线/

驱动

描述

外部

Page 25: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第三章

- 19 -

PWM构件 脉宽调制输出模块 RS485构件 RS485通信模块

KeyBoard构件 键盘中断模块 LCD构件 液晶实现模块

Flash构件 片内Flash存储器模块 LED构件 数码管显示模块

内部AD构件 片内模拟量采集模块 外部USB构件 外部USB通信接口模块

„ „

3.2.2 硬件构件的设计实现

基于硬件构件的嵌入式硬件系统设计方法可分为构件实现过程(硬件构件开发)

和应用构件过程(使用硬件构件设计嵌入式硬件系统)两个独立的子过程,两个子过

程通过硬件构件库联系起来。

1. 硬件构件实现过程

硬件构件实现过程的灵感来源于构

件化的软件开发技术,它是嵌入式系统

硬件设计的基础。其主体设计思想是:

在嵌入式系统开发过程中,先将具体的

功能模块按照硬件构件的模型设计成相

应的硬件构件,其硬件构件的概念模型

见图 3.2(对应图 3.1 的硬件构件模型结

构);再将这些封装好的硬件构件添加到硬件构件库中。

接口是硬件构件与外部的通信渠道,是连接两个硬件构件的桥梁,它包括信号

输入接口和信号输出接口。接口由接口标识和接口对应实体组成,接口对应实体就

是接口对应的硬件构件,来源于构件库;而接口标识是每一个接口的标号,具有唯

一性。反映到具体的嵌入式硬件系统设计中,接口对应实体就是各个功能模块,而

接口标识就是功能模块的输入/输出接口的网标。当具体使用硬件构件时,设计者只

要通过阅读硬件构件的模块描述,了解构件的功能,再根据实际需要修改接口,即

可实现硬件构件的应用。

硬件构件的实现过程是为嵌入式硬件系统设计提供具有重用性的硬件功能模块

的过程,是一种系统的生产硬件模块的过程,是一种开发嵌入式硬件系统的新方法,

如图 3.3 给出硬件构件实现过程的示意图。硬件构件的实现过程与传统嵌入式硬件

系统开发过程在本质上是相同的,其最大区别在于这个设计过程强调硬件构件的重

用性。因为,在实际嵌入式系统开发过程中,存在大量重复使用的功能模块,所以

图 3.2 硬件构件概念模型描述

HwC={功能模块,接口描述,模块描述}

功能模块={各种具体硬件功能的实现过程}

接口描述={接口标识,接口对应实体}

接口标识=网标

接口实体=对应具体的硬件功能模块

模块描述={模块功能描述,对外接口描述,

硬件接线描述,注意事项等}

Page 26: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第三章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 20 -

将这些模块设计成容易理解的、具有足够通用性、能够方便修改、发布和替换的硬

件构件,能够大大简化嵌入式系统的硬件开发,减少开发过程中消耗。

图 3.3 硬件构件的实现过程

2. 应用硬件构件

应用硬件构件就是开发具体的嵌

入式硬件系统,即在具体设计时,从

硬件构件库中调用符合要求的构件,

将选择的构件按接口方法连接好,构

成一个具体的嵌入式系统硬件体系。

如图 3.4 所示,一个实际应用系统中

电源构件和核心构件是必不可少的,

电源构件为系统中所有构件提供工作电源;核心构件是嵌入式硬件系统的核心,它

不仅包含内部硬件构件,还用于控制系统内其他构件的执行、与 PC 或其他设备的

交互等。

3.2.3 硬件构件的特点分析

在硬件功能模块的重用性方面,现今并没有系统的嵌入式硬件系统开发方法,

只是在完成单纯的系统功能分析后,直接进行系统功能设计。而本文提出的硬件构

件技术将硬件模块分为功能模块和接口部分,设计时将硬件构件的功能模块隐藏在

构件内部(即硬件实体中),利用接口与其他构件进行交互。这样做可以实现对硬件

功能模块的重用。

硬件构件技术是一种灵活的、高重用性的嵌入式硬件系统设计方法。首先,将

硬件功能模块封装成硬件构件,使硬件模块具有重用性,降低系统设计消耗;其次,

3.4 应用硬件构件的过程

构件模型

构件模型

构件模型

硬件 构件库

硬件构件1

硬件构件2

硬件构件n

可重用 硬件构件

硬件 系统

功能描述、接口

功能模块、支撑电路

功能模块 功能模块

电源

接口

电源构件

核心构件

接口

通信构件

PC 机、

其他设备

接口

接口

接口

其他功能构件

接口

Page 27: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第三章

- 21 -

通过为硬件构件添加接口,使得硬件构件实体对外部的依赖全部体现在接口上,实

体内部完全没有外部信息,能更好的保持构件的黑盒特性,提高硬件构件的重用性;

再者,将构件间的交互全部体现在接口上,大大增强了硬件系统的可维护性;最后,

使用硬件构件技术,可大大方便底层软件(即驱动程序)的编写,进一步提高底层软

件的可移植性。使用硬件构件技术可以使嵌入式硬件系统为了适应多种多样的应用,

而使改动更少、更集中、更明确。

3.3 基于硬件构件的嵌入式系统硬件电路原理图设计

电路原理图是电子产品的核心和灵魂,用于表达电子硬件体系的组成和工作原

理,是印制 PCB 的基础,是电子/电气工程技术人员进行技术交流的最基本形式[37]。

在整个电子产品的电学设计阶段(包括产品的功能设计、逻辑设计、参数选择、可行

性分析等),都需要反复地绘制和修改电路图。

嵌入式系统在完成硬件系统功能分析和原理设计后,就要进行硬件电路原理图

设计。在电路原理图设计时,要充分利用硬件构件技术对硬件功能模块进行设计和

应用,对设计方法进行规范。

3.3.1 硬件构件化电路原理图设计基本原则

要设计一个电路原理图,首先要设置图纸的大小、外形,对电路图总体进行规

划,然后在图纸上放置元器件,进行布局布线,接着对整个版面进行编辑和调整,

最后进行保存、导出网标。在进行原理图设计时,应遵循硬件构件的设计原则,尽

可能做到模块化、规范化,以增强可重用性、可读性,便于技术交流。电路原理图

的可重用性和可读性越强,越不容易出错,技术交流越方便,为此在设计过程中要

遵循以下原则。

1) 元件命名的原则

从本质上讲,在一个电路原理图上有两类对象:元件和网标(net),网标表明元

件之间的连接关系。元件有元件名和元件类型两部分,如一个 AD 转换芯片有元件

名U2和元件类型 TLC2543两部分组成(注意:在电路原理图中元件的元件类型可省,

但元件名不能省略、不可重名)。元件类型多种多样,对同种类型的元件命名时常用

的做法是冠以同一前缀。例如,电阻的前缀为 R,电容的前缀为 C,电感的前缀为

L,二极管的前缀为 D,晶体管为 Q,晶体为 X 而连接器和跳线器为 J。半导体的前

Page 28: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第三章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 22 -

缀通常为 U,但也常用元件名来直接命名。

2) 硬件构件的具体设计方法

嵌入式系统的硬件设计通常是以 MCU 或 DSP 为核心,辅加相关功能模块,因

此在绘制硬件原理图时,要以功能模块为对象对各个元件进行划分、设计、描述、

封装成硬件构件,然后进行应用。经过大量的资料分析和实验总结,硬件构件通常

有:核心构件(MCU 或 DSP 的最小系统),电源构件,通信构件如 RS232、RS485、

I2C (Inter-Integrated Circuit,集成电路之间总线)、CAN(Controller Area Network,控

制器局域网)等,AD(Analog/Digital conversion,模/数转换)转换构件,LED(Light-

Emitting diode,发光二极管)构件,LCD(Liquid Crystal Display,液晶显示器)显示构

件等。

电路原理中硬件构件的具体实现过程是:首先,将与特定功能相关的元件及其

支撑电路(如功能芯片、电容、电阻等)组织在一起,根据设计进行连线;其次,添

加详细的文字注释或说明,包括功能说明、硬件接线说明、注意事项等,以增强原

理图的可读性;再者,将这些信息封装在一个虚线框内,形成硬件构件的内部实体;

然后,为该构件的添加上与外部交互的输入/输出接口,接口包括接口标识(网标)和

接口描述信息。如图 3.5 给出了恒温恒湿控制器系统中核心构件和时钟构件两部分

的电路原理图,从该图中可以看出构件的具体实现组成。

图 3.5 恒温恒湿控制系统部分电路图说明

3) 硬件构件接口标识(网标)的命名原则

硬件构件设计实现并应用到硬件电路原理图后,接着要实现硬件构件之间的交

互,也就是要完善它们的接口,而接口的最重要信息就是接口标识(网标)。接口网

核心构件

接口

一级构件

构件说明

接口

二级构件

电路图说明

构件功能实现

时钟构件

Page 29: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第三章

- 23 -

标的命名规则是:定义核心构件为一级构件,与核心构件直接交互的为二级构件,

依次类推;命名时,一级构件(即核心构件)的接口标识按其引脚功能进行命名,N

级构件的接口标识按照 N-1 级构件的功能逐级向下进行命名;硬件构件内部的网标

按照功能含义进行命名。

图 3.5 中核心构件是整个系统的一级构件,与其直接进行交互的构件为二级构

件,如图中的时钟构件。根据硬件构件接口标识的命名原则,核心构件的接口标识

按其引脚定义直接命名,如图中的 PTA0~PTA7、PTB0~PTB7 等;时钟构件的接

口标识按上级构件(即核心构件)的引脚定义命名为 PTB4、PTB5,而其内部按照模

块实际功能命名为 SCL、SDA,即实现时钟构件的接口 SCL、SDA 分别与核心构件

的 PTB4、PTB5 引脚相连接。按此规则命名后,当时钟构件移植到其他系统中或改

变接口引脚连接时,只需要修改接口标识即可,而不需要对整个功能模块进行修改。

4) 输入/输出接口绘制原则

由于每个硬件构件对外交互的接口有输入/输出之分,在绘制接口时,尽量将输

入/输出接口分别画在硬件构件实体两边,即左边输入接口、右边输出接口。这样设

计看似没有什么实际意义,但是在查看原理图时,会十分方便、可节省大量时间。

5) 电路图说明信息

原理图设计完成之后,整个硬件系统可能有多张原理图组成,每张原理图均可

视作一个硬件构件,应给出硬件原理图的简要说明,例如,系统的供电电压、主控

芯片的写入方式、通信方式、功能模块的接线方式等。同时,整个电路原理图也是

一个大的硬件构件,需要给出整个硬

件设计工程的设计说明,包括电路图

的名称、设计日期、编号、设计者等

等,参见图 3.6。这样设计便于使用者

和参考者查阅,使读者能够从图纸的

设计说明上了解设计者及其电路的基

本情况。

3.3.2 绘制电路原理图的注意事项

绘制原理图简单讲就是将一个个元器件按一定的逻辑关系连接起来,即利用绘

图工具中的画线、总线、网标等工具,将电路中具有电气意义的导线、符号和标示

图 3.6 电路图说明信息

电路英文名称: Constant Temperature and Humidity

Controller System

电路中文简称: 恒温恒湿控制器系统

版本: 1.0 第 1 页 共 2 页

日期: 2007.12.10 编号: No20071210

设计者: JHM

审核: WYH 单位: SD

Page 30: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第三章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 24 -

根据设计要求连接起来,构成一个完整的原理图。在具体的实施过程中要注意以下

几点:

1) 图纸模板化设计

电路原理图设计前,先将图纸设置为 A4、底色设置为白色、字体使用五号或小

五号,以便于打印、阅读、携带。再将电路说明信息(如图 3.6)添加到空白图纸上,

做成模板,在设计过程中修改名称直接添加到工程中使用即可。

2) 规范化元器件引脚之间的电气连接线

实际绘图过程中,常常发生依据电路原理图绘制 PCB 时,PCB 与电路原理图

不相符,PCB 有一些元器件或引脚没有连接上,而电路原理图上却是连接正常的。

这种情况的发生,问题还是出在电路原理图上,画图不符合规范,导致电气连接线

未连接上。不规范的连线有:连线超过元器件的端点,连线的两部分有重复等[37]。

解决方法是在画原理图连线时,应尽量做到:元器件放置在网格线上,在元件端点

处连线,元器件连线尽量一线连通,减少直接将其端点对接上的做法等。

3) 在原理图中添加测试点和运行指示灯

为了方便 PCB 的电路模拟仿真测试或硬件体系的初始调试,设计时应有意识的

添加测试点和运行指示灯,例如不同类型的电源端、重要的输入/输出端、时钟信号

发生端、空闲引脚等。这些做法对后期硬件的测试尤为重要。

4) 反复进行 ERC 操作,彻底消除错误和警告

使用 ERC (Electric Rule Check,电气规则检查)检查电路图的电气规则,可以有

效的消除电路设计的错误和不当之处,如元器件重名、网标重名、元器件引脚浮动、

总线符合是否有误、多张图纸命名是否重复等。对于一些警告提示,虽然大部分不

会直接影响后期的 PCB 设计,但还是要设法消除这些警告。这样做,对于电路设计

的规范化和提供电路设计能力很有好处。

5) 生成元件清单和网络表

元件清单可方便元件选购、产品安装和维护。网络表包含各个元件的名称编号、

元件封装和参数注释,连接各个元件引脚的所有电气网络列表等。网络表用于后面

的 PCB 绘制,是设计 PCB 的基本依据。

Page 31: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第三章

- 25 -

3.4 硬件构件化的 PCB 设计及印制原则

硬件原理图设计完成后,接下来要进行 PCB 的设计。印制电路板 PCB 为集成

电路等电子元器件提供固定、装配的机械支撑,为实现元器件之间的布线和电气连

接或电绝缘提供所要求的电器特性。绘制 PCB 可利用绘图工具(如 Protel DXP)提供

的包括自动布线、各种设计规则的确定、叠层的设计、布线方法的设计、信号完整

性设计等强大的布线功能,完成复杂的 PCB 设计,达到系统的准确性、功能性可靠

性设计;也可以由设计者手工完成。但是,不管是自动布线还是手工布线,在执行

布线前,都应对元件进行一定的布局,也要对走线进行分类、以确定走线的宽度,

同时还应给出一定电磁兼容性(Electromagnetic Compatibility,EMC)设计等。

3.4.1 基于硬件构件的 PCB 设计基本原则

1. 以硬件构件为单元的元件布局原则

元件布局是绘制 PCB 的第一步,正确的元件布局不但可以增加 PCB 的视觉美

感,还可以提高产品的电磁兼容[38]。如果元件分布很散,则元件之间的走线可能会

很长,印制线条长,阻抗增加,抗噪声能力下降,成本也会增加;而元件过于集中

布放,则散热性不好,且邻近线条易受耦合、串扰。因此,必须根据硬件构件对电

路元件进行布局,布局时以硬件构件为单元,把硬件构件内部的组成元器件放置在

一起构成一个整体单元,硬件构件之间根据安装位置、电气关系、电磁兼容等特性

进行布局调整。同时还应考虑到机械接口、EMC、散热、敏感和非敏感器件、复位

电路、时钟系统等因素。

对于 PCB 图上的元件放置采用以相同方向放置为主,为优化走线而适当旋转为

辅的放置规则。以相同方向放置为主的方式简化了电路板上元件的装配,十分适合

批量的生产装配;为优化走线而适当旋转为辅的放置原则大大简化芯片之间的走线

布线,减小电路板尺寸,过孔数目,走线的长度。但无论采用哪种方式,滤波电容

应尽可能的放置在相应的 IC 器件附近;一组相关的元件(即硬件构件所包含的元件)

要放置在一起。例如,电压稳压器及其支持元件放在电源连接器附近;而模拟电路

都应该尽肯能放得离电源连接器远一些。

2. PCB走线规则

PCB 板上的元件布局、分层等基本框架定好后,就可以通过走线将元件按一定

Page 32: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第三章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 26 -

的逻辑关系连接起来了。走线是绘制 PCB 的最基本工作,可以说前面的准备工作都

是为它而做的,走线的好坏将直接影响到整个系统的性能。

1) 走线宽度和角度的选择

PCB 板上的走线宽度是可变的,走线越宽,它所

能负载的电流就越大;走线越窄,给定的 PCB 板空间

内就能容纳更多的走线,从而在 PCB 上布线就容易得

多。走线的宽度用 mil(千分之一寸)或 mm(毫米)来表

示(100mil=2.54mm)。表 3.2 给出了走线宽度和负载电

流的对应关系,设计者可以根据线上电流的大小选定

合适的线宽。通常,普通信号线的宽度为 0.2mm~

0.3mm,电源线的宽度为 1.2mm~2.5mm。

此外,在走线时要避免 90°折线,以减少高频噪声发射电容、减小 IC 对电源

的影响,通常以 45°改变走线方向。注意高频电容的布线,连线应靠近电源端并尽

量粗短,否则,等于增大了电容的等效串联电阻,会影响滤波效果。

2) 走线分类及其设计规则

PCB 板上的信号线种类不一,布线时必须对所有信号进行分类,信号线通常分

为时钟信号线、高速信号线、总线(如数据总线、地址总线)和电源线等。走线时应

先布时钟信号线、敏感信号线,再布高速信号线,在确保此类信号线的过孔足够小、

分布参数特性定好的前提下,最后才步一般的信号线。

(1) 时钟和高速信号线先设计,以确保采取了尽可能短的直线。同时,晶振与

MCU 的引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。尤其注

意的是,信号线绝不应该在晶体、晶振或任何时钟产生电路之下或周围走线。

(2) 高速信号线宜采用多层板布线,这样能充分利用中间层的屏蔽作用,更好

的接地;走线之间预留尽可能多的空间,因为两个高速转变的信号线紧密靠在一起

会导致串扰,从而引起不可靠的操作。

(3) 总线走线时,应尽可能的保持信号线平行走线,其原因是总线信号是一起

改变的,而其信号状态会一直保持到下一事务。而时钟信号来说不适合使用平行走

线,因为这可能在相邻的走线里引起串扰,但对总线是合适的。

表 3.2 走线宽度和电流关系表

mil mm 电流(A)

8 0.2 0.5

12 0.3 0.75

20 0.5 1.25

50 1.25 2.5

100 2.5 4

200 5.0 7

325 8.12 10

Page 33: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第三章

- 27 -

3. PCB焊盘和过孔问题分析

焊盘用来放置元件的引脚,其形状可以是圆形、方形或椭圆形,其大小与所对

应元器件的形状、大小、振动和受热情况、受力方向等因素密切相关。焊盘分为直

插式焊盘和贴片式焊盘。直插式焊盘包含一个引脚孔和一个铜层外围,如一个 DIP

(Dual ln- line Package,双列直插式封装)封装的焊盘。DIP 元件容易安装,调试期间

也便于移除。而与 DIP 封装的元件相比,贴片元件不易受电磁干扰的影响。因此

DIP 封装的元件在早期的开发期间更有优势,而在批量生产时选择贴片元件更合适。

过孔用于将不同层上的走线连接起来,它实际上就是一些小的焊盘。使尽可能

小的过孔有助于 PCB 布线,但要切记确保过孔的外径大于内孔径。如果空间允许建

议保持过孔的内孔径为 0.4mm,这样的话,如果 PCB 的布线里有 bug 或制作失败时,

可以经由过孔来跳线进行补救。

3.4.2 设计 PCB 的技巧与注意事项

1) 装入网标时元件不能正确导入

印制 PCB 网标装入时元器件不能正确导入,其原因可能是:原理图中未定义元

件的封装、元件封装的名称不存在、封装存在但元器件的引脚名称与 PCB 库中封装

引脚名称不一致等[37]。相应的解决办法是:到网标文档中查找并补上未定义封装的

元件;确认元件封装库已调入,同时检查原理图中元件封装名称与封装库中的名称

是否一致;将原理图中的的元件引脚命名修改成与封装库中定义的一致。

2) 元件布局完成后,模块化硬件构件并标注设计信息和加工要求

PCB 布局时,要在 PCB 周边预留处 5mm 的空间。因为 PCB 要装盒或以其他形

式安装,那一定要确保尺寸正确,并添加安装孔。PCB 布局完成后,要在空隙处的

Top Overlay 层放置必要的文字标注,如设计版本、设计者、设计日期等,以便最大

限度的方便维护与查找。

PCB 设计时,以硬件构件为单元进行元件布局后,要用标注线(画在 Top Overlay

层上)将每个硬件构件封装起来。这样可以使设计者和维护人员明晰硬件系统的每个

组成构件,方便早期调试和后期产品维护。

加工要求包含 PCB 外形尺寸要求、特殊部位结构要求、板材要求等,在布局完

成后,将这些信息标注在 Keep-Out Layer 层,PCB 绘制完成后就可以交付加工了。

Page 34: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第三章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 28 -

3) 运行 DRC,纠正错误

规则检查 DRC (Design Rule Check,设计规则检查)包括线间距检查、走线宽度

检查、连线短路/断路检查、过孔孔径检查、高速布线特性检查等。DRC 会标出错

误之处,并生产报告(指明错误与警告的位置、原因),设计完成后反复检查,直至

消除错误。

4) 加大表层电源区铺铜的线间距

在表层电源区铺铜前,把线间距调大,如 30mil,这样做的目的在于,拉大电

源与信号走线之间的间距,以有效地避免制造过程中出现短路或应用中出现的电气

性能不佳现象。

3.5 硬件构件的低功耗设计策略

功耗问题是嵌入式系统设计中普遍关注的热点和难点,特别是对于电池供电的

系统。功耗一般是指系统耗电及电池供电时间问题,降低系统的功耗能够延长电池

寿命、增强系统安全性、降低对其他设备的电磁干扰、节约能源,功耗已成为人们

选购电子产品的标准之一。因此,在嵌入式产品的开发过程中,必须充分考虑功耗

因素,并在产品设计中尽可能的降低功耗对产品的影响。

3.5.1 功耗简介

电路中只要有电流就会有功耗,因此功耗只能减小不能消除。嵌入式系统硬件

设计中采用了大量的集成电路器件,通常集成电路的功耗分为静态功耗和动态功耗。

静态功耗是指电路中电流始终处于相对稳定的状态(保持高电平或低电平),此时电

流经过电路所产生的功耗大小等于电路的电压与流过的电流的乘积;而动态功耗则

是指电流发生翻转时产生的功耗,翻转时,电路有跳变沿产生,在这一瞬间电路中

的电流较大,因此产生了较大的动态功耗。

嵌入式系统的低功耗设计包括系统设计、硬件设计、软件设计等多方面。由于

低功耗设计是一个系统问题,要想真正有效的降低功耗,需要软硬件的有效配合。

3.5.2 基于硬件构件的低功耗设计策略

1. 硬件构件的整体功耗计算

由于嵌入式硬件系统设计时,以硬件构件为单位进行选择、设计和整合,因此

以硬件构件为单位考虑整个系统功耗,即以硬件构件为一个计算整体,计算硬件构

Page 35: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第三章

- 29 -

件的整体功耗。进行硬件系统体系设计时,在满足系统功能需求的前提下,选用整

体功耗低的硬件构件。硬件构件整体功耗的计算方法为:

硬件构件整体功耗 PHwC 等于构件整体输入电压 Uin 乘构件整体消耗电流 Iin,

PHwC=Uin * Iin,

即硬件构件的整体功耗与输入电压 Uin 和整体消耗电流 Iin 成正比。

2. 硬件构件内部低功耗设计策略

进行硬件构件设计时,要想有效的降低功耗,最直接的方法是了解相关元器件

的功耗,选择低功耗的元器件来完成设计。低功耗硬件的选择要从以下几个方面考

虑:

1) 选择低功耗的元件

对于嵌入式系统设计而言,从硬件角度降低功耗最直接的方法是了解相关元件

的功耗指标,选择低功耗元件可以从根本上降低整个系统的功耗。电路设计时尽量

选用低功耗的 CMOS (Complementary Metal Oxide Semiconductor,互补性氧化金属

半导体)元件,并且不用的引脚不要悬空,以防悬空的输入端可能存在的感应信号造

成高低电平的转换而消耗能量。

2) 分时/分区供电技术

一个嵌入式系统有多个功能单元组成,每个单元并非时时刻刻工作,采用分时/

分区供电技术合理给各单元供电,减少不必要的能源消耗。

3) 核心构件的低功耗方法,降低处理器时钟频率

核心构件是嵌入式产品不可或缺的重要构件,其功耗 P 分为外部接口控制器消

耗部分 PI/O 和内核消耗部分 PCore,即 P=PI/O+PCore。其中,影响 PCore 的主要因素是供

电电压和时钟频率,影响 PI/O 的主要因素为各 I/O 控制器的功耗以及地址和数据总

线的宽度。

微控制器内 CMOS 电路的静态功耗相对于动态功耗来讲比较低,可忽略不计。

CMOS 动态功耗的表达式:P=λ CVdd2F,可见,CMOS 的功耗与工作频率 F 呈线形

关系,与供电电压 Vdd呈二次平方关系。因此,对嵌入式微控制器而言,电压越高,

时钟频率越快,其功耗越大。在能满足正常工作要求的情况下,应尽量降低工作电

压或选择符合工作要求的低电压工作的微控制器,这样能更好的降低功耗。

Page 36: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第三章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 30 -

4) 接口电路

接口电路功耗方面包括上拉电阻/下拉电阻、对悬空脚的处理等方面。在能够正

常驱动的情况下,尽可能选取阻值大的上拉电阻[39];而当一信号多数情况下为低时,

选择下拉电阻以降低功耗。悬空引脚不仅会增大功耗,还有可能因电平变化影响系

统正常运行,所以正确方法是将未使用的引脚接地或过电阻接 VCC。

尽管从硬件角度解决低功耗问题是嵌入式系统低功耗设计最直接的方法,但是

在整个系统设计应用时也不能忽视软件方面的低功耗设计。在嵌入式系统设计过程

中,软件的优化设计对最终产生的功耗的多少有着决定性作用[37]。下一节介绍软件

设计中的低功耗实现方法。

3.5.3 软件低功耗设计方法

1) 优化编译技术和算法

对于实现同样的功能,不同的算法消耗的时间不同,因而使用的指令不同,消

耗的功耗也不同[40-41]。目前的软件优化方法有多种,如基于执行时间优化、基于代

码长度优化等。

高效的算法节省了大量的运算时间,从而减少了系统功耗。设计时,在能满足

要求的前提下,应采用简单函数代替复杂函数。

2) 充分考虑 CPU 空闲时间

嵌入式软件设计中降低功耗的关键是减少 CPU 的全速运行时间,使 CPU 较长

的处于空闲方式或掉电方式下。开机时使用中断唤醒 CPU,使它在尽可能短的时间

内完成任务,然后进入空闲或掉电状态,当系统进入时,再通过中断唤醒 CPU[37]。

3) 通信中采用快速的通信速率

在系统与外界通信时,使用尽可能高的数据传输波特率。提高通信速率,意味

着缩短通信时间,也就减少了数据传输功耗。并且发送、接收均采用外部中断处理

方式,而不采用查询方式,这也是为了有效的降低功耗。

4) 在数据采集系统中采用尽可能低的采集速率

在测控系统中,数据采集部分的设计不要只考虑提高采样率,因为模/数转换需

要较大的功耗,过大的采样速率不仅功耗大,而且为了传输处理大量冗余的数据,

也会消耗额外的 CPU 时间和功耗。

Page 37: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第三章

- 31 -

3.6 本章小结

本章的主要工作总结如下:

(1) 给出嵌入式硬件系统中最小系统的定义,分析最小系统的组成电路。

(2) 根据嵌入式硬件系统的特点,借用面向对象方法和构件技术的定义模式、

封装形式及重用性、易于扩展等特点,提出了面向硬件构件的嵌入式硬件系统设计

方法。

(3) 给出硬件构件的定义和分类,阐述硬件构件的主要内容和实现过程,并给

出硬件构件的特点。

(4) 利用硬件构件技术,结合实际应用,提出基于硬件构件的嵌入式硬件电路

图设计原则及其注意事项,如元件命名原则、接口标识命名原则、输入/输出绘制原

则等。

(5) 以硬件构件为整体计算功能,分析、总结并提出软硬件设计中低功耗的实

现方法。

Page 38: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第四章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 32 -

第四章 基于硬件构件的嵌入式底层构件开发技术

嵌入式软件产业发展迅猛,已成为软件体系的重要组成部分。随着嵌入式系统

应用的不断深入和产业化程度的不断提升,新的应用环境和产业化需求对嵌入式系

统软件的开发提出了更加严格的要求。目前,已出现针对嵌入式应用程序开发方法

的研究,但面向嵌入式硬件模块及其底层软件开发方法的研究却极少。本章在硬件

构件设计思想的基础上,结合嵌入式软件开发的特点,提出基于硬件构件的底层构

件开发技术、底层构件化的嵌入式底层软件开发原则,并给出相应的应用实例。

4.1 嵌入式软件开发的特点分析

目前嵌入式系统的应用越来越广泛,作为嵌入式系统主要部分的嵌入式软件的

需求也越来越大,但因为嵌入式系统实时性、安全性、硬件体系的多样性等特性的

要求,在不同的嵌入式硬件体系上开发出高质量、符合各种要求的嵌入式软件的困

难也越来越大[42]。在嵌入式系统的开发过程中,不仅要尽可能的缩减开发周期和费

用,更重要的是开发出高质量的嵌入式应用程序。这些嵌入式软件不仅要符合嵌入

式系统可靠性、稳定性、实时性等要求,还要求满足软件的可重用性、可配置性和

可扩展性,以提高嵌入式软件的开发效率和质量。

嵌入式系统规模不断扩大,嵌入式软件开发已变成一项极具挑战性、较复杂的

任务。嵌入式系统的基本特点对嵌入式软件系统的开发具有重要影响,这些影响主

要包括[16,43]:

1) 实时性的影响

实时性是嵌入式系统的重要特性之一,影响着嵌入式软件设计的多个方面,如

构件模型、应用设计、系统设计等方面。在设计构件模型时,必须有效地表示实时

属性,即构件的实现模型应该提供机制保证对构件接口的调用能够满足实时性要求;

在设计软件体系结构时要特别重视解决并行、异步、中断等问题,以满足系统对实

时性的要求;而在系统设计时,对构件的选择、修改、组装、系统验证与评估时都

必须将实时性作为一个主要的设计要素。

2) 资源有限性的影响

资源有限性是嵌入式系统的独特点,其影响主要表现在构件模型和系统设计等

Page 39: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第四章

- 33 -

方面。在分析设计模型时,要求对有限的资源作出显式的描述,方便在系统设计阶

段对构件的选用和对系统的验证,节省嵌入式系统的硬件资源(例如内存);而整体

系统设计时,要充分考虑系统的有限资源,进行合理的系统设计。

3) 应用专用性的影响

专用性是嵌入式系统的三个基本要素之一,主要体现为嵌入式硬件体系的多样

性。为满足多样性的要求,在应用分析和设计时,要求识别出应用的共同点,确定

应用的变化点,预测应用可能的变化,以设计出灵活易变的体系结构以适应领域内

各种潜在的变化,使构件的重用性更高。

4) 软件代码健壮性的要求

嵌入式系统往往工作环境恶劣、受电噪声干扰较大,而且随着软件复杂度越来

越高,系统运行不稳定的可能性愈来愈高,因此,嵌入式系统应用对软件的健壮性

提出了更高的要求,追求更高的健壮性、可靠性是嵌入式软件的特点之一。

5) 底层硬件驱动程序(底层软件)的特殊要求

嵌入式系统与普通的软件系统不同,它不仅包括高端的应用软件,还有底层的

硬件体系及其底层软件。底层软件完全针对硬件体系,专用性强;嵌入式软件是应

用在嵌入式设备上的应用软件,这就决定了它比传统 PC 机上的软件更多地暴露给

用户对硬件的操作接口。

4.2 开发文档的设计规范

在进行任何一个系统设计之前,为了对资料进行有效的分类和归档,设计者要

形成建立项目设计目录的良好习惯,即建立一个独立的、以项目名称命名的文件夹,

并在这个独立的文件夹下,建立“参考资料”、“设计文档”、“硬件设计”、“软

件设计”、“其他”等下一级文件夹,必要时还要建立一些以日期命名的文件夹,

随着工作的进展安排在相应的文件夹下[44]。总之,要清晰、合理地放置工作资料和

设计成果。

在系统设计过程中,“设计文档”通常包括需求分析报告、总体规划报告、总

体设计报告、系统硬件设计文档、软件设计文档、源程序文件和使用说明。同时,

建议在“设计文档”中建立一个“备忘录”文件,用于存储系统设计过程中遇到的

问题、解决方案和完成情况等问题,以便设计者随时查看系统设计进展情况、方便

Page 40: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第四章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 34 -

撰写设计文档。再者,完成系统硬件设计之后,应生成一个系统元器件清单,该清

单中包括系统硬件设计中所用到的所有元器件名称、大小、封装等信息。这份清单

不仅可以方便购买元器件,还可以快速有效的进行焊接。

这些规则看似简单、没有太大意义,但是在实际项目开发过程中,如此进行资

料归档,可以使开发人员清楚项目的整体情况及其进展、节省繁琐的资料查找和归

类,便于为项目制定一个合理的进度计划、做出一份完整清晰的设计文档。

4.3 系统信号量分析设计规范

通过现场调研及与用户反复交流后,设计者要全面、深入、准确地分析系统所

要解决的实际问题,搞清实际问题所涉及的应用环境、应用对象、应用过程、应用

要求、应用联系,从整体上得出系统设计所要达到的目标及系统所要实现的功能、

完成的具体任务、产品的形式,最后形成需求分析报告。

在进行需求分析过程中,对系统进行输入输出信号分析是整个工程的第一步,

设计人员必须明晰整个系统所包含的信号、信号的实际含义和来源、传输方式、取

值范围及精度、注意事项等信息,这些信息最终会转换为系统的软硬件设计。信号

分析时,应根据信号分类及输入/输出方式进行分类整理,其具体格式参见表 4.1[44]。

表 4.1 嵌入式系统信号分类表

表 1 输入量分析表(模拟量)

编号 模拟量名称 来源 数值范围 分辨率要求 备注

表 2 输入量分析表(开关量)

编号 模拟量名称 来源 备注

表 3 输出量分析表(模拟量或开关量)

编号 模拟量(或开关量)名称 控制对象 备注

表 4 系统通信量表

编号 通信量 通信的数据

4.4 硬件构件化的嵌入式底层构件开发技术分析

鉴于嵌入式系统需要硬件体系支持的特殊性,嵌入式底层软件(即硬件驱动程序)

的开发便成为嵌入式软件开发的重要组成环节。在硬件构件基础的上,本章给出应

用于嵌入式底层软件上的底层构件(Embedded Underlying Component,EUC)的定义。

4.4.1 基于硬件构件的嵌入式底层构件

嵌入式底层构件(EUC)是在硬件构件的基础上,根据硬件构件的实际功能和接

Page 41: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第四章

- 35 -

口,实现与之相对应的硬件驱动模块的分解,并将硬件驱动底层程序的实现、头文

件定义及其文件描述封装成一个可重用的构件实体,并提供一系列规范的输入/输出

接口,供其他嵌入式应用程序调用。

一个底层构件对应一个硬件构件,但并不是所有的硬件构件都需要底层构件驱

动,如只需要硬件接线的电源硬件构件。底层构件同硬件构件一样,也具有被独立

部署和被第三方组装的特性。实现内部硬件构件功能称之为内部底层构件,同样实

现外部硬件构件功能称之为外部底层构件。

同时,定义嵌入式底层软件(Embedded Underlying Software)为:与嵌入式系统

硬件模块相关联的,具体实现硬件构件功能的程序代码。底层软件是底层构件的组

成部分之一。

定义嵌入式应用程序(Embeded Application Programmer)为:嵌入式系统软件中

与硬件模块无直接驱动关系,用于实现系统功能的程序代码,主要包括主程序、中

断子程序和其他功能子程序。

4.4.2 底层构件的设计模型

对照硬件构件的模型结构,基于硬件构件的嵌入式底层构件的模型结构见图

4.1。硬件构件中的接口部分转化为底层构件的头文件;而硬件功能模块的具体实现

是图 4.1 中的底层软件部分;扩展模块描述为文件描述,包括构件功能描述、接口

信息描述、头文件描述等;另外,添加这个底层构件的接口部分,用于底层构件与

其他的构件、应用程序之间的交互。底层软件与接口之间具有“使用/实现”的关系,

头文件通过“定义/转换”关系与硬件接线和寄存器实现连接。

图 4.1 基于硬件构件的嵌入式底层构件模型

4.4.3 底层构件的实现

由于底层构件的设计模型来源于硬件构件技术,基于硬件构件的嵌入式底层构

件同样也分为底层构件实现过程(底层构件的设计和开发)和应用过程(底层构件的扩

展、调用过程)。

底层软件[硬构件驱动程序]

文件描述

定义/

转换

定义/ 转换

描述

硬件构件

头文件

头文件

使用/

实现

使用/ 实现

描述 描述

其它硬件构件/

功能函数

接口

接口

Page 42: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第四章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 36 -

1. 底层构件的实现过程

底层构件的实现为嵌入式系统底层软件开发提供具有重用性的功能构件,是开

发嵌入式底层软件的一种重要方法。与硬件构件的实现过程相似,底层构件也注重

构件的重用性与移植性,同样方便修改、发布和替换,得到了实验人员的认可。

底层构件的概念模型参加图 4.2,从图中可以看出,底层构件可以分为底层软件、

头文件、接口描述和文件描述四个部分。其中,头文件用于实现底层构件的外部硬

件接线和内部寄存器的定义转换,即硬件构件的引脚定义和寄存器定义;接口是底

层构件与其他构件交互的唯一通道,是应用程序调用底层构件的通道;文件描述用

于描述整个底层构件的相关信息;底层软件用于实现构件的具体逻辑功能,对外界

而言底层软件是一个不可见的黑盒,只是通过接口实现交互。

图 4.2 底层构件的概念模型

底层构件的主要设计思想是:在嵌入式底层软件开发过程中,根据硬件系统中

设计完成的硬件构件,分析硬件构件的功能和接口,设计实现与之对应的功能程序

(即底层软件)、头文件以及相应的外部接口模块,并封装成底层构件,应用时供设

计者选择使用。底层构件的实现过程如图 4.3 所示,是为嵌入式底层软件提供具有

重用性和移植性的底层功能函数的过程。

2. 底层构件的应用过程

底层构件的应用过程就是在系统硬件体系设计实现后,根据硬件体系中选用的

硬件构件,调用相应的底层构件;并根据硬件构件的接口实现,修改底层构件头文

件中的引脚定义;最后,将这些底层构件添加到工程文件中,通过接口即可实现应

用程序对底层构件的调用。

EUC={底层软件,头文件,接口描述,文件描述}

底层软件={各种具体硬件构件的软件方法描述的实现过程}

头文件={实现底层构件与具体硬件接线及寄存器之间的对应}

接口描述={接口实体}

接口实体={硬件构件的方法描述}

方法描述={[Direction] Return_Type FunctionName (Parameter_list)}

Direction:接口方向[In:输入;Out:输出]

Return_Type:返回值类型

FunctionName:功能函数名称

Parameter_list:参数列表

模块描述={模块功能描述,头文件信息描述,对外接口描述,注意事项等}

Page 43: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第四章

- 37 -

图 4.3 底层构件实现过程

4.4.4 基于底层构件的嵌入式底层软件编程思想

1) 底层构件与硬件构件相分离的命名规则

由于底层构件与硬件构件存在对应关系,底层软件中包含许多与硬件构件密切

相关的寄存器、标志位和变量等信息,因此,为了满足底层构件可重用与可移植的

思想,底层软件中与硬件构件密切相关的信息命名时要与硬件构件分离,只是在头

文件的引脚定义、寄存器定义(在头文件的封装原则中详细讲解)中实现二者的对应

关系即可。

2) 底层构件中头文件的封装原则

头文件是实现底层构件与硬件接线“定义/转换”关系的文件,是底层构件与硬

件的交互渠道。每一个底层构件中,头文件与底层软件采样相同的文件名(扩展名不

同,分别为*.h 与*.c),这样便于在工程中查找对应同一个底层构件的相关信息。每

个底层构件的头文件(*.h)都封装有头文件信息说明、头文件引用信息、硬件接线引

脚(或寄存器)定义/转换、底层软件函数声明四部分。其中,头文件信息说明用于说

明该头文件的功能,方便设计者查看、调用和修改;头文件引用信息包含有该头文

件及其对应底层软件中需要的功能函数所对应的头文件;硬件接线引脚定义则是底

层构件与硬件模块引脚的接线对应关系表,它能方便设计者在修改硬件构件的接口

后,直接修改硬件接线引脚定义就可以实现对底层构件的重用,而寄存器定义表明

底层构件中所涉及内部硬件构件的寄存器定义/转换关系,其中包括寄存器名称转换

头文件

构件模型 1 构件模型 2 构件模型 n ┉

底层构件库 ┉

可重用 底层构件

硬件驱

动程序

底层构件 1 底层构件 2 底层构件 n

硬件构件

头文件 头文件

接口

主程序、中断子程序、功能程序

底层程序 底层程序

Page 44: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第四章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 38 -

和标志位转换;底层软件函数声明部分包含了底层软件(*.c)文件中所有与外部交互

的函数声明,即对外公布的函数声明。图 4.4 给出了 RS485 通信构件的头文件封装

示例。

图 4.4 头文件封装实例说明

3) 底层软件的封装策略

底层软件是底层构件的核心组成部分,是相应硬件构件功能的具体软件实现部

分。为了方便设计者查阅、修改和调用,底层软件通常封装有文件描述部分、头文

件引用部分和功能函数实现部分。文件描述部分包含有底层软件文件名、功能信息

描述、对外交互函数说明和硬件连线说明等信息;头文件引用部分则是与底层软件

同名的头文件信息说明;功能函数实现部分则是底层软件的核心,即硬件功能的驱

动函数。

4) 底层构件封装的完整性与独立性原则

与硬件相交互的定义和操作被封装在底层构件的各个组成部分中,其他应用程

序通过调用相应的底层构件实现与硬件的交互,内部不再出现直接与硬件交互的操

作,即底层构件封装的完整性。各个底层构件封装时要保持各自的独立性,各个封

装之间不能相互交叉。

//RS485.h----RS485 通信头文件------------------

#ifndef RS485_h

#define RS485_h

//--------[头文件引用]-------------------------------

#include "GP32C.H" //MCU 头文件

#include "DataType.h" //数据类型定义头文件

//--------[寄存器定义]-------------------------------

#define ReSendStatusR SCS1 //SCI 状态寄存器

#define ReSendDataR SCDR //数据寄存器

//--------[寄存器内标志位定义]---------------------

#define ReTestBit 5 //接收缓冲区满标志位

#define SendTestBit 7 //发送缓冲区空标志位

//--------[函数声明]------------------------------------

void RS485Init(void); //RS485 初始化函数声明

INT8U SCIRe1(INT8U *p); //接收 1 字节

INT8U SCIReN(INT8U n,INT8U ch[]); //接收 n 字节

void SCISend1(INT8U o); //发送 1 字节

void SCISendN(INT8U n,INT8U ch[]); /发送 n 字节

#endif

寄存器转换

对外

公布

函数

声明

标志位转换

防止头文件重复定义

Page 45: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第四章

- 39 -

4.5 硬件构件及底层构件的重用与移植分析

构件重用也称为构件复用,是指一个构件不做修改或稍加改动即可实现在同一

系统中多次重复使用。构件移植性是指当把构件移植到不同的系统中应用时,不需

改变其结构或稍加修改就能实现其功能的特性。

构件移植的目的是促进现有构件在新环境、新系统下的重用。构件重用则是实

现一个系统中的构件在多种情形下的、广泛的重复使用。很显然移植可看作是重用

的一种形式[45]。

构件重用与移植是降低系统开发成本、提高开发效率和产品质量的一种非常合

理、有效的途径。本文提出的硬件构件及底层构件有以下三种不同的重用与移植情

况,在不同情况下构件要实现重用性、可移植性,需要做相应的修改,本节对此给

出相应的分析。

1) 同一款 MCU 应用于不同系统

对于选用同一款 MCU 的不同应用系统,由于硬件系统中 MCU 模块电路是固

定不变的,硬件构件封装设计时,应把作为硬件系统中枢的 MCU 最小系统封装成

一个特殊的硬件构件,即核心构件。设计者进行实际系统设计时,直接选用相应

MCU 核心构件,就能实现 MCU 工作的最小系统电路设计,实现核心构件以及 MCU

内嵌的内部硬件构件在此种情况中的重用。

而外部硬件构件移植到不同应用系统时,只要构件满足系统要求,只需要修改

硬件构件的接口,而不需要改变构件内部即可实现移植,如外部 AD 构件、RS485

通信构件等。

通过分析可以看出,作为与硬件构件相对于的底层构件,在不同系统中移植时,

只需要修改与硬件构件的接口相对应的头文件中的信息即可实现移植,即修改头文

件中的硬件接线引脚定义和内部寄存器定义;而不需要修改底层构件中的底层软件

和接口部分。

2) 应用于同一系列 MCU

对于选用同一系列 MCU 作为主控芯片的系统,进行硬件构件和底层构件选用

时,首先,核心构件这一特殊构件直接从构件库中选用即可,若库中不存在,则需

要设计者按要求完成该 MCU 核心构件的设计并将其添加到库中;其次,由于 MCU

为同一公司的同一系列芯片,共有的内部硬件构件的功能及实现方法相同,因此与

Page 46: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第四章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 40 -

这些内部硬件构件相对应的内部底层构件的移植只需要修改头文件中的寄存器定义

即可。例如,Freescale 公司 HC08 系列的 MCU 内部集成 SCI (Serial Communication

Interface,串行通信接口)、SPI (Serial Periphral interface,串行外设接口)、PWM (Pulse

Width Modulation,脉宽调制)和 Flash 等模块,这些内部硬件构件的功能及其实现相

同,因此只需要修改对应内部底层构件头文件中的寄存器定义,即可实现它们在同

一系列 MCU 中的移植。

其他外部硬件构件只要功能满足系统要求,其调用移植与(1)中的外部硬件构件

的移植方法相同。

3) 应用于所有的嵌入式系统

内部底层构件的功能函数编写时,要尽可能规范化、模块化,满足对重用与移

植的要求,以方便这些函数能够在所有嵌入式系统中移植。例如串行通信中发送、

接收函数:

void SCIsend1(INT8U o) //发送一个字节

void SCIsendN(INT8U n, INT8U ch[]) //发送n个字节(调用SCIsend1)

INT8U SCIre1(INT8U *p) //接收一个字节

INT8U SCIreN(INT8U n, INT8U ch[]) //接收n个字节(调用SCIre1)

4.6 本章小结

本章的主要工作总结如下:

(1) 分析当前嵌入式系统的特点对嵌入式软件开发的影响。

(2) 分析、总结嵌入式系统开发时,项目文档设计及系统输入、输出信号分析

的规范。

(3) 在硬件构件技术的基础上,提出基于硬件构件的嵌入式底层软件开发技术

——底层构件技术,给出底层构件的定义、构件模型及其实现与应用。

(4) 根据底层构件的设计思想,阐述基于底层构件的嵌入式底层软件的设计原

则,如头文件封装原则、底层软件的封装原则等。

(5) 阐述硬件构件和底层构件在三种情况下的重用与移植现象,并说明如何实

现它们的重用与移植。

Page 47: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第五章

- 41 -

第五章 硬件构件化嵌入式开发技术的应用实例

前面章节重点介绍了嵌入式系统软硬件开发过程中,基于硬件构件的开发技术。

本章将在硬件构件技术的基础上,设计实现一个具体的应用实例——恒温恒湿控制

器系统。恒温恒湿控制器系统是集制冷、制热、加湿、除湿、净化以及新风功能为

一体,可实现精确可靠的恒温恒湿控制的系统,它主要用于实时监控制药厂内各个

工作车间的温湿度情况,并以此控制相应的执行机构。

5.1 系统功能分析

5.1.1 系统功能简介

恒温恒湿控制器系统(Constant Temperature and Humidity Controller System,

CTHCS)的主要功能是检测制药厂内各个生产车间的环境信息(主控制室内有一个主

控系统,每个车间内各有一个辅控系统),通过这些信息控制相应的执行机构并将其

显示在液晶上;将车间内的环境信息通过 RS485 通信网络传送给主控系统,以便主

控系统检查、修改;主控系统将每个车间内额定信息通过通信网络发送给相应的辅

控系统,以便辅控系统执行相应功能,参见图 5.1。

图 5.1 CTHCS 功能结构框图

辅控系统安装在各个生产车间内,负责采集/显示设备现场的温湿度、风管风速、

CO2 含量等环境信息;根据温湿度的当前值和额定值控制相关的执行机构;将采集

到的环境信息通过 RS485 通信网络发送给主控系统,并且中断接收主控系统发送的

命令额定值。主控系统安装在总控制室内,它不仅具有采集/显示控制室的温湿度、

风管风速、CO2 含量等环境信息,并根据温湿度的当前值和额定值控制相关的执行

开关量输入 内部模拟量采集 外部模拟量采集

MCU(GP32)

) LCD 显示 报警 内部模拟量输出(PWM 模块)

外部模拟

量输出

RS485

通信

数字信号 模拟信号输入

模拟信号输出

AD 采集模块

) SPI 通信

SPI

通信

DA 转换模块

)

主控系统

辅控系统 n

RS232 通信

RS485 通信

辅控系统 1

)

Page 48: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第五章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 42 -

机构的功能;还有接收并显示各个辅控系统的环境信息,将信息转发给 PC 机供操

作人员查阅,并根据实际需要调整各个辅控系统的额定温湿度值的功能。

5.1.2 CTHCS 输入/输出信号分析

系统数据信号的输入、输出分析是需求分析阶段的重要内容,作者从用户提供

的庞大且杂乱的资料中分离出系统功能设计所需要的信号量,完成从自然语言到设

计语言的转换。下面以 CTHCS 主控系统为例,详细介绍系统信号的分析、分类。

1) 输入信号分析

输入信号分为开关量类与模拟量类,通过分析得出 CTHCS 中模拟量输入信号

包括生产环境中的温度、湿度,风管的温度、湿度、风速、CO2 含量,空气压力,

水管流量,风机电流、电压等模拟量信号,见表 5.1;来自现场的开关量输入信号:

初效/中效压差开关、防火阀开关以及键盘信号,见表 5.2。整个系统的详细输入输

出分析表见附录 B。

表 5.1 CTHCS 输入量分析表(模拟量)

编号 模拟量名称 来源 分辨率要求 备注

1 室外温度 室外 (1)AD 转换分辨率 0.5℃

(2)显示分辨率要求 1℃

到 5℃,默认为 2℃

(1)默认 120s 采集一次

(2)温度设定范围为-40℃到

140℃

2 新风管温度 新风管

3 回风管温度 回风管

28 回水管压力 回水管 精度要求不高 0-99Pa

29 送水管压力 送水管

编号 7、8 热敏电阻的范围是 0-10kΩ,其他模拟量输入信号有 0-10V、0-20mA 和

0-5V 三种,因此在硬件布板时要有 3 种输入方式。至于用那种输入方式,有硬件

跳线来实现。

表 5.2 CTHCS 输入量分析表(开关量)

编号 模拟量名称 来源 备注

1 初效压差开关(下) 初效过滤器(下) (1) 1 路 I/0 输入,构成回路

(2) 在 PC 上显示状态 2 初效压差开关(上) 初效过滤器(上)

6 键盘 小键盘 使用片内 AD 模块实现键盘功能

2) 输出信号分析

输出信号同样可分为开关量类与模拟量类,CTHCS 的输出信号包括用于驱动执

行机构的模拟量信号、显示在 LCD 上的环境信息以及控制系统运行指示灯的开关信

号,分别参见表 5.3 和表 5.4。

Page 49: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第五章

- 43 -

3) 通信量分析

CTHCS 主控系统对外通信包括两部分,一是主控系统与 PC 机之间的 RS232

串行通信,二是主控系统与多个辅控系统之间的 RS485 通信,参见表 5.5。

表 5.5 CTHCS 主控系统通信量表

编号 通信量 通信的数据

1 SCI 通信 主控/辅控系统的环境信息

2 RS485 通信 辅控系统的环境信息

5.2 基于硬件构件的 CTHCS 硬件系统的实现

5.2.1 系统硬件选型

1) 微处理器选型基本原则

在嵌入式产品设计过程中,硬件选型是一个重要环节,它将直接影响着产品设

计进度,同时也决定产品的性能,还可能会影响到产品成形后的生产与维护。嵌入

式硬件系统主要由微处理器和外围功能模块构成,因此,在 MCU 选型时就要从这

两个方面考虑。

微处理器是嵌入式硬件系统的核心,选择一款合适的微处理器,除了考虑技术、

性能方面的因素外,还应充分考虑非技术原因,微处理器的选型注意事项参见表 5.6。

表 5.6 微控制器选型的指标

序号 影响因素 原因

1 芯片开发难易 要确保所选芯片便于开发,尤其是开发周期短时,最好选用以前开

发过的芯片使用

表 5.3 CTHCS 输出量分析表(模拟量)

编号 模拟量名称 控制对象 备注

1 热水阀 1 加热器(蒸气或电) 需 DA (Digital/Analog conversion,数/模转换)

芯片 2 热水阀 2 加热器(蒸气或电)

27 冷却泵 冷却泵 需 DA 芯片

28 冷却泵(备) 冷却泵

注 模拟量输出范围有 0-10V、0-20mA 两种

表 5.4 CTHCS 输出量分析表(开关量)

编号 开关量名称 控制对象 备注

1 LCD 模块 显示模块的 LCD 240*128 像素

2 运行指示灯 运行状态指示灯 (1)需要双色 LED 显示 (2)需一路 I/O 控制

LED,绿:正常;红:故障(同时接蜂鸣器)

Page 50: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第五章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 44 -

2 硬件资源 要确定芯片是否集成有通用或者专用的 I/O 接口、通信接口(SCI、

SPI、I2C、以太网等)、功能模块(AD、PWM 等)

3 内部资源 确定芯片内部的 RAM、ROM、Flash 等存储器的大小是否满足系统

要求

4 价格 在产量和成本约束相当严格的场合,价格是非常重要的因素。在一

般的嵌入式系统中,十几美元的微控制器算是比较昂贵的

5 性能 仔细评估微控制器的性能能否满足系统的处理需求(满负荷运行

时),最好使用评估板评估一下实际的处理能力。

6 封装 目前,QFP、BGA 的封装较多。BGA 焊接要求严格,必须使用机器

焊接,可测试性差

7 功耗 对于电池供电的产品,需要非常重视微控制器的功耗问题

8 EMC 应优先选用对 EMC 作过优化设计的 CPU

9 总线形式 最好能与大多数外围器件实现无缝连接

10 工具支持 包括编译、调试环境、操作系统支持等开发工具包

11 市场定位 了解芯片的定位,低端还是高端,消费电子还是工业控制

本文的应用实例 CTHCS 的主要功能就是实现工作现场模拟量信号的测控和

RS485 数据的通信网络,即通过对 CTHCS 信号输入、输出情况的分析可以看出(参

见表 5.1~5.5),确定所选微控制器应满足对环境信息测控的需求、扩展模拟量采集、

具有两个以上串口等功能,因此主控制系统的微处理器选择 Freescale 推出的 112 脚

LQFP (Low Profile Quad Flat Pack,低四方扁平封装)封装的 MC9S12DG128[46](以下

简 称 DG128) , 辅 控 系 统 的 微 处 理器 选 择 该公 司 的 42 脚 DIP 封 装 的

MC68HC908GP32[47](以下简称 GP32)。

2) 外围芯片的选型

外围元件的选择同样重要,它决定着微控制器能否完成其相应的功能扩展,外

围元件的选择原则如下:

(1) 系统功能要求:在选择时,一定要仔细阅读芯片的参考手册以及一些应用

实例,充分了解元件的性能及应用环境。

(2) 电压及其接口形式:外围元件的电压最好能够从电路板上直接获取,避免

为此新增多余的电压转换芯片,最好能选用与系统总线无缝接口的芯片。

(3) 尽量选用标准产品:选用引脚、封装、功能兼容的产品会降低采购的风险,

方便产品的生产与后期维护。

(4) 通信接口:功能元件通过接口与外界进行交互,选择具有通用接口的元件,

可以方便实现器件的交互。

根据以上原则,以及 CTHCS 的主控/辅控系统功能需求,选择了以下外围芯片,

见表 5.7 所示。

Page 51: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第五章

- 45 -

表 5.7 各模块芯片的选取

设备类型 模块名 备注

电源模块 Power LM2575-5 输入范围 4.7~40V,输出 5V

模拟量采集模块 AD TLC2543,11 路 10 位精度,SPI 通信模式

模拟量输出模块 DA TLV5608,8 路 10 位精度,SPI 通信模式

液晶显示模块 LCD 主控系统 240*128 像素,辅控系统 128*64 像素

通信模块 SCI 串口 MAX232,2 路串行转换

RS485 通信 SN65176,半双工模式

时钟模块 PCF8563 PCF8563,I2C 通信模式

5.2.2 CTHCS 的硬件设计方案

根据 CTHCS 输入、输出数据信号以及通信信号的分析,CTHCS 主控系统的结

构如图 5.2 所示。其中,主控系统 MCU 及其最小系统支撑电路、电源模块是整个

主控系统硬件部分的核心,主控 MCU(DG128)负责主控系统信息的测控,电源模块

负责为系统内所有模块提供工作电源;开关量输出即运行状态显示,包括 4*16 汉字

液晶显示和系统报警指示,液晶用于显示主控制室内的环境信息,报警指示不仅可

以为系统提供错误报警,还可为系统硬件检测和程序调试提供方便;时钟模块为系

统提供精确的计时,它还包括一个电池供电模块,以确保在系统掉电情况下时钟模

块仍能精确计时;RS485 通信网络和 RS232 通信都是采用的主从式通信方式,PC

机为主、主控系统为从和主控系统为主、辅控系统为从,PC 机主动请求主控系统的

信息、主控系统主动向辅控系统请求现场环境信息,这样就可以避免多个辅控系统

图 5.2 CTHCS 主控系统结构框图

29 路模拟量采集

辅控系统 1

28 路模拟量输出

开关量输入

传感器接口

键盘接口

按键接口

电源模块

主控系统

MCU

(DG128)

开关量输出

LCD显示(240*128象素)

报警(指示灯、蜂鸣器)

执行机构接口

时钟模块

时钟芯片接口

┅ 辅控系统 n

RS485 通信

串口 通信

Page 52: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第五章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 46 -

同时向主控系统发送数据,而造成数据叠加混乱;另外,还有现场环境数据的采集

接口和按键接口(模拟量采集),以及各个执行机构的控制信号输出接口(模拟量输

出)。而辅控系统的机构框图参见图 5.1。

5.2.3 CTHCS 的核心构件

CTHCS 主控、辅控系统分别选用 Freescale 公司的 MCU DG128 和 GP32 作为它

们的控制芯片。

1) DG128 核心构件

DG128 核心构件的最小系统包括电源与滤波电路、PLL 电路、复位电路、晶振

电路、BDM (Background Debug Mode,背景调试模式)调试写入接口电路等。图 5.3[36]

给出了 DG128 最小系统示意图及其元件参考值。其中,晶振电路使用 9.83MHz 的

外部有源晶振起振;使用 BDM 调试器对目标板 MCU 的 Flash 进行擦除、写入。

MC9S12DG128 微控制器是 Freescale 公司 HCS12 系列 16 位 MCU 中的一种,

它的工作电压为 5V,CPU 的工作频率可达到 50MHz,总线频率可达到 25MHz。其

内部主要组成部分有:内部集成 128KB FLASH、8KB RAM 和 2KB EEPROM;具

有 29 路独立的 I/O、20 路带中断和唤醒功能的 I/O 接口;2 个具有外部转换触发能

力的 8 通道 10 位 AD 转换器;8 通道 8 位或 4 通道 16 位的 PWM 模块;8 通道的输

入捕捉/输出比较等;2 个串行异步通信接口 SCI、2 个同步串行外设接口 SPI、

Byteflight、Inter-IC 总线及 SAE J1850 Class B 数据通信网络接口。

2) GP32 核心构件

GP32 核心构件的最小系统包括电源与滤波电路、晶振电路、PLL 电路和复位

电路,参见图 5.4[44]。其中,晶振电路使用 32.768KHz 的外部无源晶振,内部有压

图 5.3 MC9S12DG128 最小系统电路示意图

EXTAL

(46)

VSSR (40)

VDDR (41)

VDDPLL (43)

XFC (44)

MC9S12DG128(112脚)

RESET (42)

CP

470pF

CS 4.7nF

RS

1.5K

PLL电路

5V

C1 0.1µF

C2 4.7µF

电源电路

5V

10K 51Ω

RST他TTT

0.1µF

复位电路

VDD

GND

VCC

NC

9.83 MHz OSC

1

3

2

OUT

GND

5V 4

22Ω

有源晶振电路

电路

RESET

BKGD

4

3

2

1

BDM调试端口电路

BKGD

(23)

10K

Page 53: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第五章

- 47 -

控振荡器和锁相环电路(PLL),产生 16MHz片内时钟和 8MHz内部总线时钟。

MC68HC908GP32 是 Freescale 公司推出的高性能 8 位微控制器系列中的一款,

其内部主要组成部分有:512B RAM;32KB FLASH;33 路通用 I/O,包括 26 路多

功能 I/O 和 7 路专用 I/O;增强型串行通讯口 SCI;串行外围接口 SPI;两个 16 位双

通道定时器接口模块(TIM1 和 TIM2),每个通道可选择为输入捕获、输出比较和

PWM。

5.2.4 硬件构件化的 CTHCS 硬件系统的实现

1. CTHCS中硬件构件的实现

通过本章的 CTHCS 需求分析、芯片选择和硬件设计,结合 3.2 节硬件构件的设

计思想,设计实现 CTHCS 的硬件构件:电源构件、RS485 通信构件、AD 转换构件、

时钟构件等等。下面以电源构件和 RS485 通信构件为例,详细介绍这两个构件的实

现过程。

1) 电源构件的实现

电源构件的接口有三个,输入接口+12V,接外部电源正极输入;GND 接外部

电源地输入;输出接口+5V,为板间电源输出接口。构件描述的具体内容为:电源

构件是整个系统的核心构件之一,利用 LM2575-5 将 12V 的 DC (Direct Current,直

流电源)转换为 5V 的 DC,为各个构件提供工作电源。输入接口接引脚间距为 3.1mm

的接插件,输出接口接所有构件的工作电源。输入接口接线时,要注意电源的正负

级,一定不能反接。电源构件的功能实现模块封装在小虚线框内,对使用者而言,

电源构件是一个黑盒,当外部供电接线端子的封装改变时,功能实现模块不需要修

改,只要修改供电接线端子的封装即可重用电源构件。如图 5.5 所示。

图 5.4 MC68HC908GP32 最小系统电路示意图

0.1μ

+5V

+5V

10K 51Ω

RST他TTT

0.1µ

复位电路

20P

10M

15P

32.768 150K

晶振电路

0.47µ 0.01µ

10K PLL滤波

MC68HC908GP32 (40-引脚 PDIP 封装及 42-引脚 SDIP 封装)

OSC2 4

OSC1 5

CGMXFC 3

VDDA 1

VSSA 2

0.1μ

+5V

VDD 20

VSS 19

RST 6

Page 54: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第五章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 48 -

图 5.5 CTHCS 电源构件

2) RS485 通信构件的实现

RS485 是一种基于差分信号传送的串行通信链路层协议。它解决了 RS232 协议

传输距离太近(15m)的缺陷,是工业上广泛采用的较长距离数据通信链路层协议。

RS485 标准采用平衡式发送,差分式接收的数据收发器来驱动总线。

RS485 通信构件采用 TI 公司的 SN65176 芯片(其引

脚见图 5.6),SN75176 是 8 脚 DIP 封装的 TTL-485 电平

专用转换器。该芯片是通过两个引脚 RE (2 脚)和 DE(3

脚 )来控制数据的输入和输出。当 RE 为低电平时,

SN65176 数据输入有效;当 DE 为高电平时,SN65176

数据输出有效。由于 SN65176 工作在半双工模式下,为了不使用额外的 I/O 口来控

制 DE/ RE 引脚就可以实现发送与接收,需要对工作电路进行改进。通常可以将这两

个引脚直接相连,使用 MCU 的一根数据线控制,由 MCU 输出的数据线上的高低

电平来控制 SN65176 在接收和发送状态之间切换。本文使用 MCU 的 PTE0 (Tx)线

及三极管 Q1 来控制 SN65176 的状态切换。平时 MCU 的 Tx 引脚为高电平,三极管

Q1 导通使得 RE 为低电平,此时 SN65176 处于接收状态。而当 MCU 发送数据时,

若 TX 脚输出低电平,经 Q1 倒相后,使 SN65176 的 RE 和 DE 为高电平而处于数据

发送状态,数据线上发送出逻辑 0;若 Tx 脚输出高电平,此时 SN65176 的状态与

MCU 平时不发送数据时 SN65176 的状态相同,SN65176 处于接收状态不发送数据,

图 5.6 SN65176 的管脚说明

1 8

2 7

3 6

4 5

RO

RE

DE

DI

VCC

B-

A+

GND

输入接口

输出接口

HwC 名称:电源构件

HwC 功能:利用 7525-5 将 12V 的 DC 转换为 5V 的 DC,为各个构件提供工作电源。

接口描述:输入接口:+12V 外部电源正极输入,GND 外部电源地输入; 输出接口:+5V 电源输出

接口。

构件描述:电源构件是整个系统的核心构件之一,输入接口接引脚间距为 3.1mm 的接插件,输出接口

接所有构件的工作电源。输入接口接线时,要注意电源的正负级,一定不能反接。

硬件功能描述 硬件功能模块

Page 55: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第五章

- 49 -

但是由于 SN65176 不发送数据时,线上也保持逻辑 1,也就相当于发送出逻辑 1 信

号。这样在实现 SN65176 的发送与接收的控制时,就可以节省一个 I/O 控制口。

RS485 通信构件的实现过程与电源构件的实现过程类似,如图 5.7 所示。它有

四个接口:输入接口 Rx 接 MCU 的 PTE1 引脚,输入接口 Tx 接 MCU 的 PTE0 引脚;

输出接口 485A 和 485B 分别接口通信接线端子的信号线。构件描述的具体内容为:

RS485 信号在传输过程中会产生毛刺或受到干扰,这就需要在连接时进行处理。在

总线末端接匹配电阻,吸收总线上的反射信号,保证正常传输信号干净、无毛刺。

匹配电阻的取值应该与总线的特性阻抗相当;同时要注意 SN65176 芯片只能工作在

半双工模式下,在进行后面的底层构件设计时要注意到这一点。该硬件构件为后面

相应底层构件的设计提供基础,各个组成部分转换成底层构件中的相应部分,二者

一起实现 RS485 通信功能。

图 5.7 CTHCS RS485 通信构件

2. 系统硬件测试及体会

硬件的测试是一个复杂的过程,但也还是有一定方法可循的。对于整块硬件电

路,在首次调试时一定不要将所有元器件都焊接完毕后再进行测试,应该按模块分

别焊接、调试,逐模块调试通过后再联合起来一起调试。

1) 硬件系统测试方法

PCB 制作完成之后,必须对 PCB 上的各个硬件构件进行测试,以确保整个 PCB

的可靠性、稳定性。在设计完成系统硬件时,由于电路原理图的设计、PCB 的绘制、

输入接口

输出接口

HwC 名称:RS485 构件

HwC 功能:利用 SN65176 芯片,将芯片内的 TTL 信号转换为 485 通信信号。

接口描述:输入接口:Rx-接 TTL 电平的接收端,Tx-接 TTL 电平的发送端; 输出接口:485A

-RS485 通信线的 A 数据线,485B-RS485 通信的 B 数据线。

构件描述:RS485 构件实现芯片 TTL 信号到 485 信号的转换,是系统的通信构件之一。输入接

口外接 MCU 的 SCI 模块的引脚,输出接口接 485 总线的接线端子。

注:SN65176 是一款半双工的芯片,它需要两个控制引脚,使用图中的控制电路后,可以减少一

个控制引脚。

硬件构件描述 硬件功能模块

输入接口

Page 56: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第五章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 50 -

元器件焊接以及元器件自身的问题,都可能导致硬件电路板不通或功能不尽人意,

因此在硬件电路板测试时,应遵循一定的测试方法,利用手边的工具进行测试。系

统硬件板的常用测试方法有以下几种:

(1) 万用表的使用:在焊接过程以及后期测试时,使用万用表测量两个引脚之

间是否正常接通或短路,测量引脚的电压是否正常。

(2) 主控芯片写入头:在完成主控芯片及其最小支撑电路的焊接后,通过写入

头对芯片进行程序擦除与写入,以确保芯片的最小工作电路正常。

(3) 示波器的使用:示波器主要用于测量晶振是否正常起振,捕捉引脚电平跳

变,观测引脚的时序转换。

(4) 编写基本的测试程序以及各个硬件构件的驱动程序,测试主控芯片以及各

个功能模块的工作情况。

2) CTHCS 硬件系统测试流程及体会

在完成硬件电路设计后,必须按照上文介绍的测试方法对各个硬件构件的硬件

电路进行测试,以保证硬件电路的可靠性。根据硬件系统各个硬件构件的相互关系,

测试流程如下:

(1) 电源构件的测试:在一块空白的 PCB 上,首先将电源模块的相关元器件焊

接好;然后,使用万用表测量各个引脚的通断情况,以确保每个引脚既不虚焊也不

短路;接着上电,直接利用万用表测量电源的输出接口的电压值,查看是否满足系

统要求。若使用可调电源为 PCB 供电,上电时要注意输入电压值不能超出电压转换

芯片的额定电压值,以防止电压过高击穿电压转换芯片。

(2) 核心构件——微控制器的测试:CTHCS 主控芯片 DG128 的基本工作电路

包括晶振电路、复位电路、电源引脚滤波电路和芯片配置电路。这些基本元器件焊

接完毕后,利用 BDM 调试头来测试 DG128 芯片是否正常工作。若无法通过 BDM

对 DG128 进行正常的擦写,要仔细核对主控芯片支撑电路中电容、电阻等元件的值

是否正确,尤其是晶振电路的电容、电阻。设计时,DG128 采用的是有源晶振,这

些问题可以不用考虑。

由于 CTHCS 选用的是 LQFP 封装的 112 脚的 DG128 芯片,引脚间距较小,手

工焊接时要特别注意不虚焊、不短路。同时,选择助焊剂时要特别注意,助焊剂放

置过久失效再使用,会造成芯片引脚短路;而一些劣质的助焊剂,在低温状态会凝

固,会造成芯片引脚断路。

Page 57: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第五章

- 51 -

(3) 其他外围硬件构件的测试:其他外围硬件构件的测试顺序没有特定要求,

但要按一定的顺序进行测试,即先测试有直接输出现象的构件,再利用验证通过的、

有输出现象的构件测试其他构件。CTHCS 中的串行通信(SCI)就是通过 PC 实现基本

的收发;测试报警模块,通过 MCU 将相应的 I/O 口置不同的值,看是否能使双色

灯显示对应颜色;液晶 LCD 模块同样如此,看是否在液晶上显示指定的字符。当模

块测试不通过时,则首先应该通过测试小灯测试各模块相应的 I/O 口是否焊接正常。

5.3 底层构件化的 CTHCS 底层软件的实现

5.3.1 CTHCS 中底层构件的实现

在硬件系统设计、制作、测试完毕后,应进行各个硬件构件对应底层软件(即驱

动程序)的编写与调试。嵌入式系统中的底层构件与硬件构件相对应,但并不是所有

的硬件构件都对应一个底层构件,因为有些硬件构件不需要驱动就能直接使用,例

如电源硬件构件。本节以 CTHCS 中的 LCD 显示构件为例,介绍 LCD 显示底层构

件的具体实现过程,及其底层驱动软件的设计和封装。

LCD 显示构件符合底层构件结构模型,它由相应的头文件、底层软件、接口

和文件描述组成。其中,头文件的信息封装在 LCD.h 文件中,包含有 LCD 显示所

需要引用的头文件、硬件接线引脚定义、寄存器定义和功能函数声明,参见图 5.8

所示。而对应底层功能软件和文件描述信息封装在 LCD.c 文件内,如图 5.9 所示,

在该文件内部使用的函数和子程序只需要在文件头部声明即可,而不要在 LCD.h 中

对外声明。LCD 的显示刷新操作在定时器构件中实现,此时要注意各个构件封装时

要独立,确保它们之间不交叉。其他系统底层构件情况见表 5.8。

表 5.8 CTHCS 主控系统底层构件简略信息

底层构件名称 头文件名 底层软件名

AD转换 AD.h AD.c

DA转换 DA.h DA.c

PWM模块 PWM.h PWM.c

键盘、开关量模块 Key.h Key.c

定时器模块 Timer.h Vectors12.c

时钟模块 CLK.h CLK.c

Flash模块 Flash.h Flash.c

RS232通信模块 SCI.h SCI.c

LCD显示 LCD.h LCD.c

Page 58: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第五章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 52 -

图 5.8 LCD 显示构件头文件信息 图 5.9 LCD 构件对应底层软件的实现

5.3.2 CTHCS 执行流程分析

CTHCS 通过频繁的检测回风管的温湿度,与系统设定的额定值进行比较,控制

相应的执行机构,主体的执行流程如下:

(1) 系 统 开 机后 开风 阀 直至 其完 全 打开 ,读 取 系统 制冷 / 制 热状 态

(Cold_Hot_Flag);

(2) 延时 30 分钟待环境温湿度信息稳定后,检测回风管湿度 CurrentH(湿度额

定值为 BasicH)。判断 CurrentH 与 BasicH 关系:

CurrentH<BasicH 开启加湿阀,跳转到(2);

CurrentH>BasicH 开启冷水阀,跳转到(2);

CurrentH=BasicH 执行第(3)步;

//LCD.h---- LCD 驱动文件---------------------------

#ifndef LCD_h

#define LCD_h

//--------[头文件引用]---------------------------------

#include "DG128c.H" //MCU 头文件

#include "DataType.h" //数据类型定义头文件

//--------[硬件接线引脚定义]-----------------------

#define LCD_RS 0

#define LCD_RW 1

#define LCD_E 2

#define LCD_BL 3

//--------[寄存器定义]--------------------------------

#define LCD_CtrlPort PTD //定义控制口寄存器

#define LCD_CtrlPortDDR DDRD

#define LCD_DataPort PTB //定义数据口寄存器

#define LCD_DataPortDDR DDRB

//--------[函数声明]------------------------------------

void Lcdinit(void); //Lcd 初始化函数

void LcdShCh(unsigned char *); //显示字符数据

//在指定行上显示或取消矩型边框

void LcdShGrRe(unsigned char,unsigned char);

//显示或取消空心圆型

void LcdShGrCil(unsigned char,unsigned char,

unsigned char,unsigned char,

unsigned char);

/*---------------------------------------------------------------*

*文件描述:本文件包液晶显示相关子程序,分别为: *

*(1)Lcdinit:液晶初始化子程序 *

*(2)LcdShCh:在液晶显示屏上显示字符数据 *

*(3)LcdShGrRe:在指定行上显示或取消矩型边框 *

*(4)LcdShGrCil:在 Lcd 上显示或取消空心圆型 *

*---------------------------------------------------------------*/

//----------------------- [包含头文件] ----------------------

#include "LCD.h"

//----------------------- [内部子程序定义] -----------------

#define delay1600us DelayTimes(4000) //延时>1.6ms

#define delay72us DelayTimes(30) //延时>72us

#define delay40ms DelayTimes(10000) //延时>40ms

//----------------------- [内部函数声明] ---------------------

void DelayTimes(unsigned int); //延时指定时间

void Wtite_Command(unsigned char); //写控制命令

void Wtite_Data(unsigned char); //写数据入

void LcdShGrClr(void); //清图形显示屏

//在 Lcd 指定位置上设置线型 16 个点的显示

void LcdShGr16P(unsigned char,unsigned char,int);

//在 Lcd 指定位置上画 1 个点

void LcdShGr1P(unsigned char,unsigned char);

//----------- [功能函数编写] -------------------

Page 59: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第五章

- 53 -

(3) 检测回风管温度 CurrentT(温度额定值为

BasicT),判断 CurrentT 与 BasicT 的关系:

Cold_Hot_Flag=0(系统为制冷状态 )并且

CurrentT>BasicT,开启冷凝水管电动阀降温除

湿;

Cold_Hot_Flag=1(系统为制热状态 )并且

CurrentT<BasicT,启动电加热;

(4) 温湿度达到额定值后,判断是否到休息

时间:若不是,则跳转执行(2);反之,系统停机。

对应系统流程图见图 5.10。

5.3.3 CTHCS 中功能程序的实现

1. RS485通信协议设计

CTHCS 内主控、辅控系统之间通过 RS485

总线进行通信,主控系统发送给辅控系统的内容

包括辅控机编号、温湿度额定值、系统时间,辅

控系统向主控系统发送的信息有本机编号、温湿

度。

在 RS485 通信过程中,如果发送方和接收方

没有同步就开始接收数据,接收方往往会从发送

方的数据中间开始截取,这样就会出现接收数据

错位的现象。为了有效防止此类问题的出现,本文设定发送/接收数据的格式,在发

送数据流的头尾添加帧头、数据校验位和帧尾。

1) 主控系统发送的帧格式

主控系统发送的数据帧添加帧头“Q”、帧尾“E”、异或校验码。异或校验码

为该校验位前面所有字节相互异或的结果。主控方发送的帧格式如表 5.9 所示。

表 5.9 主控系统发送数据帧的格式

1B 帧头 辅控机编号 温度额定值 湿度额定值 系统时间 校验位 1B 帧尾

“Q” 1B 4B 2B 6B 异或校验 “E”

图 5.10 CTHCS 执行流程图

小于

制冷&大于

开风阀,从 LCD 上

读取制冷/热状态

(Cold_Hot_Flag)

延时 30 分钟,等待环

境温湿度状态稳定

检测回风管湿度

CurrentH 与

BasicH 关系

判断风阀是

否完全开启

开启加湿阀

大于

开启冷水阀

检测回风管温度

开除湿冷水阀

Cold_Hot_Flag状态

&CurrentT<>Basic

T 制热&小于

开启电加热

判断是否

休息时间

开 机

停 机

等于

等于

Page 60: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第五章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 54 -

2) 辅控系统发送的帧格式

辅控系统发送的数据帧添加帧头“A”、帧尾“E”、异或校验码。异或校验码

为该校验位前面所有字节相互异或的结果。辅控机发送的格式如表 5.10 所示。

表 5.10 辅控系统发送数据帧的格式

1B 帧头 辅控机编号 现场温度值 现场湿度值 校验位 1B 帧尾

“A” 1B 4B 2B 异或校验 “E”

本文实例中对温度的要求范围是-40~+140℃,精度为 0.1℃;湿度范围 0~

100%,精度为 0.1%。因此,温湿度数据的发送格式设定见图 5.11,其中用 1 个字

节表示符号位:1 表示正数、0 表示负数;数据采用压缩 BCD 码表示,占用 3 个字

节;用 1 个字节表示数据的小数位。例如+113.6℃处理后待发送的数据为 1 011306 1,

-15.2℃处理后待发送的数据为 0 000015 2,湿度 34.8%处理后的数据为 3408 1。

a 温度数据处理格式 b 湿度数据处理格式

图 5.11 温湿度数据处理格式

2. MCU专用手持编程器

MCU 专用手持编程器(MCU Hand-held Programmer)是一种手持设备,可用来对

以 MCU 为主控芯片的控制器进行参数设定和各种信息查询,它不需和控制器一对

一配套,是监测运行、现场调整参数或维护查询不可缺少的器件。

MCU 专用手持编程器不能独立运行,只能和控制器本体配合才起作用,当设

备各种运行参数,管理信息,保护参数等信息需在运行现场实时显示和调整时,可

选用 MCU 专用手持编程器。如不需要在运行现场作实时显示或维护,检测人员只

需要查看发送到 PC 机上的数据即可。

作为 CTHCS 的辅助设备,MCU 专用手持编程器由控制器(CTHCS)供电,通过

串行通信方式与控制器进行信息交互,具有读取控制器参数信息、修改参数、监视

控制器的执行状态和系统软件测试的功能。MCU 专用手持编程器以 Freescale 公司

的 MC68HC908LJ12[48]为主控芯片,使用标准 9 芯串口与控制器进行信息交互,9

芯串口的具体含义如表 5.11。其中,(1)(4)(7)(8)是为进入主控芯片 MON08

表 5.11 MCU 专用手持编程器串行接口含义表

(1) PTA0 信号线 (2) 串行信息发送线 (3) 串行信息接收线

(4) RST 复位信号线 (5) 地线(GND) (6) 5V 电源线

(7) PTA2 和 PTC1 信号线 (8) IRQ 中断信号线 (9) OSC1 晶振信号线

2B数据 1B小数位数

1B 符号位 3B 数据 1B 小数位数

Page 61: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第五章

- 55 -

方式写入程序时而使用的特殊信号线;维护员写入程序时,需要接(1)和(4)~(9),普

通用户使用时,只需要连接(2)(3)(5)(6)即可。

5.4 嵌入式底层软件的测试及体会

1. 嵌入式底层软件测试方法

由于嵌入式软件的单步调试技术远没有达到普通软件的单步调试技术,而且嵌

入式系统的功能又与硬件系统紧密相关,一些功能无法通过单步调试实现,如 Flash

写入、通信等功能。因此,在进行嵌入式底层软件测试时,本文采用软件打桩技术

进行软件调试。

嵌入式系统软件打桩技术就是在被测程序代码中插入一些函数,用这些函数来

完成数据的生成,并将生成的数据发送给 PC 机显示,或在硬件板上显示相应的物

理现象。通过这种测试过程,测试者可以通过查看 PC 机上显示的数据,清楚函数

执行的结果和程序当前的运行状态;可以通过观测硬件板上的设备,了解各模块的

功能实现情况、出错的程序代码和原因。

2. 嵌入式底层软件测试总结与体会

1) 上电和掉电保护

系统上电和掉电瞬间会产生强大的电磁干扰,此时,系统会有执行程序跑飞的

情况发生。为防止上电或掉电程序跑飞,在系统初始化时应启动自带的低电压禁止

功能(LVI)。当电源 Vdd 降低到规定的最小值以下时,LVI 能让 MCU 保持复位状态

以保护应用系统;还可以在关断电源时出现的瞬时状态下,为系统提供保护。

低电压禁止功能的工作原理是 [49]:MCU 初始化时将 CONFIG 寄存器位

LVIRSTD (LVI 复位禁止位)和 LVIPWRD (LVI 电源禁止位)设为零。上电过程中,

内部的上电复位(POR)电路在振荡器启动前,会保持复位脚为低电平,然后再持续

4096 个时钟周期的低电平。为确保电源电压在复位脚变为高电平之前达到规定的范

围,使复位脚维持更长时间的低电平,本文设计时在复位脚上加一个电容和上拉电

阻。充分延迟其上升时间,以使电源达到规定的最小值。

2) 减小代码跑飞

在程序执行构成中,由于瞬间电压的不稳定或外界强电磁干扰的影响,MCU

可能不受控制地从存储器程序代码区的未用地址处开始执行程序,为此设计时要将

Page 62: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第五章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 56 -

所有未使用的地址都设置为 SWI(Software Interrupt,软中断)指令。由于 SWI 中断矢

量指向一个故障处理程序,因此当不受控地在这些地址中执行代码就会发生软件中

断。也可以用非法的操作码(如$32)填充未被采用的地址,如果它被执行,就将会强

制发生非法操作码复位[49]。

再者,CTHCS 主控芯片内部硬件集成了 COP (Computer Operating Properly,看

门狗),它也可以有效的处理程序跑飞的情况。在系统初始化时,设置 CONFIG1 寄

存器中位 COP (允许 COP)和 COPRS (COP 速度选择),而在一些循环程序中,在任

何地方插入“STA COPCTL”语句给看门狗喂食,设置完毕后系统就具有了 COP 功

能。当系统由于某种原因使软件工作不正常时,COP 计数器就得不到周期地清零,

那么当它溢出时便产生 COP 复位,以防止程序产生不可预料的结果。

此外,主控芯片的 Flash 区域具有写保护功能,通过配置 FLBPR 寄存器(FLASH

Block Protect Register),可以保护 Flash 中选定的地址区域,即系统执行程序代码区

域应该一直被保护,以防止意想不到的代码破坏。

3) 串行异步通信模式下数据的实时性采集

CTHCS 中存在大量的模拟量数据采集,如何确保采集数据的实时性、准确性和

稳定性,是本文研究的重点之一。

CTHCS 需要采集 n(n=29)路模拟量,为提高采集数据的准确性和稳定性,需要

对 n路模拟量的采集与滤波进行“整合”处理[50]。所谓“整合”处理,就是在采集

时顺序对 n 路模拟量进行 m 次数据采集,第一次采集的结果分别放入 2n 个字节地

址中(TLC2543 的 AD 转换精度为 11 位),再顺序对各路进行采集放入另外 2n 个字

节地址中,继续对各路进行采集和存放。采集完毕数据经过中值滤波和均值滤波运

算后,得到各路 AD 转换的一个瞬时有效数据。(注:采集的次数 m,由软件滤波方

法及系统的要求决定)。

而在提高数据采集实时性方面,本文采用一种软硬件结合的解决方案:n 路采

样时间=1 次定时中断+n路数据采集[51]。n 路采用的过程为:

(1) 用定时器 TIMER1 作为中断源,每隔 TM 时间对采样芯片(TLC2543)的片选

引脚输出一个低电平,产生一个沿跳变,并对 n 路输入通道保持电压,为采集信号

做准备。

(2) 在一个定时中断 TM 时间内,MCU 的同步串行外设接口(SPI)的 SPSCK 引脚

输出 N 个脉冲。注意:(1)中片选引脚低电平保持时间 Tcs 要大于 AD 转换时间。

Page 63: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第五章

- 57 -

(3) n路 AD 转换结束,一次性采集 n路数据,并将数据存储等待处理,然后给

片选引脚输出一个高电平。

(4) 重复(2)和(3)步,采集 m 次后,对存储的数据进行滤波处理。

5.5 CTHCS 参数查阅与校正的设计与实现

CTHCS 中存在大量现场环境信息的采集操作,这些信息最终需要汇总发送给

PC 并存储到数据库中,供操作人员查阅;同时,操作人员也通过 PC 机设定每个生

产车间内回风管的温湿度参数额定值。进行温湿度参数设定时,分为“主控系统参

数修改”和“辅控系统参数修改”两部分。“辅控系统参数修改”通过下拉列表框

选择要修改参数的辅控系统,点击“修改”确定修改完成,然后再从下拉列表框中

选择下一个要修改的辅控系统。参数修改完毕后,将所有参数信息进行数据整合通

过“信息写入”发送给主控系统,主控系统接收到这些数据后,保留自身的数据,

同时通过 RS485 总线将辅控系统的信息分别发送给每个辅控系统。图 5.12 显示了正

在进行“参数设置”操作的界面。

图 5.12 环境信息查阅、设定界面

进行信息写入时,由于 MCU 只能接收字节数据,因此需要将数据处理整合后,

才能发送给 MCU,数据处理格式与 MCU 方 RS485 通信数据处理格式相同,详细

介绍见 5.3.3 节。在进行数据写入时,为确保数据传输正确,添加握手信号:首先,

PC 发送握手信号 86 给 MCU,MCU 接收到后判断是 86 则回复 86,反之不处理;

Page 64: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第五章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 58 -

接着,若 PC 方接收到 MCU 回复的 86,再将处理好的数据一次性发送给 MCU,若

接受不到 86 则给出“出错报告”。

5.6 本章小结

本章的主要工作总结如下:

(1) 根据前面提出的硬件构件和底层构件的设计思想和实现方法,设计了一个

基于硬件构件嵌入式测控系统——恒温恒湿控制器系统,简要介绍该系统的功能和

总体设计思想。

(2) 根据硬件构件的开发思想,设计实现系统的硬件构件,完成系统的硬件设

计,并给出相应的测试及体会。

(3) 利用底层构件的思想和实现方法,设计实现系统的底层软件。完成整个系

统的功能程序,并给出软件的测试总结及体会。

通过上述步骤,从应用角度证明了基于硬件构件的嵌入式系统开发的可行性与

合理性,并在一定的实践中证明它的优势和适用性。

Page 65: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 第六章

- 59 -

第六章 总结与展望

现今嵌入式系统规模和复杂性日趋增大,对嵌入式系统的开发提出了更高的要

求,特别是对嵌入式系统的开发效率、安全性、可维护性等方面。因此,嵌入式系

统的开发得到了研究者的极大关注,他们将传统软件开发方法引入到嵌入式系统开

发中来,极大的提高了嵌入式系统的开发效率。本文分析现有嵌入式软件开发方法

的现状,对嵌入式软件的开发方法和特点进行清晰的表述,在前人研究的基础上,

针对嵌入式系统软硬件紧密结合、硬件体系多样性等特点,提出嵌入式硬件构件的

设计方法,使得嵌入式系统硬件开发和底层软件设计也能像软件构件一样,实现硬

件模块的构件化、可移植性和可重用性。

6.1 本文总结

本文的主要工作与创新成果归纳如下:

(1) 分析嵌入式系统的特点、当前嵌入式软件开发的难点、嵌入式软件开发与

通用软件开发的异同,分析比较当前三种嵌入式软件开发方法的特点,从中获得启

示,提出基于硬件构件的嵌入式硬件系统设计方法、基于硬件构件的底层构件技术

和基于底层构件的嵌入式底层软件框架。

(2) 将 MCU 为核心的嵌入式硬件系统作为对象,提出了硬件构件的设计基本原

则。该方法以构件化技术的设计思想为基础,借用面向对象方法的封装方式、重用

性、扩展性等特点,给出基于硬件构件的嵌入式硬件系统设计方法,其中包括硬件

构件的定义、概念模型的构建和实现与应用过程。在此基础上,总结并提出了基于

硬件构件的嵌入式硬件系统电路原理图设计原则和低功耗的设计方法。硬件构件技

术是嵌入式底层软件开发的基础。

(3) 在嵌入式硬件模块构件化设计的基础上,提出基于硬件构件的底层软件的

设计方法,即底层构件的设计基本方法。该方法是硬件构件设计思想在嵌入式底层

软件中的延伸,它具有与硬件构件类似的封装方式和可重用、可扩展的特点。在硬

件构件设计方法的基础上,描述了底层构件的定义、构件模型和实现过程。

(4) 论述嵌入式系统基本特点对嵌入式软件开发的影响,利用底层构件的设计

基本原则,提出了底层构件化的嵌入式底层软件开发框架,并给出设计时的一些基

Page 66: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

第六章 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 60 -

本规则,如命名规则、头文件封装规则、底层软件封装规则等等。给出在不同情况

下,硬件构件和底层构件的重用性与移植性分析。

(5) 在硬件构件和底层构件设计基本原则的基础上,本文实现了一个嵌入式测

控系统应用实例——恒温恒湿控制器系统。在设计过程中,详细阐述硬件构件和底

层构件的实现方法,如硬件构件:核心构件、电源构件、RS485 通信构件等,这些

硬件构件为底层构件的设计提供基本支持,在此基础上完成相应的底层构件的设计,

如 LCD 显示构件、RS485 构件等。通过应用实践证明了基于硬件构件的嵌入式底层

软件开发方法的可行性。

上述研究成果对丰富嵌入式系统开发方法具有重要的理论意义和实际应用价

值。文中提出的基于硬件构件、底层构件的嵌入式设计方法,便于实现嵌入式硬件

及底层软件设计的构件化、可重用与可移植。

6.2 研究展望

通过长时间的研究,作者查阅了大量的嵌入式软/硬件开发方法,对目前嵌入式

开发的背景、研究现状有了一定的认识,并在此基础上结合实践经验,提出了基于

硬件构件的嵌入式底层软件设计方法,但是由于嵌入式系统的软硬件自身仍处于不

断发展中,远没有达到完善的程度,加上资料收集、验证时间短等因素的限制,论

文虽然取得了一定的成果,但还需要对成果进行更加充分的验证,同时,还有许多

方面值得深入研究和探索。下面给出在后续研究中需要进一步探索和改善的工作点:

(1) 探索与硬件构件和底层构件开发有关的工具,开发与之相关的第三方开发

工具、开发平台。

(2) 随着构件种类和数量的增多,构件库管理技术越来越重要,因此需要加强

构件库管理技术的研究。

(3) 由于硬件构件和底层构件都具有重用性和移植性的特点,如何使构件最大

限度的实现重用和移植、方便使用,也是目前急需研究的问题之一。

总之,嵌入式系统的构件化开发技术研究才刚刚起步,基于硬件构件的嵌入式

系统开发更是研究极少。但是,嵌入式系统发展迅速,相关的嵌入式软硬件开发研

究也进行得如火如荼,嵌入式系统开发方法仍然有很大研究空间,其前景十分光明。

Page 67: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 参考文献

- 61 -

参考文献

[1] Jerraya, A. A. Long term trends for embedded system design[C]. Proceedings of the

12th International Conference Mixed Design of Integrated Circuits and Systems,

MIXDES 2005, 2005: 4

[2] Helps C. Richard, Armstrong Janell. Review of current embedded system hardware, OS,

development systems and application domains for instructional design[C]. ASEE

Annual Conference and Exposition, Conference Proceedings, 2007:16

[3] 周航慈, 吴光文. 基于嵌入式实时操作系统的程序设计技术[M]. 北京: 北京航空

航天大学出版社, 2006

[4] 林建民. 嵌入式操作系统技术发展趋势[J]. 计算机工程, 2001, 27(10): 1-4

[5] 王田苗. 嵌入式系统设计与实例开发一基于ARM微处理器与UC/OS-II实时操作

系统[M]. 清华大学出版社, 2002

[6] 李林功, 李华玲. 嵌入式系统的构成与特点[J]. 电测与仪表, 2003, 39(05):29-34

[7] Carbone, J. The embedded software development challenge: standardisation vs.

choice[J]. Embedded System Engineering, 2007, 15(2): 37

[8] Wenzhi Chen, Cheng Xie, Jiaoying Shi. A component-based model integrated

framework for embedded software[C]. Embedded Software and Systems. First

International Conference, ICESS 2004. Revised Selected Papers, 2005 : 563-569

[9] 熊光泽, 詹瑾瑜. 嵌入式系统软/硬件协同设计技术综述[J]. 计算机应用, 2006,

26(04): 757-760

[10] 徐文明. 嵌入式系统结构特点[J]. 电测与仪表, 2004, 41(08): 48-49

[11] Anon. Proceedings 2006 Australian Software Engineering Conference[C].

Proceedings of the Australian Software Engineering Conference, ASWEC, 2006: 432

[12] Suzuki. F., Kondo. K., Aoki. R., Iwasaki. Y. Software engineering for embedded

system integration[J]. Mitsubishi Denki Giho, 1993, 67(9): 38-43

[13] Yang FQ, Mei H, Lu J, Jin Z. Some discussion on the development of software

technology[J]. Acta Electronica Sinica, 2002, (30)

14] Zhang XX. Encyclopedia of Computer Science and Technology[M]. Beijing: Tsinghua

University Press, 1998

[15] Crnkovic, I. Component-based software engineering for embedded systems[C]. 27th

International Conference on Software Engineering, 2005: 712-713

[16] 郭兵, 沈艳, 林永宏等. SoC技术原理与应用[M]. 北京: 清华大学出版社, 2006

[17] Ashworth, Caroline M. Structured systems analysis and design method(SSADM)[J].

Information and Software Technology, 1988, 30(03): 153-163

Page 68: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

参考文献 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 62 -

[18] 林华, 夏耘. 面向对象与结构化[J]. 计算机工程, 2000, 26(07): 89-90

[19] 成朋, 李代平, 杨文伟. 结构化方法与面向对象方法的可结合性[J]. 广东工业大

学学报, 2006, 23(03): 102-107

[20] 缪淮扣, 高晓雷, 李刚. 结构化方法、面向对象方法和形式方法的比较与结合[J].

计算机工程与科学, 1999, 21(04): 27-31

[21] 杨勇, 王为民. MCS-51系列单片机结构化程序设计探讨[J]. 电子技术应用, 2007,

(07): 24-26

[22] 古幼鹏. 嵌入式实时软件的构件化开发技术研究[D]. 电子科技大学, 2005

[23] Yamane, S. Object-oriented method for real-time systems based on timed automaton

[J]. Proceedings of WORDS'96. The Second Workshop on Object-Oriented Real-

Time Dependable Systems, 1996: 210-217

[24] 张玲, 丁莉, 李娜. 软件工程[M]. 北京: 清华大学出版社, 2005

[25] 陈飞, 陈启安. 面向对象的嵌入式系统开发技术[J]. 单片机与嵌入式系统应用,

2005, (09): 15-18

[26] 袁明, 张连芳, 董淼, 赵宇, 郑武. 面向对象技术在嵌入式开发中的应用[J]. 计

算机应用研究, 2003, (02): 48-50

[27] 顿海强, 庄雷. 面向对象与软件复用技术研究[J]. 计算机应用研究, 2002, (03):

42-44

[28] McIlroy.M.D. Mass-produced software components[C]. Proc. NATO Conf. on

Software Engineering, Garmisch, 1968, Germany:Springer-Verlag

[29] NATO Standard for Development of Reusable Software[C]. NATO Communications

and Information Systems Agency Components, 1991

[30] 6" International Workshop on Component-Oriented Programming[C]. http:// ecoop

2001.inf. elte.hu/workshop/WCOP-ws. Html, 2001

[31] Kung-Kiu Lau, Zheng Wang. Software component models[C]. IEEE Transactions on

Software Engineering, 2007, 33(10):709-724

[32] Jahnke, J.H, McNair, A, Cockburn, J. Component-based engineering of distributed

embedded control software[C]. Component-Based Software Development for

Embedded Systems, 2006: 296-319

[33] G. pour, M. Griss. Making the Transition to Component–Based Enterprise Software

Development: Overcoming the Obstacles-Patters for Success[C]. Proceedings of

Technology of Object-oriented Languages and systems,1999: 419-419

[34] 江峰, 陈文智, 吴朝晖. Liquid——构件化嵌入式操作系统[J]. 计算机工程,2005,

31(04): 77-78

[35] 於志文, 周兴社, 李志刚, 施笑安. 基于嵌入软构件的开发技术研究[J]. 计算机

应用研究, 2003, (04): 12-14

[36] 王宜怀, 刘晓升. 嵌入式系统-使用HCS12微控制器的设计与应用[M]. 北京:

Page 69: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 参考文献

- 63 -

北京航空航天大学出版社, 2008

[37] 怯肇乾.嵌入式系统硬件体系设计[M]. 北京航空航天大学出版社, 2007.7

[38] John Catsoulis. Desgining Embedded Hardware[M]. O’Reilly Media, Inc. 2002

[39] Sakurai, T. Low power digital circuit design[C]. Proceedings of the 30th European

Solid-State Circuits Conference, 2004: 11-18

[40] Roy, K, Johnson, M.C. Software design for low power[C]. Low Power Design in

Deep Submicron Electronics. Proceedings of the NATO Advanced Study Institute,

1997: 433-460

[41] Tecpanecatl-Xihuitl, J.L., Aguilar-Ponce, R., Kumar, A., Bayoumi, M.A. Design of a

power-efficient interleaved CIC architecture for software defined radio receivers[J].

2005 48th IEEE International Midwest Symposium on Circuits and System, 2005:

1831-1834

[42] 刘刚, 邵志清, 肖立中. 基于组件的嵌入式软件开发中的几个关键问题[J]. 计算

机应用研究, 2007, 24(03): 62-65

[43] 许晨辉. 嵌入式软构件技术的研究与应用[D]. 西北工业大学, 2003

[44] 王宜怀, 刘晓升. 嵌入式技术基础与实践[M]. 北京: 清华大学出版社, 2007

[45] 魏仁选, 周祖德, 姜德生. 软件重用与移植的比较研究[J]. 计算机工程与应用,

2002, (21):42-45

[46] Freescale.MC9SDG128/DJ128/DT128 Device User Guide Rev1[EB/OL]. http://www.

freescale .com/, 2002.

[47] Motorola.MC68HC908GP32 HCMOS Micro-controller Unit Technical Data[EB/OL].

http://www.freescale.com, 1999

[48] MC68HC908LJ12 Technical Data Data[EB/OL]. http://www.freescale.com, 2002-02-

02 /2005-01-10.

[49] 丁俊香, 钱玮, 汪方斌. MC68HC08在手持编程器中的应用[J]. 仪表技术, 2006,

(04): 54-56

[50] 王宜怀, 俞伟清, 林国永. 串行异步通信模式下数据采集系统实时性的研究[J].

微计算机应用, 2001, 22(01): 35-39

[51] 王建萍, 费跃农. 嵌入式高速数据采集系统的实时性研究[J]. 电子测量与仪器学

报, 2006, 20(06): 72-75

Page 70: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

附 录 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 64 -

附录 A CTHCS 布局结构图

Page 71: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 附 录

- 65 -

附录 B CHTCS 输入/输出信号分析表

B.1 CHTCS 输入量分析表(模拟量)

编号 模拟量名称 命名 来源 数值范围 分辨率要求 备注

1 室外温度 ADT1 室外

①0-10V

②0-20mA

③0-5V(见注释)

Ⅰ温度采样精

度 0.5℃,显示

分 辨 率 要 求

1-5℃,默认为

2℃

①默认 120S 采集

一次

②温度设定范围

为-40℃-140℃

2 新风管温度 ADT2 新风管

3 回风管温度 ADT3 回风管

4 送风管温度 ADT4 送风管

5 除湿表冷器温度 ADT5 除湿表冷器

6 除湿加热器温度 ADT6 除湿加热器

7 热敏电阻 1 ADT7 新风除湿表

冷器附近 0-10kΩ

要自己构建采集

电路 8 热敏电阻 2 ADT8

新风除湿加

热器附近

9 室外湿度 ADW1 室外

①0-10V

②0-20mA

③0-5V(见注释)

湿度采样精度

0.5%,显示分

辨 率 要 求

1%-20%,默认

10%

①默认 120s 采集

一次

②湿度设定范围

为 0-100%

10 新风管湿度 ADW2 新风管

11 回风管湿度 ADW3 回风管

12 送风管湿度 ADW4 送风管

13 新风管(下)风速 ADF1 新风管(下) 风速采样精度

0.5%,显示分

辨 率 要 求 ±

0%-± 100%,

默认 0%

①显示的为平均

风量

②风速设定范围

为 0-30m/s

14 新风管(上)风速 ADF2 新风管(上)

15 送风管风速 ADF3 送风管

16 排风管风速 ADF4 排风管

17 回风管风速 ADF5 回风管

18 回风管 CO2 ADC1 回风管 0-2000ppm

19 空气压力 ADP 回风管

①0-10V

②0-20mA

③0-5V(见注释)

20 送风机电流 SWA 送风管 0-999A

21 送风机电压 SWV 送风管 0-999V

22 回风机电流 RWA 回风管 0-999A

23 回风机电压 RWV 回风管 0-999V

24 回水管温度 ADT9 回水管

同Ⅰ

① 传 感 器 类 型

Pt100、Pt1000K

②温度设定范围

为-40℃-140℃

25 送水管温度 ADT10 送水管

26 回水管流量 ADT11 回水管

27 送水管流量 ADT12 送水管

28 回水管压力 ADY13 回水管 精度要求不高 0-99Pa

29 送水管压力 ADY14 送水管

注释 每种传感器部件都有 3 种输出方式,因此在硬件布板时要有 3 种输入方式,至于用那种输入方式,有硬件

跳线来实现。

Page 72: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

附 录 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 66 -

B.2 CHTCS 输入量分析表(开关量)

编号 开关量名称 命名 来源 备注

1 初效压差开关(下) IY1 初效过滤器(下)

① 1 路 I/0 输入,构成回路

② 在 PC 上显示状态

2 初效压差开关(上) IY2 初效过滤器(上)

3 中效压差开关 IY3 中效过滤器

4 防火阀 1 ID1 送风管

5 防火阀 2 ID2 回风管

6 键盘 Ikey 3*3 的小键盘 需要 6 个 I/O 口

B.3 CHTCS 输出量分析表(开关量)

编号 开关量名称 命名 控制对象 备注

1 LCD 模块 OLCD1 主显示模块的 LCD 240*128 像素

2 运行状态

指示灯 OLED1 运行状态指示灯

①需要双色 LED 显示

②一路 I/O 控制 LED

绿:正常;红:故障(接蜂鸣器)

B.4 CHTCS 通信量分析表

编号 通信量 通信的数据

1 发送 PC 机数据 温湿度、压差开关状态、风量,电动机等环境信息

2 接收 PC 机数据 开关机、回风的温湿度设定、除湿机的温度(冷、热)

3 串行接收 接收辅控系统的模拟量和开关量数据

Page 73: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 附 录

- 67 -

B.5 CHTCS 输出量分析表(模拟量)

编号 模拟量名称 命名 控制对象 备注

1 热水阀 1 DAM1 加热器(蒸气或电)

①需 DA 转换芯片

②可以输出开关量,模拟量和

浮点量

新风机、送风机、回风机:

①打开电源 24V 的开关

②双三极管控制 /三极管和继电

器控制

③风机的过电流保护有一个手

动启动的问题

2 热水阀 2 DAM1 加热器(蒸气或电)

3 冷水阀 1 DAM2 表冷器

4 冷水阀 2 DAM3 表冷器

5 加湿阀 1 DAM4 加湿器

6 加湿阀 2 DAM5 加湿器

7 除湿加热阀 1 DAM5 除湿加热器

8 除湿加热阀 2 DAM5 除湿加热器

9 除湿冷水阀 1 DAM6 除湿表冷器

10 除湿冷水阀 2 DAM6 除湿表冷器

11 排风阀 1 DAFF1 排风阀

12 排风阀 2 DAFF2 排风阀

13 送风阀 1 DAFF3 送风阀

14 送风阀 2 DAFF4 送风阀

15 新风阀 11 DAFF5 新风阀

16 新风阀 12 DAFF6 新风阀

17 新风阀 21 DAFF7 新风阀

18 新风阀 22 DAFF8 除湿新风阀

19 回风阀 1 DAFF9 回风阀

20 回风阀 2 DAFF10 回风阀

21 除湿新风机 DAFJ1 除湿新风阀

①需 DA 芯片

②可以输出开关量,模拟量和

浮点量

22 送风机 DAFJ2 送风阀

23 回风机 DAFJ3 回风阀

24 压差平衡阀 1 DAM11 压差平衡阀

25 压差平衡阀 2 DAM12 压差平衡阀

26 冷却塔风机 DAFJ4 冷却风机

27 冷却泵 DAM13 冷却泵

28 冷却泵(备) DAM14 冷却泵

注: 模拟量的输出值有两种情况,分别为 0-10V,0-20mA。

Page 74: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

附 录 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 68 -

附录 C CHTCS 芯片引脚分配表

C.1 主控系统 DG128 引脚分配表

编号 名称 I/O MCU 引脚 目标对象 说明

1 键盘 I PAD0、PAD1 6 个按键 使用 AD 模块的通道 0 和通道 1

实现键盘功能

2 开关量

输入 I PAD2、PAD3

5 个开关量:初效压差

开关(上/下)、中效压差

开关、防火阀 1/2

5 个机械开关,构成回路后通过

AD 模块的通道 2 和通道 3 实现

开关量采集功能

3

模拟量

输入

AD 采集

I PM3/SS0 DG128 PM3/SS0 SS0 接高电平,表示该 MCU 为

主 MCU

I PP0/MISO1 ADIC.DATA

OUTPUT ADIC=TLC2543

使用 SPI0 与 ADIC 通信

O

PM4/MOSI0 ADIC.DATA INPUT

PM5/SCK0 ADIC.I/O CLOCK

PT0 第一片的 CS 第一片 2543 的片选

PT1 第二片的 CS 第二片 2543 的片选

PT2 第三片的 CS 第三片 2543 的片选

4

模拟量

输出

DA 转换

I PP3/SS1 DG128 PP3/SS1 SS1 接高电平,表示该 MCU 为

主 MCU

O

PP1/MOSI1 DAIC.DIN DAIC=TLV5608

使用 SPI1 与 DAIC 通信 PP2/SCK11 DAIC.SCLK

PT3 DAIC.FS 第一片 5608 的片选

PT4 DAIC.FS 第二片 5608 的片选

PT5 DAIC.FS 第三片 5608 的片选

PT6 DAIC.FS 第四片 5608 的片选

5 LCD O

PB7~PB0 LCD.DB0~DB7 LCD 的 8 位输入数据

PA0 LCD.W/R LCD 的 3 个控制信号

(LCD 为 240*128 像素) PA1 LCD. RD

PA3 LCD.C/D

6 运行

指示灯 O PA7 红绿双色 LED

正常运行亮绿色,故障亮红色并

且蜂鸣器响

7 RS485 通

信 SCI1

O PS3/RxD1 RS485Tx 与辅控系统的通信,使用 RS485

信号 I PS2/TxD1 RS485Rx

8 RS232 通

信 SCI0

O PS1/RxD0 RS232Tx 与主控系统的通信,使用 RS232

信号 I PS0/TxD0 RS232Rx

9 时钟

模块

I PJ6/SDA 8563SDA 记录时钟,通过 I2C 与 MCU 通

信 O PJ7/SCL 8563SCL

Page 75: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 附 录

- 69 -

C.2 辅控系统 GP32 引脚分配表

编号 名称 I/O MCU 引脚 目标对象 说明

1 开关量

输入 I

PTA0 初效压差开关(下)IY1

机械开关,需 1 路 I/0 输入,

构成回路 PTA1 中效压差开关 IY3

PTA2 防火阀 1- ID1

PTA3 防火阀 2- ID2

2 键盘 I PTA4~PTA7 控制 LCD 的键盘 2*2 键盘,每个键接一个 IO

2

模拟量

输入

AD 采集

I PTD0/SS GP32. PTD0/SS SS 接高电平,表示该MCU 为

主 MCU

I PTD1/MISO ADIC.DATAOUT

ADIC=TLC2543

O

PTD2/MOSI ADIC.DATA INPUT

PTD3/SPSCK ADIC.I/O CLOCK

PTC0 第一片的 CS 第一片 2543 的片选

PTC1 第二片的 CS 第二片 2543 的片选

3

模拟量

输出

DA 转换

O

PTD2/MOSI DAIC.DIN DAIC=TLV5608IDW

PTD3/SPSCK DAIC.SCLK

PTC2 DAIC.FS1 第一片 5608 的片选

PTC3 DAIC.FS2 第二片 5608 的片选

4 LCD O

PTB0~PTB7 LCD.DB0~DB7 LCD 的 8 位输入数据

PTD4 LCD.RS

LCD 的控制信号

(LCD 为 128*64 像素)

PTD5 LCD.R/W

PTD6 LCD.E

PTD7 LCD.K

5 串行通信 O PTE0 TxD 与主控系统的通信,使用

RS485 信号 I PTE1 RxD

6 运行

指示灯 O PTC4 LED1

正常运行亮绿色,故障亮红色

并且蜂鸣器响

Page 76: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

附 录 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 70 -

附录 D CTHCS 底层构件列表

模块名称 文件名 函数列表

串行通信

模块 SCI.c

void SCIInit(void)

INT8U SCIRe1(INT8U *p)

INT8U SCIReN(INT8U n,INT8U ch[])

void SCISend1(INT8U o)

void SCISendN(INT8U n,INT8U ch[])

//SCI 初始化

//接收 1 字节

//接收 n 字节

//发送 1 字节

//发送 n 字节

AD 转换 ADC.c

void AD_SPIInit(void) //SPI0 初始化

void TLC2543(INT16U cs,INT8U channel,INT8U *buf) //AD 转换程序

void ADC(INT16U *ADValue) //AD 转换并求平均值(1 路)子程序

DA 转换 DAC.c

void DA_SPIInit(void)

void TLV5608Init(void)

void TLV5608Z(INT16U channel, INT16U buf)

//SPI 初始化程序

//TLV5608 初始化

//DA 转换子程序

键盘

开关量模块 Key.c

void KeyInput_Init(void) //开关量输入初始化

void KeyInput_Judge(INT8U *SwInFlag) //读取开关量/键盘输入口存入内存中

LCD 模块 Lcd.c

void Lcdinit(void); //LCD 初始化

void LcdShCh(unsigned char *) //在 LCD 显示屏上显示字符数据

//在 LCD 的指定行上显示/取消矩型边框

void LcdShGrRe(unsigned char,unsigned char)

//在 LCD 上显示或取消空心圆型

void LcdShGrCil(unsigned char,unsigned char,unsigned char,unsigned char,

unsigned char)

时钟模块 CLK.c

//向时钟芯片读取时分秒

INT8U ReadTime1(INT8U RegAddr,INT8U *buff,INT8U count)

//向时钟芯片设置时分秒

INT8U SetTime1(INT8U RegAddr,INT8U *buff,INT8U count)

Flash 模块 Flash.c void EarseFlash(unsigned int addr)

void WriteFlash(unsigned int addr)

//擦除指定 flash 区

//向 addr 指向的 flash 区写入数据

Page 77: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 附 录

- 71 -

附录 E CTHCS 实物图

Page 78: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

攻读学位期间公开发表的论文及参与的鉴定项目 基于硬件构件的嵌入式底层软件开发方法研究及其应用

- 72 -

攻读学位期间公开发表的论文及参与的鉴定项目

[1] 荐红梅,王宜怀,张琴,电动叉车蓄电池电量测量的设计,现代电子技术,

2008 (已录用)

[2] 荐红梅,恒温恒湿控制器系统,苏州大学第九批大学生课外学术科研基金资

助项目二等奖,项目编号 KY2006131B。

[3] 参与王宜怀,刘晓升等编著的《嵌入式应用技术基础教程》的书稿整理及调

试工作,北京:清华大学出版社,2007 年 11 月。

[4] 参与王宜怀,刘晓升等编著的《嵌入式系统-使用 HCS12 微控制器的设计与

应用》中第 5、8 章的撰写,北京:北京航空航天大学出版社,2008 年 3 月。

Page 79: 第一章 绪 论 - suda.edu.cnsumcu.suda.edu.cn/_upload/article/files/f8/b6/8a... · 件构件的底层构件的定义和概念模型,详细阐述它们的实现和应用过程,在此基础

基于硬件构件的嵌入式底层软件开发方法研究及其应用 致 谢

- 73 -

致 谢

在论文完成之际,谨向研究生学习期间为我倾注无限心血的老师和提供大量帮助

的同学和朋友表示最诚挚的感谢。

本文是在导师王宜怀教授的悉心指导下完成的。导师渊博的学识、严谨的治学态

度和忘我的工作精神深深感染着我,使我学会了做学问、做事和做人的重要态度,掌

握了独立思考问题、分析问题和解决问题的方法,这些将使我终身受益。在此,向导

师及其夫人张建英老师表示最诚挚的谢意。

感谢刘晓升老师,他娴熟的操作技能和对问题独到的见解使我受益匪浅,每次和

他讨论,都会有新的收获,在这三年的研究生生活和相关的项目开发中给了我无私的

帮助,让我在专业技术领域学到了好多。

感谢实验室内和我一起度过美好研究生生活的所有同学,感谢他们对我提供的无

私的帮助和关心。

衷心感谢我的家人在我漫长而艰辛的求学生涯中,对我毫无保留的关心、支持和

鼓励,使得我能够全身心的投入的学习中。

最后,诚挚的感谢为评阅本文而付出辛勤劳动的各位专家和学者!