第1章 计算机硬件基础

1.1 CPU中的相关组件

●程序计数器

是用于存放下一条指令所在单元的地址的地方。在程序执行前,必须将程序的起始地址,即程序的一条指令所在的内存单元地址送入程序计数器,当执行指令时,CPU将自动修改程序计数器的内容,即每执行一条指令程序计数器增加一个量,使其指向下一个待指向的指令。程序的转移等操作也是通过该寄存器来实现的。

●地址寄存器

一般用来保存当前CPU所访问的内存单元的地址,以方便对内存的读写操作。

●累加器

是专门存放算术或逻辑运算的一个操作数和运算结果的寄存器

●ALU

是CPU的执行单元,主要负责运算工作。

●指令寄存器

一般用来保存当前正在执行的一条指令。

●数据寄存器

主要是用来保存操作数和运算结果等信息的,其目的是为了节省读取操作数所需占用总线和访问存储器的时间。

●地址寄存器

一般用来保存当前CPU所访问的内存单元的地址,以方便对内存的读写操作。

1.2 CPU性能指标

●主频

即CPU的工作频率,单位是Hz(赫兹)。

●字长

即CPU的数据总线一次能同时处理数据的位数。

●CPU缓存(Cache Memory)

是位于CPU与内存之间的临时存储器。

●核心数量

是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。

1.3 输入输出

●内存与接口地址独立编制方式

内存地址和接口地址完全独立的两个地址空间,它们是完全独立的并且是相互隔离的。访问数据时所使用的指令也完全不同,用于接口的指令只用于接口读写,其余的指令全都是用于内存的。因此,在编程序或读程序中很容易使用和辨认。

●内存与接口统一编址方法

内存地址和接口地址统一在一个公共的地址空间里,即内存单元和接口共用地址空间。在这些地址空间里划出一部分地址分配给接口使用,其余地址归内存单元使用。分配给内存的地址区间只能用于内存单元,接口绝不允许使用。同样,分配给接口的地区间内存单元也绝不能再用。这种编址方法的优点是原则上用于内存的指令全部都可以用于接口,其中一部分分配给接口使用,剩余的为内存所用,这经常会导致内存地址不连续。

●直接程序控制(无条件传送/程序查询方式)

无条件传送:

在此情况下,外设总是准备好的,它可以无条件地随时接收CPU发来的输出数据,也能够无条件地随时向CPU提供需要输入的数据。

程序查询方式:

在这种方式下,利用查询方式进行输入输出,就是通过CPU执行程序查询外设的状态,判断外设是否准备好接收数据或准备好了向CPU输入的数据。

●中断方式

由程序控制I/O的方法,其主要缺点在于CPU必须等待I/O系统完成数据传输任务,在此期间CPU需要定期地查询I/O系统的恶状态,以确认传输是否完成。因此整个系统的性能严重下降。

●DMA

是指数据在内存与I/O设备间的直接成块传送,即在内存与I/O设备间传送一个数据块的过程中,不需要CPU的任何干涉,只需要CPU在过程开始启动(即向设备发出“传送一块数据”的命令)与过程结束(CPU通过轮询或中断得知过程是否结束和下次操作是否准备就绪)时的处理。实际操作由DMA硬件直接执行完成,CPU在此传送过程中做别的事情。

1.4 寻址方式

●立即寻址

是一种特殊的寻址方式,指令中在操作码字段后面的部分不是通常意义上的操作数地址,而是操作数本身,也就是说数据就包含在指令中,只要取出指令,也就取出了可以立即使用的操作数。

●直接寻址

在直接寻址中,指令中地址码字段给出的地址A就是操作数的有效地址,即形式地址等于有效地址。

●间接寻址

间接寻址意味着指令中给出的地址A不是操作数的地址,而是存放操作数地址的主存单元的地址,简称操作数地址的地址。

●寄存器寻址

寄存器寻址指令的地址码部分给出了某一个通用寄存器的编号Ri,这个指定的寄存器中存放着操作数。

●寄存器间接寻址

在寄存器间接寻址方式中,寄存器内存放的是操作数的地址,而不是操作数本身,即操作数是通过寄存器间接得到的。

第2章嵌入式系统软件

2.1嵌入式软件系统特点

●规模较小。

●开发难度大。

硬件资源有限;嵌入式软件一般涉及到底层软件的开发,需要软、硬件基础;开发环境和运行环境不同。

●实时性和可靠性要求高。 如火箭飞行控制、核电站

●要求固化存储

2.2嵌入式软件体系结构

●设备驱动层

也叫板级支持包 BSP:包含了嵌入式系统中所有与硬件相关的代码。大多数的嵌入式硬件设备都需要某种类型软件的初始化和管理。

这部分工作由设备驱动层来完成的,它负责直接与硬件打交道,对硬件进行管理和控制,为上层软件提供所需的驱动支持,类似PC系统中的BIOS和驱动程序。

●操作系统层

嵌入式操作系统是工作在嵌入式环境中的操作系统。可以从2个方面来描述嵌入操作系统的功能:

(1)从软件开发的角度,可以把EOS看成是一种扩展机或虚拟机。将底层的硬件细节封装起来,为运行在它上面的软件提供了一个抽象的编程接口,即操作系统对外提供的系统调用函数。

(2)从系统管理的角度,可以把EOS看成是系统资源的管理者,负责管理系统当中的各种软硬件资源。

按软件体系结构,可以分为:

(1)单体结构

单体结构(monolithic):是一种常见的组织结构。中间件和设备驱动程序通常集成在系统内核中。系统只有一个可执行文件,包含所有功能组件,功能模块可相互调用。如Linux、Jbed RTOS、、PDOS。

优点:性能较好、系统各模块间可相互调用、通信开销较小。

缺点:操作系统体积庞大、高度集成、相互关联;系统裁剪、修改和调试都较困难。

(2)分层结构

操作系统被划分为若干个层次(0~N),各个层次之间的调用关系是单向的,即某一层次上的代码只能调用比它低层的代码。只有一个大的可执行文件,包含有设备驱动程序和中间件。

优点:系统的开发和维护较为简;要替换系统中的某一层时,不会影响到其他的层次。

缺点:但每个层次都要提供一组API接口函数,带来额外的开销。

(3)微内核结构

也称客户/服务(client/server)结构。在内核中,把操作系统的大部分功能都剥离出去,只保留最核心的功能单元(如进程管理、存储管理)。如:OS-9、C Executive、VxWorks和QNX等。

优点:内核非常小;易于扩展、调试方便;安全性更高;可移植性好。

缺点:通过微内核构造和发送信息、接受应答并解码所花费的时间比进行一次系统调用的时间多;很大程度取决于微内核的大小和功能;客户单元和服务器单元的内存地址空间是相互独立,在切换时候,会增加额外开销。

●中间件层

在操作系统内核、设备驱动程序和应用软件之外的所有系统软件。把原本属于应用软件层的一些通用的功能模块抽取出来, 形成独立的一层软件,从而为运行在它上面的那些应用软件提供一个灵活、 安全、移植性好、相互通信、协同工作的平台。

第3章 操作系统知识

3.1进程

●进程

是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。它由程序块、进程控制块(PCB)和数据块三部分组成。

●进程与程序的区别与联系

①进程是程序的一次执行过程,没有程序就没有进程;

②程序是完成某个特定功能的一系列程序语句的集合,只要不被破坏,它就永远存在;

③程序是一个静态的概念,而进程是一个动态的概念,它由创建而产生,完成任务后因撤销而消亡;

④进程是系统进行资源分配和调度的独立单位,而程序不是。

●三态描述

运行态:占有处理器正在运行。

就绪态:指具备运行条件,等待系统分配处理器以便运行。

等待态:又称为阻塞态或睡眠态,指不具备运行条件,正在等待某个事件的完成。

●三态之间的转换

运行态——等待态:等待使用资源,如等待外设传输,等待人工干预。

等待态——就绪态:资源得到满足,如外设传输结束,人工干预完成。

运行态——就绪态:运行时间片到,或者出现更高优先级进程。

就绪态——运行态:CPU空闲时选择一个就绪进程。

3.2进程控制相关概念

●进程控制

是对系统中所有进程从创建到消亡的全过程实施有效的控制;由操作系统内核中的原语实现。

●原语

是指由若干条机器指令组成的,用于完成特定功能的程序段;原语的特点是在执行时不能被分割,即原子操作要么都做,要么都不做。

●同步/互斥

同步:是合作进程间的直接制约问题。

互斥:是申请临界资源进程间的间接制约问题。

临界资源:指一次只能供一个进程使用的资源。

临界区:是进程中对临界资源实施操作的那段程序。

3.3信号量机制

●信号量

是一个整型变量,根据控制对象的不同被赋予不同的值。可分为公用信号量和私用信号量两类。

●公用信号量

实现进程间的互斥,初始值为1或资源的数目。

●私用信号量

实现进程间的同步,初始值为0或某个正整数。

●信号量S的物理意义

S>=0表示某资源的可用数;S<0,则其绝对值表示阻塞队列中等待该资源的进程数。

●PV操作

是实现进程同步和互斥的常用方法,P操作和V操作是低级通信原语,在执行期间不可分割;其中P操作表示申请一个资源,V操作表示释放一个资源。

P操作的定义:

S:=S-1,若S>=0,则执行P操作的进程继续执行;若S<0,则将该进程设为阻塞状态(因为无可用资源),并将其插入阻塞队列。

V操作的定义:

S:=S+1,若S>0,则执行V操作的进程继续执行;若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程会继续执行。

3.4死锁

●死锁

是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。

●银行家算法

对于进程发出的每一个系统可以满足的资源请求命令加以检测,如果发现分配资源后,系统进入不安全状态,则不予分配;若分配资源后系统仍处于安全状态,则实施分配。

●安全状态

是指系统能按某种顺序如:<P1,P2,...Pn>来为每个进程分配其所

需资源,直至最大需求,使每个进程都可顺序完成。通常称<P1,P2,...Pn>序列为安全序列。否则称系统处于不安全状态。

●保证系统不发生死锁的最小资源数计算

证系统不发生死锁的最小资源数,符合以下两个条件:

(1)给每个进程都分配所需资源最大数少一个资源。

(2)在步骤1基础上,如果系统还剩一个剩余资源,则系统不会发生死锁。

3.5任务的调度

调度的方式

(1)不可抢占调度方式(Non-Preemptive )

如果一个任务被调度程序选中,就会一直运行下去,直到它因为某种原因(如I/O操作或任务间的同步)被阻塞了 ,或者它主动地交出了CPU的使用权。

(2)可抢占调度方式(Preemptive )

当一个任务正在运行的时候,调度程序可以去打断它,并安排其他的任务去运行。

●优先级反转

高优先级任务需要等待低优先级任务释放资源,而低优先级任务又正在等待中等优先级任务的现象。

●实时系统调度

(1)单调速率调度算法:是一种静态优先级调度算法,是最常用的一种确定任务优先级的算法。

任务的优先级与它的周期表现为单调函数的关系,任务的周期越短,优先级越高, 任务的周期越长,优先级越低。

RMS假定任务是相互独立的、 周期性的、任务能够在任何位置被抢占,而实际中的系统,任务之间需要进行通信和同步, 这是一种理想的调度方法,实际中并不一定存在。

(2)最早期限优先调度算法:动态优先级调度算法,是目前性能较好的一种调度算法。

根据任务的截止时间来确定其优先级,对于时间限期最近的任务,分配最高的优先级。

当有一个新的任务处于就绪状态时,各个任务的优先级就有可能要进行调整,选择截止时间最近的任务去运行。

任务间通信

任务之间为了协调工作,需要相互交换数据和控制信息。任务之间的通信可以分为两种类型:

(1)低级通信:只能传递状态和整数值等控制信息,例如信号量机制、异步信号机制

(2)高级通信: 能够传输任意数量的数据, 主要有三类: 共享内存、 消息传递和管道。

第4章 网络基础知识

4.1 OSI七层模型

●物理层

提供为建立、维护和拆除物理链路所需的机械、电气、功能和规程的特性;提供有关在传输介质上传输非结构的位流及物理链路故障检测指示。

单位:位,Bit。

相关设备:集线器(HUB),中继器。

●数据链路层

负责在两个相邻节点间的线路上无差错地传送以帧为单位的数据,并进行流量控制。

单位:帧。

相关设备:网桥,交换机。

●网络层

为传输层实体提供端到端的交换网络数据传送功能,使得传输层拜托路由选择、交换方式和拥挤控制等网络传输细节;可以为传输层实体建立、维持和拆除一条或多条通信路径;对网络传输中发生的不可恢复的差错予以报告。

单位:包。

相关设备:路由器,三层交换机。

●传输层

为会话层实体提供透明、可靠的数据传输服务,保证端到端的数据完整性;选择网络层能提供最适宜的服务;提供建立、维护和拆除传输连接功能。

单位:段。

●会话层

为彼此合作的表示层实体提供建立、维护和结束会话连接的功能;完成通信进程的逻辑名字与物理名字间的对应;提供会话管理服务。

●表示层

为应用层进程提供解释所交换信息含义的一组服务,即将欲交换的数据从适合于某一用户的抽象语法转换为适合于OSI系统内部使用的传送语法。

●应用层

提供OSI用户服务,即确定进程之间通信的性质,以满足用户需要以及提供网络与用户应用软件之间的接口服务。

4.2 TCP与UDP的区别

●TCP

面向连接;建立连接必须经过3次握手;连接断开:4次断开;传输可靠性:可靠;适合传输大量数据。

●UDP

无连接;传输可靠性:不可靠;适合传输少量数据;通信开销小。

第5章 安全性基础知识

5.1 网络攻击的相关概念

●冒充

就是一个实体假装成一个不同的实体。常与主动攻击形式一起使用,特别是消息的重演与篡改。

●重演

当一个消息或部分消息为了产生非授权效果而被重复时,出现重演。

●消息篡改

数据所传送的内容被改变而未被发觉,并导致非授权后果。

●服务拒绝

当一个实体不能执行它的正常功能,或它的动作妨碍了别的实体执行它们的正常功能的时候,便发生服务拒绝。

5.2对称加密算法

所谓对称密钥密码体制,即加密密钥和解密密钥是相同的密码体制。常见对称密钥加密算法:

(1)数据加密标准DES:替换+移位、56位密钥、64位数据块、速度快、密钥易产生

(2)3DES(三重DES):两个56位的密钥K1、K2

加密:K1加密->K2解密->K1加密

解密:K1解密->K2加密->K1解密

(3)RC-5:RSA数据安全公司的很多产品都使用了RC-5。

(4)IDEA算法:128位密钥、64位数据块、比DES的加密性好、对计算机功能要求相对低,PGP。

(5)AES算法:高级加密标准,又称Rijndael加密法,是美国政府采用的一种区块加密标准。

5.3 非对称加密算法

所谓公钥密码体制,即加密密钥和解密密钥是不同的密码体制,在公钥密码体制中,加密密钥PK(public key,即公钥)是向公众公开的,而解密密钥SK(secret key,即私钥)则是需要保密的。加密算法E和解密算法D也都是公开的。

常见非对称密钥加密算法:

(1)RSA体制:是一种基于数论中的大数分解问题的体制。2048位(或1024位)密钥、计算量极大、难破解

(2)Elgamal:基于有限域上离散对数问题的公钥密码体制,有较好的安全性,同一明文在不同时刻会产生不同的密文。

5.4 消息摘要

消息摘要是主要的数字签名算法,它是利用散列(Hash)函数(哈希函数、杂凑函数)进行数据的加密。

(1)单向Hash函数提供了这样一种计算过程:输入一个长度不固定的字符串,返回一串定长的字符串,这个返回的字符串称为消息摘要,也称为Hash值或散列值。

(2)特点

首先,在某一特定时间内,无法查找经Hash操作后生成特定Hash值的原消息;

其次,无法查找两个经Hash操作后生成相同Hash值的不同消息。

这样,在数字签名中就可以解决验证签名、用户身份认证和不可抵赖性的问题。

第6章 程序设计语言

6.1解释程序/编译程序

●解释程序

也称解释器;直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。

●编译程序

也称编译器;将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

●两者的根本区别

编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程。

解释方式下,解释程序和源程序(或某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。

即:解释方式,翻译程序不生成独立的目标程序,而编译方式则生成独立保持的目标程序。

6.2编译器工作的过程

●词法分析阶段

是编译过程的第一阶段,其任务是对源程序从前到后(从左到右)逐个字符扫描,从中识别出一个个“单词”符号。

词法分析过程的依据是语言的词法规则,即描述“单词”结构的规则。

●语法分析阶段

其任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。

通常语法分析是确定整个输入串是否构成一个语法上正确的程序。一般来说,通过编译的程序,不存在语法上的错误。

●语义分析阶段

其任务主要检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。语义分析的一个主要工作是进行类型分析和检查。

●中间代码生成

其任务是根据语义分析的输出生成中间代码。

●目标代码生成

是编译器工作的最后一个阶段。其任务是把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码。本阶段与具体机器密切相关。

●符号表管理

符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。

第7章 系统开发与维护知识

7.1软件工程

是指应用计算机科学、数学系管理科学等,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。

7.2软件开发模型

●瀑布模型

是将软件生存周期中的各个活动规定为依线性顺序连接的若干个阶段的模型,包括需求分析、设计、编码、测试、运行与维护。它规定了由前至后、相互衔接的固定次序;以项目阶段评审和文档控制为手段有效地对整个开发过程进行指导。

其优点是:

容易理解,管理成本低;强调开发的阶段性早期计划及需求调查和产品测试。

其缺点是:

客户必须能够完整、正确、清晰地表达他们的需要;在开始的2~3个阶段中,很难评估真正的进度状态;当项目结束时,出现大量的集成和测试工作;直到项目结束之前,都不能演示系统的能力;需求或设计中的错误往往只有到了项目后期才能够被发现,对项目风险控制能力较弱,从而导致项目常常延期完成,开发费用超出预期。

●V模型

是瀑布模型的一个变体,描述了质量保证活动和沟通、建模相关活动以及早期构建相关的活动之间的关系。

其特点是:将测试分级,并且与开发阶段对应。

其优点是:纠正了不重视测试阶段重要性的错误认识,将测试分等级,并和前面的开发阶段对应起来。

其缺点是:仍将测试作为一个独立的阶段,并没有提高模型抵抗风险的能力。

●原型模型

开始于沟通,其目的是定义软件的总体目标,标识需求,然后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计方式对其进行建模,并构建原型。

原型:

是预期系统的一个可执行版本,反映了系统性质的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。

其优点是:利于增加软件人员和用户对系统需求的理解;原型的最终版本可作为产品或者最终系统的一部分;

其缺点是:文档容易被忽略;建立原型的许多工作被浪费;项目难以规划和管理。

●增量模型

融合了瀑布模型的基本成分和原型实现的迭代特征,假设可以将需求分为一系列增量产品,每一增量可以分别开发。

其特点:

第1个增量往往是核心产品;客户对每个增量的使用和评估都作为下一个增量发布的新的特征和功能;增量模型强调每一个增量均发布一个可操作的产品。

其优点是:

具有瀑布模型的所有优点;第一个可交付版本所需要的成本和时间很少;小系统开发风险不大;由于很快发布第一个版本,因此可以减少用户需求的变更;运行增量投资,即在项目开始时,可以仅对一个或两个增量投资。

其缺点是:

如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;管理发生的成本、进度和配置的复杂性可能会超出组织的能力。

●螺旋模型

采用一种周期性的方法来进行系统开发,结合原型方法和瀑布模型;每一周期都包括制定计划、风险分析、实施工程和评审4个阶段,进行迭代。

其优点是:

客户始终参与,和管理层有效地交互;强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解。

其缺点是:

需要具有相当丰富的风险评估经验,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;过多的迭代次数会增加开发成本,延迟提交时间。

●喷泉模型

是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。使软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。

其优点是:

模型的各个阶段没有明显的界限,开发人员可以同步进行开发;是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。

其缺点是:

由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理;此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。

●统一过程(UP,UnifiedProcess)

是一种以用例驱动、以体系结构为核心、迭代及增量的软件过程模型,由UML方法和工具支持,广泛应用于各类面向对象项目。

典型代表:

RUP是由Rational公司开发并维护,和一系列软件开发工具紧密集成。RUP蕴含了大量优秀的实践方法,如:迭代式软件开发、需求管理、基于构件的构架应用、建立可视化的软件模型、软件质量验证、软件变更控制等。

在UP中过程被划分为4个阶段,初始阶段、细化阶段、构造阶段、移交阶段。

角色:

描述某个人或者一个小组的行为与职责。RUP预先定义了很多角色。

活动:

是一个有明确目的的独立工作单元。

工件:

是活动生成、创建或修改的一段信息。

●敏捷方法

敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。通过在软件开发过程中加入灵活性,敏捷方法是用户能够在开发周期的后期增加或改变需求。

7.3软件配置管理

(1)开发库(动态库、程序员库、工作库;动态系统、开发者系统、开发系统、工作空间)。

(2)受控库(主库、系统库;主系统、受控系统)。

(3)产品库(备份库、静态库、软件仓库;静态系统)。

(4)检查点:指在规定的时间间隔内对项目进行检查,比较实际与计划之间的差异,并根据差异进行调整。

(5)里程碑:完成阶段性工作的标志,不同类型的项目里程碑不同。

(6)基线 :指一个(或一组)配置项在项目生命周期的不同时间点上通过正式评审而进入正式受控的一种状态。基线是一些重要的里程碑,但相关交付成果要通过正式评审,并作为后续工作的基准和出发点。基线一旦建立后其变化需要受控制。

●功能基线(设计基线)

它是指在系统分析与软件定义阶段结束的时候经过正式评审和批准的系统设计规格说明书,这就是功能基线。

●分配基线(需求基线)

也叫指派基线,它是指软件需求分析阶段结束时,经过正式评审和批准的软件需求规格说明书(SRS)。

●产品基线

它是指在软件组装与系统测试阶段结束时,经过正式评审和批准的有关开发的软件产品的全部配置项的规格说明。

7.4能力成熟度模型

软件过程能力成熟度模型(Capability Maturity Model of Software,CMM)是对软件组织进化阶段的描述,该能力成熟度模型是软件组织能够较容易地确定其当前过程的成熟度并识别其软件过程执行中的薄弱环节,确定对软件质量和过程改进最关键的几个问题,从而形成对其过程的改进策略。

●初始级

软件过程的特点是无序的,有时甚至是混乱的。

●可重复级

已经建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。

●已定义级

用于管理和工程的软件过程均已文档化、标准化,并形成整个软件组织的标准软件过程。

●已管理级

软件过程和产品质量有详细的度量标准。

●优化级

通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地进行过程改进。

7.5聚合

衡量模块内部各元素结合的紧密程度。

●偶然聚合

模块完成的动作之间没有任何关系,或者仅仅是一种非常松散的关系。

●逻辑聚合

模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关。

●时间聚合

模块内部的各个组成部分所包含的处理动作必须在同一时间内执行。

●过程聚合

模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行。

●通信聚合

模块的各个组成部分所完成的动作都使用了同一个数据或产生同一输出数据。

●顺序聚合

模块内部的各个部分,前一部分处理动作的最后输出是后一部分处理动作的输入。

●功能聚合

模块内部各个部分全部属于一个整体,并执行同一功能,且各部分对实现该功能都必不可少。

7.6耦合

度量不同模块间互相依赖的程度。

●非直接耦合

两个模块之间没有直接关系,它们的联系完全是通过主模块的控制和调用来实现的。

●数据耦合

两个模块彼此间通过数据参数交换信息。

●标记耦合

一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。

●控制耦合

两个模块彼此间传递的信息中有控制信息。

●外部耦合

一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。

●公共耦合

两个模块之间通过一个公共的数据区域传递信息。

●内容耦合

一个模块需要涉及到另一个模块的内部信息。

第8章 系统实施知识

8.1 软件测试

●测试概念

经典定义:是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。

●软件测试的类型

按开发阶段划分:单元测试、集成测试、系统测试、确认测试、验收测试。

按测试技术划分:白盒测试、黑盒测试、灰盒测试。

●单元测试

又称模块测试,是针对软件设计的最小单位——程序模块,进行正确性检验的测试工作。

目的在于发现各模块内部可能存在的各种差错。

需要从程序的内部结构出发设计测试用例;多个模块可以平行地独立进行单元测试。

测试内容:

模块接口测试;局部数据结构测试;路径测试;错误处理测试;边界测试。

●集成测试

又称组装测试或联合测试;在单元测试的基础上,需要将所有模块按照概要设计说明书和详细设计说明书的要求进行组装。

组装时需要考虑的问题:

在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失。

一个模块的功能是否会对另一个模块的功能产生不利的影响。

各个子功能组合起来,能否达到预期要求的父功能。

全局数据结构是否有问题。

单个模块的误差累积起来,是否会放大,以致达到不能接受的程度。

模块组装方式:

一次性组装方式(bigbang):

也称为整体拼装。其结果:发现有错误,却茫然找不到原因;查错和改错都会遇到困难。

增殖式组装方式:

自顶向下的增殖方式:

优点:在测试过程中较早地验证了主要的控制和判断点;功能可行性较早地得到证实,还能增强开发者和用户成功的信心。

缺点:导致过多的回归测试;增加建桩模块的复杂度,导致增加附加测试。

自底向上的增殖方式:

优点:可以把容易出问题的部分在早期解决;可以实施多个模块的并行测试,提高测试效率。

缺点:对主要的控制功能,要一直到最后才能够接触到。

混合增殖方式

完成的标志:

成功地执行了测试计划中规定的所有集成测试。

修正了所发现的错误。

测试结果通过了专门小组的评审。

●确认测试

任务:

验证软件的功能和性能及其他特性是否与用户的要求一致(软件的功能和性能要求在软件需求规格说明中明确规定)。

内容:

有效性测试:是在模拟的环境下,运用黑盒测试的方法,验证所测软件是否满足需求规格说明书列出的需求。

软件配置复查:其目的是保证软件配置的所有成分都齐全,各方面的质量都符合要求,具有维护阶段所必需的细节,而且已经编排好分类的目录。

●系统测试

是将通过集成测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际或者模拟运行(使用)环境下,对计算机系统进行一系列测试。

目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。

常见系统测试内容:

恢复测试,安全性测试,压力测试,性能测试,可靠性、可用性和可维护性测试,安装测试。

●白盒测试

又称结构测试或逻辑驱动测试,是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定的要求正确工作。

白盒测试原则:

保证一个模块中的所有独立路径至少被使用一次

对所有逻辑值均需测试True和False

在上下边界及可操作范围内运行所有循环

检查内部数据结构以确保其有效性

逻辑覆盖法:

语句覆盖(SC):设计足够的测试用例,使得使被测试程序中每条语句至少执行一次。

判定覆盖(DC):设计足够的测试用例,使得使程序中的每个判定至少都获得一次“真值”或“假值”。又称分支覆盖:使程序中的每一个取“真”分支和取“假”分支至少经历一次。

条件覆盖(CC):设计足够的测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。

条件判定组合覆盖(CDC):设计足够的测试用例,使得判定中每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的结果(真/假)也至少出现一次。

路径覆盖:

是指覆盖被测程序中所有可能的路径。

基本路径法:

是在程序控制流图的基础上,通过分析控制流图的环路复杂性,导出基本可执行的路径集合,从而设计测试用例。

●黑盒测试

又称功能测试:通过软件的外部表现来发现其缺陷和错误。

黑盒测试法把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程;黑盒测试是在程序界面处进行测试,它只是检查程序是否按照需求规格说明书的规定正常实现。

第9章 数据结构与算法

9.1线性表

是最常用且最简单的一种数据结构。一个线性表是n个数据元素的有限序列。一个数据元素可以由若干个数据项组成,通常称为记录。

9.2栈

是一种特殊的线性表,是限定仅在表尾进行插入或者删除操作的线性表。进行插入和删除的那一端称为栈顶,另一端为栈底。

特点:

先进后出。

9.3队列

是一种只允许在一端进行插入,而在另一端进行删除的线性表,是一种操作受限的线性表。在表中只允许进行插入的一端称为队尾,只允许进行删除的一端称为队头。

特点:

先进先出。

9.4 二叉树的遍历

●前序遍历

先访问根结点,再依次按前序遍历的方式访问根结点的左子树、右子树。

●中序遍历

先中序遍历根结点的左子树,再访问根结点,再中序遍历根结点的右子树。

●后序遍历

先中序遍历根结点的左子树,再中序遍历根结点的右子树,再访问根结点。

●层次遍历

先访问第一层的根结点,然后从左到右依次访问第二层上的所有结点,再以同样的方式访问下一层,直到访问到树中最低层的所有结点。

9.5哈夫曼树

给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

第10章 电子电路

10.1组合逻辑电路

1.组合逻辑电路概念

(1)逻辑电路分类

根据电路是否具有存储功能,将逻辑电路分为两种类型:组合逻辑电路和时序逻辑电路。

●组合逻辑电路

组合逻辑电路不含存储功能,它的输出值仅取决于当前的输入值。

常用组合逻辑电路:译码器、多路选择器等。

●时序逻辑电路

时序逻辑电路含存储功能,它的输出值不仅取决于当前输入状态,还取决于存储单元中的值。

常用时序逻辑电路:寄存器、计数器等。

(2)组合逻辑电路

组合逻辑电路:在任何时刻,电路的输出状态只取决于同一时刻的输入状态而与电路原来的状态无关。

组合逻辑电路结构特征:

  • 不含记忆元件;

  • 输入与输出之间无反馈。

2.时序逻辑电路的基础

(1)时钟信号

时钟信号是时序逻辑的基础, 用于决定逻辑单元中的状态何时更新。在电平触发机制中,只有高电平(或低电平)是有效信号,控制状态刷新。在边沿触发机制中,只有上升沿(或下降沿)是有效信号,控制状态刷新。同步是时钟控制系统中的主要制约条件。

(2)触发器(Flip-Flops)

能够存储1位二值信号(0,1)的基本单元电路统称为触发器。

触发器的基本特点:

  • 有两个能自行保持的稳定状态表示逻辑状态的0和1;

  • 根据不同的输入信号可以置成1或0状态。

按时钟控制方式分:电平触发、边沿触发、主从触发等方式。按逻辑功能分:D型、JK型、RS型等。在选用触发器时,触发方式是必须考虑的因素。

(3)电平触发器

CP为约定“1”(或“0”)电平时,触发器接收输入数据,此时输入数据D在输出Q端得到反映;CP为非约定电平时,触发器状态保持不变。下图为锁定触发器(又称锁存器)的逻辑图。在CP为高电平期间,输入信号发生多次变化,触发器也会发生相应的多次翻转。在CP为高电平期间,因输入信号变化而引起触发器状态变化多于一次的现象,称为触发器的空翻。电平触发器结构简单,常用来组成暂存器。

(4)边沿触发器

在时钟脉冲CP的约定边沿跳变(上升沿或下降沿),触发器接收数据,在CP=1、CP=0及非约定跳变时,触发器不接收数据。电平触发器在CP=1期间来到的数据立刻被接收。边沿触发器,在CP=1期间来到的数据,必须“延迟”到该CP=1过后的下一个CP边沿来到时才被接收,故边沿触发器又被称为延迟型触发器。边沿触发器的次态仅取决于CP信号的上升沿或下降沿到达时的输入的逻辑状态。即在CP边沿以外期间出现在D端的数据和干扰不会被接收。边沿触发器具有很强的抗数据端干扰的能力,常用来组成寄存器、计数器等。

10.2电平转换电路

常用数字集成电路逻辑电平接口技术。

(1)TTL→CMOS转换:

  • CMOS逻辑电平:VCC:5V;Voh>=4.45V;Vol<=0.5V;Vih>=3.5V;Vil<=1.5V。很宽的噪声容限。

  • TTL逻辑电平: VCC:5V;Voh>=2.4V;Vol<=0.4V;Vih>=2.0V;Vil<=0.8V。噪声容限是0.4V。

  • 在TTL电路输出端与电源之间接上拉电阻R,R的取值由TTL的Ioh决定。

(2)CMOS→TTL转换:

  • CMOS逻辑电平:VCC:5V;VOH>=4.45V;VOL<=0.5V;VIH>=3.5V;VIL<=1.5V。很宽的噪声容限。

  • TTL逻辑电平: VCC:5V;VOH>=2.4V;VOL<=0.4V;VIH>=2.0V;VIL<=0.8V。噪声容限是0.4V。

  • TTL电路输入短路电流较大,要求CMOS电路在VOL为0.5V时给出足够的驱动电流;

接口器件:CC4049、CC4050。

第11章 嵌入式微处理器

11.1嵌入式微处理器的分类

(1)嵌入式微控制器( MCU:Micro Controller Unit):又称为单片机,片上外设资源一般比较丰富,适合于控制。

  • MCU集成了ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串口、PWM、A/D、D/A、Flash、EEPROM等。

  • 最大的特点是单片化,体积小,功耗和成本低,可靠性高。

  • 8051、MCS-251。

  • 目前约占70%的市场份额。

(2) 嵌入式微处理器( EMPU:Embedded Micro Processing Unit): 又称为单板机, 由通用计算机中的CPU发展而来,仅保留和嵌入式应用紧密相关的功能硬件。

(3)( DSP:Digital Signal Processor): 专门用于信号处理方面的处理器。

  • 在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令执行速度,其处理速度比最快的CPU还快10~50倍。

  • 哈佛结构;流水线操作;

  • 在数字滤波、 FFT、频谱分析等方面获得了大量的应用。

(4)嵌入式片上系统( SOC):追求产品系统最大包容的集成器件,

  • 最大的特点:成功实现了软硬件的无缝结合,直接在微处理器片内嵌入操作系统的代码模块。

  • 减小了系统的体积和功耗、提高了可靠性和设计生产效率。

11.2嵌入式微处理器体系结构

1. 冯诺依曼结构与哈佛体系结构

●冯诺伊曼结构

也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。

特点:

  • 采用单一的地址及数据总线,程序指令和数据的宽度相同。

  • 处理器执行指令时,先从存储器中取出指令解码,再取操作数执行计算,即使单条指令也要耗费几个甚至几十个周期。

  • 程序计数器只负责提供程序执行所需要的指令和数据,而不决定程序流程。

●哈佛结构

是一种将程序指令存储和数据存储分开的存储器结构。

特点:

  • 程序存储器和数据存储器采用不同的总线,提供较大的存储器带宽。

  • 较高的数字信号处理性能。

  • 允许在一个机器周期内同时获取指令字和操作数,提高执行速度;取指和执行能完全重叠。

2. CISC与RISC

复杂指令集计算机(CISC)。

精简指令集计算机(RISC)。

尽管RISC体系与CISC体系相比较有较多的优点,但RISC和CISC各有优势。如超长指令集。

序号

类别

CISC

RISC

1

指令系统

指令数量很多

较少,通常少于100

2

执行时间

有些指令执行时间很长

没有较长执行时间的指令

3

编码长度

编码长度可变

编码长度固定

4

寻址方式

寻址方式多样

简单寻址

5

操作

可以对存储器和寄存器进行算术和逻辑操作

只能对寄存器进行算术和逻辑操作

6

编译

难以用优化编译器生成高效的目标代码程序

采用优化编译技术

第12章 嵌入式系统的存储体系

12.1 常见的嵌入式系统存储设备

1. RAM(随机存储器)

RAM可以被读和写,地址可以以任意次序被读。常见RAM的种类有:

SRAM(Static RAM,静态随机存储器)。

DRAM(Dynamic RAM,动态随机存储器)。

DDRAM(Double Data Rate SDRAM,双倍速率随机存储器)

SRAM比DRAM运行速度快,但制造成本高,DRAM需要周期性刷新。DDRAM是SDRAM的下一代产品,与SDRAM本质相同。SDRAM : Synchronous Dynamic Random Access Memory,同步动态随机存储器。

●SRAM

SRAM表示静态随机存取存储器,只要供电它就会保持一个值,没有刷新周期。由触发器构成基本单元,集成度低。每个SRAM存储单元由6个晶体管组成,成本较高。速率较高,常用于高速缓冲存储器。

●DRAM

DRAM 表示动态随机存取存储器。是一种以电荷形式进行存储的半导体存储器。存储单元由1个晶体管和1个电容器组成,数据存储在电容器中。必须定时刷新,因此DRAM在使用时必须配合DRAM控制器。为了提高系统的数据吞吐能力,可以采用多种技术提高DRAM系统的性能,包括:页模式、EDO、同步DRAM。

●SDRAM

SDRAM 表示同步动态随机存取存储器。 同步是指内存工作需要同步时钟,内部的命令发送与数据的传输都以它为基准。动态是指存储器阵列需要不断的刷新来保证数据不丢失。通常只能工作在133MHz的主频。SDRAM可读/可写,不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器。

●DDRAM

DDRAM 表示双倍速率同步动态随机存取存储器,也称DDR。基于SDRAM技术。双倍预取技术,即在内存芯片内部的数据宽度是外部接口数据宽度的2倍,使峰值的读写速度达到输入时钟速率的2倍。允许在时钟脉冲的上升沿和下降沿均传输数据。在133MHz 的主频下, DDR 内存带宽可以达到133×64b/8×2=2.1GB/s。差分输入方式。

2. ROM(只读存储器)

ROM在烧入数据后,无需外加电源来保存数据,断电后数据不丢失,但速度较慢,适合存储需长期保留的不变数据。

在嵌入式系统中,ROM用于存储固定数据和程序。

常见ROM有:

Mask ROM(掩膜ROM);

PROM(Programmable ROM,可编程ROM);

EPROM(Erasable Programmable ROM,可擦写ROM);

EEPROM(电可擦除可编程ROM,也可表示为E2PROM);

Flash ROM(闪速存储器)。

3. Flash

Flash memory(闪速存储器)是嵌入式系统中重要的组成部分,用来存储程序和数据,掉电后数据不会丢失。

但在使用Flash Memory时,必须根据其自身特性,对存储系统进行特殊设计,以保证系统的性能达到最优。

Flash Memory是一种非易失性存储器NVM(Non-Volatile Memory),根据结构的不同可以分为:NOR Flash、NAND Flash。

(1)共同特点

●先擦后写

由于Flash Memory的写操作只能将数据位从1写成0,而不能从0写成1,所以在对存储器进行写入之前必须先执行擦除操作,将预写入的数据位初始化为1。擦操作的最小单位是一个区块,而不是单个字节。

●操作指令

除了NOR Flash的读,Flash Memory的其他操作不能像RAM那样,直接对目标地址进行总线操作。例如执行一次写操作,它必须输入一串特殊的指令(NOR Flash ),或者完成一段时序(NAND Flash)才能将数据写入到Flash Memory中。

●位反转

所有Flash Memory器件存在位交换现象。

Flash Memory在读写数据时,偶然会产生一位或几位数据错误,即位反转。

位反转无法避免,只能通过其他手段对产生的结果进行事后处理。

位反转的问题多见于NAND Flash。供货商建议使用NAND Flash的时候,同时使用EDC/ECC(错误探测/错误纠正)算法,以确保可靠性。

●坏块

Flash Memory在使用过程中,可能导致某些区块的损坏。

区块一旦损坏,将无法进行修复。

NAND Flash中的坏块是随机分布的,尤其是NAND Flash在出厂时就可能存在这样的坏块(已经被标识出)。

NAND Flash需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用,如果对已损坏的区块进行操作,可能会带来不可预测的错误。

(2)不同特点

应用程序可以直接在NOR Flash内运行,不需要再把代码读到系统RAM中运行。

NOR Flash的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能

NAND Flash结构可以达到高存储密度,写入和擦除的速度很快,应用NAND Flash的困难在于需要特殊的系统接口。

●性能比较

NAND Flash执行擦除操作是十分简单的,NOR型内存则要求在进行擦除前先要将目标块内所有的位都写为0。

由于擦除NOR Flash时是以64~128KB为单位的块进行的,执行一个写入/擦除操作的时间为5s,擦除NAND Flash是以8~32KB的块进行的,执行相同的操作最多只需要4ms。

NOR Flash的读速度比NAND Flash稍快一些,NAND Flash的写入速度比NOR Flash快很多。

NAND Flash的随机读取能力差,适合大量数据的连续读取,NAND Flash的4ms擦除速度远比NOR Flash的5s快。

●接口差别

NOR Flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。

NAND Flash地址、数据和命令共用8位总线/16位总线,每次读写都要使用复杂的I/O接口串行地存取数据,8位总线/16位总线用来传送控制、地址和资料信息。

NAND Flash读和写操作采用512B的块,类似硬盘管理操作。因此,基于NAND的闪存可以取代硬盘或其他块设备。

●容量和成本:

NOR Flash容量通常在1MB~8MB之间。主要应用在代码存储介质中。

NAND Flash用在8MB以上的产品当中。适用于资料存储。

●寿命:

在NAND Flash中每个块的最大擦写次数是一百万次,NOR Flash的擦写次数是十万次。

NAND Flash除了具有10:1的块擦除周期优势,典型的NAND Flash块尺寸要比NOR型闪存小8倍,每个NAND Flash的内存块在给定的时间内删除次数要少一些。

●软件支持:

在NOR Flash上运行代码不需要任何的软件支持。

在NAND Flash上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD )。

NAND Flash和NOR Flash在进行写入和擦除操作时都需要MTD。

●市场定位:

NOR Flash:对数据可靠性要求较高的代码存储、通信产品、网络处理等领域,也被称为代码闪存(Code Flash)。

NAND Flash:对存储容量要求较高的MP3、存储卡、U盘等领域,也被称为数据闪存(Data Flash) 。

第13章 嵌入式系统输入输出设备

13.1 A/D转换的指标

(1)分辨率

反映A/D转换器对输入电压微小变化的响应能力,通常用数字输出最低位(LSB)所对应的模拟输入的电平值表示。n位A/D转换能反应1/2(n)满量程的模拟输入电平。分辨率直接与转换器的位数有关,一般也可简单地用数字量的位数来表示分辨率,即n位二进制数,最低位所具有的权值,就是它的分辨率。值得注意的是,分辨率与精度是两个不同的概念,不要把两者相混淆。即使分辨率很高,也可能由于温度漂移、线性度等原因,而使其精度不够高。

(2)绝对精度(Absolute Accuracy)

在一个转换器中,对应于一个数字量的实际模拟输入电压和理想的模拟输入电压之差并非是一个常数。把它们之间的差的最大值,定义为“绝对误差”。通常以数字量的最小有效位(LSB)的分数值来表示绝对精度,如±1LSB。绝对误差包括量化精度和其他所有精度。

(3)相对精度(Relative Accuracy)

整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论值之差,用模拟电压满量程的百分比表示。例如,满量程为10V,10位A/D芯片,若其绝对精度为±1/2LSB,则其最小有效位LSB的量化单位为10/1024=9.77mV,其绝对精度为4.88mV,其相对精度为0.048%。

(4)转换时间(Conversion Time)

转换时间是指完成一次A/D转换所需的时间,即由发出启动转换命令信号到转换结束信号开始有效的时间间隔。转换时间的倒数称为转换速率。例如AD570的转换时间为25us,其转换速率为40kHz。

(5)量程

量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型。例如,单极性的量程为0~+5V,0~+10V,0~+20V;双极性的量程为-5~+5V,-10~+l0V。

13.2 D/A接口原理与接口

1.D/A转换器的工作原理

一个4位T型电阻网络DAC如图所示。电路由R-2R电阻解码网络、模拟电子开关和求和放大电路构成,因为R和2R组成T型,故称为T型电阻网络DAC。

2.电压输出型

电压输出型D/A转换器虽有直接从电阻阵列输出电压的,但一般采用内置输出放大器以低阻抗输出。

直接输出电压的器件仅用于高阻抗负载,由于无输出放大器部分的延迟,故常作为高速D/A转换器使用。

3.电流输出型

电流输出型D/A转换器直接输出电流,但应用中通常外接电流-电压转换电路得到电压输出。

电流-电压可以直接在输出引脚上连接一个负载电阻,实现电流-电压转换。

但多采用的是外接运算放大器的形式。

大部分CMOS D/A转换器当输出电压不为零时不能正确动作,所以必须外接运算放大器。

在D/A转换器的电流建立时间上加入了外接运算放大器的延迟,D/A响应变慢。

运算放大器因输出引脚的内部电容容易起振,有时必须作相位补偿。

4.乘算型:

D/A转换器中有使用恒定基准电压的,也有在基准电压输入上加交流信号的,后者由于能得到数字输入和基准电压输入相乘的结果而输出,因而称为乘算型D/A转换器。

乘算型D/A转换器一般不仅可以进行乘法运算,而且可以作为使输入信号数字化衰减的衰减器及对输入信号进行调制的调制器使用。

第14章 嵌入式系统总线接口

14.1串行接口基本原理与结构

1.串行通信基本概念

串行通信:数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度。

(1)优点:

  • 传输线少、成本低。

  • 特别适合远距离传送。

(2)缺点:速度慢。

2.串行数据通信模式

串行数据传送有3种基本的通信模式:单工、半双工、全双工通信。

  • 单工通信:数据仅能从设备A到设备B进行单一方向的传输。如遥控、遥测等。

  • 半双工通信:数据可以从设备A到设备B进行传输,也可以从设备B到设备A进行传输,但不能在同一时刻进行双向传输。如:对讲机。

  • 全双工通信:数据可以在同一时刻从设备A传输到设备B,或从设备B传输到设备A,即可以同时双向传输。如电话。

3.串行通信方式

串行通信在信息格式上可以分为:异步通信和同步通信方式。

(1)异步通信

  • 异步通信方式

是指通信的发送与接收设备使用各自的时钟,控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。

数据是一帧一帧传送的,每帧数据包含有起始位(“0”)、数据位、奇偶校验位和停止位(“1”) ,每帧数据的传送靠起始位来同步。

一帧数据的各位代码间的时间间隔是固定的,而相邻两帧的数据其时间间隔是不固定的。在异步通信的数据传送中,传输线上允许空字符。

异步通信对字符格式、波特率、校验位有确定的要求。

  • 字符格式

每个字符传送时,必须前面加一起始位,后面加上1、1.5或2位停止位。

例如ASCII码传送时,一帧数据的组成是:前面1个起始位,接着7位ASCII编码,再接着一位奇偶校验位,最后一位停止位,共10位。

  • 波特率:

传送数据位的速率称为波特率,用位/秒(bit/s)来表示,称之为波特。例如,数据传送的速率为120字符/秒,每帧包括10个数据位,则传送波特率为:10×120=1200b/s=1200波特。异步通信的波特率的数值通常为:150、300、600、1200、2400、4800、9600、14400、28800等,数值成倍数变化。。。。。。。。。。。。。。。。

  • 校验位:

偶校验就是要使字符加上校验位有偶数个“1”;奇校验就是要使字符加上校验位有奇数个“1”。例如数据“00010011”,共有奇数个“1”,偶校验时,则校验位就置为“1”,奇校验时,则校验位就置为“0”。

  • 异步通信的特点:

不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。实际使用率只有约80%。

(2)同步通信

是一种比特同步通信技术,要求收发双方具有同频同相的同步时钟信号,只需在传送报文的最前面附加特定的同步字符,使收发双方建立同步,此后便在同步时钟的控制下逐位发送/接收。同步传输采用字符块的方式,减少每一个字符的控制和错误检测数据位,因而可以具有较高的传输速率。即将许多字符聚集成一字符块后, 在每块信息之前要加上1~2个同步字符, 字符块之后再加入适当的错误检测数据才传送出去。

特点:

  • 数据传输速率较高。

  • 但要求发送方时钟和接收方时钟保持严格同步。

14.2并行接口基本原理与结构

并行通信通常是将数据字节的各位用多条数据线同时进行传送。一般用来连接打印机、扫描仪等,所以又称打印口。

特点:控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。

14.3相关总线

14.3.1串行总线

1.RS-232C

RS-232C是美国电子工业协会(EIA)制定的。。一种串行通信接口标准。

●各引脚功能如下表所示。

引脚号

符号表示

名称

说明

1

CD

载波检测

主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音。

2

RXD

接收数据线

用于接收外部设备送来的数据

3

TXD

发送数据线

用于将计算机的数据发送给外部设备

4

DTR

数据终端就绪

当此引脚高电平时,通知Modem可以进行数据传输,计算机已经准备好

5

SG

信号地

 信号地

6

DSR

数据设备就绪

此引脚为高电平时,通知计算机Modem已经准备好,可以进行数据通信

7

RTS

请求发送

此引脚由计算机来控制,用以通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放入缓冲区中

8

CTS

允许发送

此引脚由Modem控制,用以通知计算机将要传送的数据送至Modem

9

RI

振铃提示

Modem通知计算机有呼叫进来,是否接听呼叫由计算机决定

●RS-232C的基本连接方式。

计算机利用RS-232C接口进行串口通信,有简单连接和完全连接两种连接方式。简单连接又称三线连接,即只连接发送数据线、接收数据线和信号地;如果应用中还需要使用RS-232C的控制信号,则采用完全连接方式。

2.RS-422

RS-422标准是RS-232的改进型,是一种单机发送、多机接收的单向、平衡传输规范,传输速率可达10Mb/s。采用差分传输方式,也称做平衡传输。

允许在相同传输线上连接多个接收节点,最多可接10个节点,即一个主设备(Master),其余10个为从设备(Salve),从设备之间不能通信。

支持一点对多点的双向通信。RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必需的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。

3.RS-485

在RS-422的基础上,为扩展应用范围,EIA制定了RS-485标准,增加了多点、双向通信能力 。

在通信距离为几十米至上千米时,通常采用RS-485收发器。

RS-485收发器采用平衡发送和差分接收。

即在发送端,驱动器将TTL电平信号转换成差分信号输出;在接收端,接收器将差分信号变成TTL电平,因此具有抑制共模干扰的能力。

接收器能够检测低达200mV的电压,具有高的灵敏度,故数据传输距离可达千米以上。

RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信。采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主设备,其余为从设备。RS-485可以连接多达32个设备。

  1. USB(Universal Serial Bus,通用串行总线)

是由Compaq、HP、Intel、Lucent、Microsoft、NEC和Philips公司制定的连接计算机与外围设备的机外串行总线。最多可连接127个设备。用于多种嵌入式系统设备的数据通信。如移动硬盘、PDA。

5. IEEE 1394

是Apple公司率先提出的一种高品质、高传输速率的串行总线技术,1995年被IEEE认定为串行工业总线标准。

1394作为一种标准总线,可以在不同的工业设备之间架起一座沟通的桥梁, 在一条总线上可以接入63个设备。应用在实时多媒体领域,大容量存储以及打印机、扫描仪上等等。

14.3.2并行总线

并行总线分为:标准并行总线(IEE488总线、SCI总线)、并行总线;非标准并行总线(MXI 总线是一种高性能非标准的通用多用户并行总线)。

1.IEE488总线

又称GPIB总线(General Purpose Interface Bus,通用接口总线)。位并行、字节串行双向异步方式传输信号。总线方式连接,仪器设备直接并联于总线上,总线上最多可连接15台设备。最大传输距离为20m,信号传输速度一般为500Kb/s,最大传输速度为1Mb/s。广泛应用在仪器、仪表、测控领域。

2. SCSI(Small Computer System Interface,小型计算机系统接口)总线

速度可达5Mb/s,传输距离6m。传输速率很高。普遍用作计算机的高速外设总线,如连接高速硬盘驱动器。

3. MXI 总线(Multi-system eXtension Interface bus,多系统扩展接口总线)

是一种高性能非标准的通用多用户并行总线。32位高速并行总线。最高速度可达23Mb/s,传输距离20m。用作计算机与测控机箱的互连。

14.3.3 PCI(Peripheral Component Interconnect,外围设备互连)总线

是由Intel公司推出的一种局部总线,是当前用于系统扩展最流行的总线之一。PCI总线是地址、数据多路复用的高性能32位和64位总线,是微处理器与外围控制部件、外围附加板之间的互连机构。

与ISA总线不同,PCI总线的地址总线与数据总线是分时复用的,支持即插即用( PNP:Plug-and-Play )、中断共享等功能。

PCI总线在数据传输时,由一个PCI设备做发起者(称为Master、Initiator),而另一个PCI设备做目标(称为Slave、Target)。

总线上所有时序的产生与控制都由Master发起。

PCI总线在同一时刻只能供一对设备完成传输,要求有一个仲裁机构来决定谁有权拿到总线的主控权。

14.3.4 SPI(Serial Peripheral Interface,串行外围设备接口)

是由Motorola公司开发的一个低成本、易使用的接口,主要用在微控制器(MCU)和外围设备芯片之间进行连接。SPI接口可以用来连接存储器、A/D转换器、D/A转换器、实时时钟日历、LCD驱动器、传感器、音频芯片,其他处理器等。

SPI是一个4线接口,主要使用4个信号:

主机输出/从机输入(MOSI);

主机输入/从机输出(MISO);

串行SCLK或SCK;

外设片选();

有些处理器有SPI接口专用的芯片选择,称为从机选择()。

14.3.5 I(2)C BUS(Inter Integrated Circuit BUS,内部集成电路总线)

是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备。I(2)C总线是具备总线仲裁和高低速设备同步等功能的高性能多主机总线。直接用导线连接设备,通信时无需片选信号。

14.3.6 CAN(Controller Area Network,控制器局域网)

是德Bosch公司于1983年为汽车应用而开发的,它是一种现场总线( FieldBus),能有效支持分布式控制和实时控制的串行通信网络。

CAN总线是一种多主方式的串行通信总线。

由CAN总线构成的单一网络中,是可以挂接任意多个节点,实际应用中节点数目受网络硬件的电气特性所限制。例如:当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。

CAN总线具有很高的实时性能,已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。

第15章 电子电路设计基础

15.1 PCB设计

1.PCB设计方法

PCB设计是电子产品物理结构设计的一部分, 它的主要任务是根据电路的原理和所需元件的封装形式进行物理结构的布局和布线。

PCB设计包括下面一些具体步骤:

(1)建立封装库中没有的封装(Footprint)。

(2)规划电路板:设置习惯性的环境参数和文档参数,如选择层面、画边框、定位孔、外形尺寸等。

(3)载入网络表和元件封装。

(4)规则设置:线宽、线距、叠层、过孔、全局参数等。

(5)元件布局、布线:采用先核心器件,后外围器件的原则进行,对于核心器件和高速信号要优先进行布线。

(6)设计规则检查,违规报告。

(7)PCB仿真分析。

(8)存档输出。

2.多层PCB设计的注意事项

高频信号线一定要短,不可以有尖角( 90°直角),两根线之间的距离不宜平行、过近,否则可能会产生寄生电容。

如果是双面板,一面的线布成横线,一面的线布成竖线,尽量不要布成斜线。

一般,线宽为0.3mm,间隔为0.3mm。对于电源线或者大电流线应该有足够宽度,一般需要60~80mil。

屏蔽。铜膜线的地线应该在电路板的周边,同时将电路上可以利用的空间全部使用铜箔做地线,增强屏蔽能力,防止寄生电容。

地线的共阻抗干扰。

  • 电路图上的地线表示电路中的零电位,并用作电路中其他各点的公共参考点,在实际电路中由于地线阻抗的存在,必然会带来共阻干扰。

  • 布线时不能将具有地线符号的点随便连接在一起,这可能引起有害的耦合而影响电路的正常工作。

3.PCB设计中的可靠性设计

●地线设计

在电子设备中,接地是控制干扰的重要方法。

正确选择单点接地与多点接地。

  • 在低频电路中(工作频率小于1MHz),采用一点接地。

  • 在高频电路中(工作频率大于10MHz),采用就近多点接地。

将数字电路与模拟电路分开,两者地线不要相混。分别与电源端地线相连。

  • 尽量加粗地线。若地线很细,接地电位则随电流的变化而变化,如有可能,接地线的宽度应大于3mm。

  • 将接地线构成闭环路,可以明显提高抗噪声能力。

●电磁兼容性设计

电磁兼容性(EMC)是指设备或系统在其电磁环境中符合要求运行并不对其环境中的任何设备产生无法忍受的电磁干扰的能力。

  • 选择合理的导线宽度。

  • 采用正确的布线策略:最好采用井字形网状布线结构。

  • 抑制反射干扰。

●去耦电容配置

配置去耦电容可以抑制因负载变化而产生的噪声, 是印制电路板的可靠性设计的一种常规做法。配置原则如下:

  • 电源输入端跨接一个10~100uF 的电解电容。

  • 为每个集成电路芯片配置一个0.01uF 的陶瓷电容。

  • 对于噪声能力弱、关断时电流变化大的器件和ROM、 RAM 等存储型器件,应在芯片的电源线和地线之间直接接入去耦电容。

  • 去耦电容的引线不能过长。

●PCB的尺寸与器件的配置

  • 相互有关的元件尽量放得靠近一些。

  • 时钟发生器、晶振和CPU 的时钟输入端易产生干扰,要相互靠近一些。

  • 易产生噪声的元件、小电流电路、大电流电路等应尽量远离逻辑电路。

15.2电子电路测试

硬件抗干扰措施

(1)干扰的耦合方式:干扰源产生的干扰信号要通过一定的耦合通道才对系统产生作用。

  • 直接耦合:最有效的方式是加入去耦电容。

  • 公共阻抗耦合:常常发生在2个电路电流有共同通路的情况。

  • 电容耦合:又称为电场耦合或静电耦合,是由分布电容产生。

  • 电磁感应耦合(磁场耦合):由分布电感产生。

  • 漏电耦合:纯电阻性,绝缘不好时就会发生。

(2)常用硬件抗干扰技术:

  • 抑制干扰源。

  • 切断干扰传播路径。

  • 提高敏感元件的抗干扰性能。

  • 其他常用抗干扰措施。

(3)抑制干扰源的技术:尽可能减小干扰源的du/dt和di/dt,是抗干扰设计中最优先考虑和最重要的原则。

  • 通过在干扰源两端并联电容来实现减小干扰源的du/dt。

  • 通过在干扰源回路串联电感或电阻及增加续流二极管来实现di/dt。

(4)按照干扰的传播路径可分为:传导干扰、辐射干扰。

(5)传导干扰:通过导线传播到敏感元件的干扰。

高频干扰噪声和有用信号的频带不同,可通过加滤波器来切断高频干扰噪声的传播,也可加隔离光耦。

(6)辐射干扰:通过空间辐射传播到敏感元件的干扰。

  • 增加干扰源和敏感元件的距离。

  • 用地线将它们隔离。

  • 在敏感元件上加屏蔽罩。

(7)切断干扰传播路径的常用措施:

  • 充分考虑电源对嵌入式系统的影响。如给电源加滤波电路或稳压器。

  • 若微处理器的I/O口接控制电机等噪声器件,应在I/O和噪声源之间加隔离。

  • 晶振与微处理器的引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地。

  • 电路板合理分区,如强、弱信号,数字、模拟信号。

  • 尽可能将干扰源与敏感元件远离。

  • 用地线把数字区与模拟区隔离。

  • 数字地与模拟地要分离,最后再一点接于电源地。

  • 微处理器和大功率器件的地线要单独接地,以减小互相干扰。

  • 大功率器件尽可能放在电路板边缘。

(8)提高敏感元件的抗干扰性能:

  • 布线时尽量减少回路环的面积,以降低感应噪声。

  • 电源线和地线要尽量粗,除减小压降外,更重要的是降低耦合噪声。

(9)微处理器闲置的I/O口不要悬空,要接地或接电源。

  • 其他IC 的闲置端在不改变系统逻辑的情况下接地或电源。

  • 使用电源监控及看门狗电路,可大幅度提高整个电路的抗干扰性能。

  • 在满足要求的前提下,尽量降低微处理器的晶振和选用低速数字电路。

  • IC器件尽量直接焊在电路板上,少用IC插座。

 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐