• 但是太阳,它每时每刻都是夕阳也都是旭日。当它熄灭着走下山去收尽苍凉残照之际,正是它在另一面燃烧着爬上山巅布散烈烈朝晖之时。那一天,我也将沉静着走下山去,扶着我的拐杖。有一天,在某一处山洼里,势必会跑上来一个欢蹦的孩子,抱着他的玩具。当然,那不是我。但是,那不是我吗?
  • 迄今人类最美好的向往也都没有实际的验证,但那向往并不因此消灭。
  • 童话的缺憾不在于它太美,而在于它必要走进一个更为纷繁而且严酷的世界,那时只怕它太娇嫩。
  • 命运中有一种错误是只能犯一次的,并且没有改正的机会,命运中有一种并非是错误的错误,但它却是不被原谅的。
  • 机会不在外面在心里。
  • 在科学的迷茫之处,在命运的混沌之点,人唯有乞灵于自己的精神。不管我们信仰什么,都是我们自己的精神的描述和引导。

  • 知道可能面对的困难和痛苦,在死亡的恐惧中不断挣扎,却仍然能战胜自己,选择这条道路,才是真正的勇气。
  • 一个人要显示自己的力量,从来不是靠暴力,挑战这一准则的人必然会被历史从强者的行列中淘汰,历来如此。

  • 决定我们自身的不是过去的经历,而是我们自己赋予经历的意义。

  • 答案不应该是从别人那里得到,而应该是自己亲自找出来。

  • 现在的你之所以不幸正是因为你自己亲手选择了“不幸”,而不是因为生来就不幸。

  • 你自己主动选择了自己的生活方式。

  • 无论是继续选择与之前一样的生活方式还是重新选择新的生活方式,那都在于你自己。

  • 阿德勒说“无论是追求优越性还是自卑感,都不是病态,而是一种能够促进健康、正常的努力和成长的刺激“。只要处理得当,自卑感也可以成为努力和成长的催化剂。

  • 所谓“追求优越性”是指自己不断超前迈进,而不是比别人高出一等的意思。

  • 健全的自卑感不是来自于与别人的比较,而是来自与“理想的自己”的比较。

  • 个人的愤怒很快就会冷却,而公愤则会长时间地持续。因私愤而流露的发怒只不过是为了让别人屈服的一种工具而已。

  • 眼镜模糊了,只能看到眼前的胜负就会走错道路,我们只有摘掉竞争或胜负之争的眼镜才能够改变完善自己。

  • 倘若自己都不为自己活出自己的人生,那还有谁会为自己而活呢?

  • 如果一味寻求别人的认可、在意别人的评价,那最终就会活在别人的人生中。

  • 能够改变自己的只有自己。

  • 真正的自由是一种把滚落下来的自己从下面向上推的态度。

  • 不畏惧被人讨厌而是勇往直前,不随波逐流而是激流勇进,这才是对人而言的自由。

  • 你正因为不想被他人认为自己不好,所以才在意他人的视线。这不是对他人的关心,而是对自己的执著。

  • 自己人生的主人公是“我”。这种认识没有问题。但是,这并不意味着“我”君临于世界的中心。“我”是自己人生的主人公,同时也是共同体的一员、是整体的一部分。

  • 别人并不是为了满足你的期待而活。

  • 归属感不是生来就有的东西,要靠自己的手去获得。

  • 如果是因为你的反对就能崩塌的关系,那么这种关系从一开始就就没有必要缔结,由自己主动舍弃也无所谓。活在害怕关系破裂的恐惧之中,那是为他人而活的一种不自由的生活方式。

  • 人只有在能够感觉自己有价值的时候才可以获得勇气。

  • 重要不是被给予了什么,而是如何去利用被给予的东西。

  • 对人而言,最大的不幸就是不喜欢自己。

  • 人生是连续的刹那,根本不存在过去和未来。你是想要通过关注过去或未来为自己寻找免罪符。过去发生了什么与你的“此时此刻”没有任何关系,未来会如何也不是“此时此刻”要考虑的事情。

  • 人生中最大的谎言就是不活在“此时此刻”。纠结过去、关注未来,把微弱而模糊的光打向人生整体,自认为看到了些什么。

存储器部件的分类

  • 按在系统中的地位分类
    • 主存储器(Main Memory简称内存或主存)
    • 辅助存储器(Auxiliary Memory,Secondary Memory,简称辅存或外存
  • 内存通常用来容纳当前正在使用的或要经常使用的程序和数据,CPU可以直接对内存进行访问
    • 内存一般都用快速存储器件来构成,内存的存取速度很快,但内存空间的大小受到地址总线位数的限制
    • 系统软件中如引导程序、监控程序或者操作系统中的基本输入/输出部分BIOS都是必须常驻内存
    • 更多的系统软件和全部应用软件则在用到时由外存传送到内存
  • 外存也是用来存储各种信息的,存放的是相对来说不经常使用的程序和数据,其特点是容量大
    • 外存总是和某个外部设备相关的,常见的外存有软盘、硬盘、U盘、光盘等
    • CPU要使用外存的这些信息时,必须要通过专门的设备将信息先传送到内存中
  • 存储介质分类
    • 磁存储器(Magnetic Memory)
    • 半导体存储器
    • 光存储器(Optical Memory)
    • 激光光盘存储器(Laser Optical Disk)
  • 按信息存取方式分类
    • 随机存取存储器(Random Access Memory,RAM)
    • 只读存储器(Read Only Memory,ROM)
  • 随机存取存储器是一种在机器运行期间可读、可写的存储器,又称读写存储器

存储器的组织和结构

  • 存储器的参数:容量、数据宽度
  • 存储器的容量是描述存储器的最基本参数,如4MB。存储器的表示不唯一,不同表示方法有不同的数据宽度
  • 在存储器内部,数据是存放在二维阵列存储单元中
    • 阵列以二维的形式存储,给出的n位地址被分成行地址和列地址(n=r+c)。r是行地址数,c是列地址数
    • 行列选定一个特定存储单元

存储器的组织和结构

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

RAM(随机存储器)

  • RAM可以被读和写,地址可以以任意次序被读

  • 常见RAM的种类有

    • SRAM(Static RAM,静态随机存储器)
    • DRAM(Dynamic RAM,动态随机存储器)
    • DDRAM(Double Data Rate SDRAM,双倍速率随机存储器)
  • SRAM比DRAM运行速度快,SRAM比DRAM耗电多,DRAM需要周期性刷新

  • DDRAM是SDRAM的下一代产品,与SDRAM本质相同

    • SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器

随机存储器

SRAM

  • SRAM表示静态随机存取存储器
  • 只要供电它就会保持一个值,没有刷新周期
  • 由触发器构成基本单元,集成度低
  • 每个SRAM存储单元由6个晶体管组成,成本较高
  • 速率较高,常用于高速缓冲存储器
  • 通常SRAM有4种引脚
    • CE:片选信号,低电平有效
    • R/W’:读写控制信号
    • ADDRESS:一组地址线
    • DATA:用于数据传输的一组双向信号线

SRAM

DRAM

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

DRAM

  • DRAM的接口比较复杂,通常有以下引脚
    • CE:片选信号,低电平有效
    • R/W’:读写控制信号
    • RAS’:行地址选通信号,通常接地址的高位部分
    • CAS’:列地址选通信号,通常接地址的低位部分
    • ADDRESS:一组地址线
    • DATA:用于数据传输的一组双向信号线

SDRAM

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

DDRAM

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

ROM(只读存储器)

  • ROM在烧入数据后,无需外加电源来保存数据,断电后数据不丢失,但速度较慢,适合存储需长期保留的不变数据
  • 在嵌入式洗系统中,ROM用于固定数据和程序
  • 常见ROM有
    • Mask ROM(掩膜ROM)
      • 一次性由厂家写入数据的ROM,用户无法修改
    • PROM(Programmable ROM,可编写ROM)
      • 出厂时厂家没有写入数据,保留里面的内容为全0和全1,由用户来编程一次性写入数据
    • EPROM(Erasable Programmable ROM,可擦写ROM)
      • 可以通过紫外线光的照射,擦掉原先的程序,芯片可重复擦除和写入。写入时间较长
    • EEPROM(电可擦除可编程ROM,也可表示为E2PROM)
      • 通过加电擦除原编程数据,通过高压脉冲可以写入数据
    • Flash ROM
      • 断电不会丢失数据,快速读取,电可擦写可编程
  • PROM、EPROM、EEPROM的共同之处
    • 可编程的只读存储器
    • 属于非易失性元件
    • 芯片为有限次写入
  • PROM、EPROM、EEPROM的不同之处
    • PROM为一次编程器件;EPROM为电编程、紫外线擦除器件、EEPROM电编程、电擦写
    • PROM编程元件:熔丝型开关或者非熔丝型开关(PLICE:多晶硅)
    • EPROM编程元件:叠栅型(SIMOS)浮栅
    • EEPROM编程元件:隧道型(FLOTOX)浮栅

FLASH

  • Flash memory(闪速存储器)是嵌入式系统中重要的组成部分,用来存储程序和数据,掉电后数据不会丢失
  • 但在使用Flash Memory时,必须根据其自身特性,对存储系统进行特殊设计,以保证系统的性能达到最优
  • Flash Memory是一种非易失性存储器NVM(Non-Volatile Memory),根据结构的不同可以分为:NOR Flash、NAND Flash

NOR Flash和NAND Flash相同特点

  • 区块结构:Flash Memory在物理结构上分成若干个区块,区块之间相互独立
    • NOR Flash把整个存储区分成若干个扇区(Sector)
    • NAND Flash把整个存储区分为若干个(Block)
    • 可以对以块或扇区为单位的内存单元进行先擦写和再编程
  • 先擦后写:由于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需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用
    • 如果对已损坏的区块进行操作,可能会带来不可预测的错误

NOR Flash和NAND Flash不同特点

  • 应用程序可以直接在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)

常见外存的种类

  • 外部存储器:也称为辅助存储器,简称外存或辅存
    • 容量比主存大、读取速度较慢
    • 通常用来存放需要永久保存的或相对来说暂时不用的程序和数据常见外存的种类

硬盘

  • 硬盘存储器具有存储容量大,使用寿命长,存取速度较快的特点,也是在嵌入式系统中常用的外存
  • 硬盘存储器的硬件包括
    • 硬盘控制器(适配器)
    • 硬盘驱动器
    • 连接电缆
  • 硬盘控制器(Hard Disk Controller,简称HDC)对硬盘进行管理,并在主机和硬盘之间传送数据。硬盘控制器以适配卡的形式插在主板上或直接集成在主板上,然后通过电缆与硬盘驱动器相连
  • 硬盘驱动器(Hard Disk Drive,简称HDD)中有盘片、磁头、主轴电机(盘片旋转驱动机构)、磁头定位机构、读/写电路和控制逻辑等
  • 硬盘存储器可分为:温彻斯特盘和非温彻斯特盘两类
    • 温彻斯特盘是根据温彻斯特技术设计制造的,它的磁头、盘片、磁头定位机构、主轴、甚至连读/写驱动电路等都被密封在一个盘盒内,构成一个头-盘组合体
    • 温彻斯特盘的防尘性能好,可靠性高,对使用环境要求不高
    • 非温彻斯特盘磁盘的磁头和盘片等不是密封的,通常只能用于中型、大型计算机机房中
  • 最常见的硬盘接口是IDE(ATA)和SCSI两种,一些移动硬盘采用PCMCIA或USB接口
  • SCSI(Small Computer System Interface,小型计算机系统接口)不是专为硬盘设计的,是一种总线型接口
    • SCSI独立于系统总线工作,其系统占用率极低,但其价格昂贵
    • 具有这种接口的硬盘大多用于服务器等高端应用场合

光盘

  • 光盘:用光学方式读/写信息的圆盘
  • 光盘存储器:以光盘为存储介质的存储器
  • 光盘的类型
    • CD-RAM:Compact Disc Read Only Memory
    • CD-R:采用WORM(Write One Read Many)标准
    • CD-RW:可重复读/写
    • DVD-ROM:通用数字化多功能光盘,简称高容量CD

标准存储卡(CF卡)

  • CF存储卡是由美国SanDisk公司于1994年研制成功的
  • CF卡的大小为43mm x 36mm x 3.3mm,CF卡同时支持3.3伏和5伏的电压,可以在这两种电压下工作
  • CF卡(Compact Flash)接口具有PCMCIA-ATA功能,可以工作在IDE接口模式,也可以工作在PC Card模式
  • CF卡主要在PDA、笔记本电脑、数码相机和包括台式机在内的各种设备

安全数据卡(SD卡)

  • SD卡是由日本松下公司、东芝公司和美国SanDisk公司于1999年8月共同研制开发而成的
  • SD卡是根据MMC卡开发的,但是基本上两者还是不同的产品,只是在设计时考虑到兼容问题,所以在大多数情况下这两种产品能够互换,它比MMC卡多了一个进行数据著作权保护功能
  • 多用于MP3、数码相机、电子图书、微型电脑和AV器材等。尺寸大小比MMC卡略厚一些,为32mm x 24mm x 2.1mm

操作系统的作用

  • 通过资源管理(软硬件资源管理),提高计算机系统的效率改善人机界面,向用户提供友好的工作环境。

进程管理

进程的概念

  • 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。它由程序块、进程控制块(PCB)和数据块三部分组成。
  • 进程与程序的区别
    • 进程是程序的一次执行过程,没有程序就没有进程
    • 程序是完成某个特定功能的一系列程序语句的集合,只要不被破坏,它就永远存在
    • 程序是一个静态的概念,而进程是一个动态的概念,它由创建而产生,完成任务后因撤销而消亡;进程是系统进行资源分配和调度的独立单位,而程序不是

进程状态:三态模型

  • 运行态:占有处理器正在运行
  • 就绪态:指具备运行条件,等待系统分配处理器以便运行
  • 等待态:又称为阻塞态或睡眠态,指不具备运行条件,正在等待某个事件的完成三态模型
  • 运行态–等待态:等待使用资源,如等待外设传输,等待人工干预
  • 等待态–就绪态:资源得到满足,如外设传输结束,人工干预完成
  • 运行态–就绪态:运行时间片到,出现有更高优先权进程
  • 就绪态–运行态:CPU空闲时选择一个就绪进程

进程状态:五态模型

  • 挂起:将进程调出内存,保存到外存队列中,并释放资源
  • 激活:恢复挂起进程,重新调入内存五态模型
  • 目的:释放进程占用的资源以缓解资源不足
  • 原因:终端用户的请求,父进程的请求、OS的需要(如负荷调节、对换等)

前驱图

  • 出度:多少箭头出
  • 入度:多少箭头入

进程的同步和互斥

  • 互斥:间接制约
  • 同步:直接制约

PV操作

  • 临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等
  • 临界区:每个进程中访问临界资源的那段代码称为临界区
  • 信号量:是一种特殊的变量
  • P操作:申请资源,阻塞进程
  • V操作:释放资源,唤醒进程PV操作

死锁

  • 进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果一个进程在等待一个不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁。
  • 死锁的预防:打破四大条件
    • 互斥
    • 保持和等待
    • 不剥夺
    • 环路等待
  • 死锁的避免
    • 有序资源分配法
    • 银行家算法
  • 银行家算法:分配资源的原则
    • 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程
    • 进程可以分期请求资源,但请求的总数不能超过最大需求量
    • 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源

任务的调度的概述

  • 任务的调度要解决的问题:
    • WHEN:何时分配CPU
      • 任务调度的时机,5种情形
    • HOW:如何分配CPU
      • 任务调度方式,不可抢占,可抢占
    • WHAT:按什么原则分配CPU
      • 任务调度算法,先来先服务、短作业优先、时间片轮转调度、优先级算法
      • 调度算法的性能指标

调度器

  • 定义:调度用来确定多任务环境下任务执行的顺序和在获得CPU资源后能够执行的时间长度。
  • 操作系统通过一个调度程序来实现调度功能
    • 调度程序以函数的形式存在,用来实现操作系统的调度算法
    • 调度程序本身并不是一个任务,是一个函数调用,可在内核的各个部分进行调用
  • 调度程序:可以看作CPU的资源管理者
    • 从就绪队列中选择一个任务去执行
    • 调度算法:调度程序在决策过程中所采用的算法,是在一个特定时刻用来确定将要运行的任务的一组规则

任务调度的时机

  • 一般来说有5种情形可能会发生任务的调度。
    • 当一个新的任务被创建时,需要做出一个调度决策,是立即执行这个新任务还是继续执行父任务
    • 当一个任务运行结束时,它不再占用CPU,这时调度器必须做出一个决策,从就绪队列中选择某个任务去运行
    • 当一个任务由于I/O操作、信号量或其他原因被阻塞时,也必须另选一个任务运行
    • 当一个I/O操作已经完成,而等待该I/O操作的任务将从阻塞状态变为就绪状态
    • 当一个时钟中断发生时,会唤醒一些延时任务或者可能会发现当前任务的时间片已用完,从而把它变为就绪状态

任务调度的方式

  • 不可抢占调度方式(Non-Preemptive):
    • 如果一个任务被调度程序选中,就会一直运行下去
    • 直到它因为某种原因(如I/O操作或任务间的同步)被阻塞了,或者它主动地交出了CPU的使用权。
    • 调度时机中的前3种情况(任务创建、任务运行结束、任务被阻塞),都可能会发生调度。第4、5种情况(即发生中断),不会发生调度
  • 可抢占调度方式(Preemptive):
    • 当一个任务正在运行的时候,调度程序可以去打断它,并安排其他的任务去运行
    • 调度时机中所有的5种情况,都可能会发生调度
  • 实时操作系统大都采用可抢占调度方式
    • 使关键任务能够打断非关键任务的执行,确保关键任务的截止时间能够得到满足

任务调度算法的性能指标

  • CPU的使用率(CPU utilization)
  • 响应时间(responsive time):调度器为一个就绪任务进行上下文切换时所需的时间,以及任务在就绪队列中的等待时间
  • 周转时间:一个任务从提交到完成所经历的时间
  • 调度开销:调度器在做出调度决策时所需要的时间和空间开销
  • 公平性:大致相当的两个任务所得到的CPU时间应该大致相同。要防止饥饿,即一个任务始终得不到处理器去运行
  • 均衡性:尽可能使整个系统的各个部分(CPU、I/O)都忙起来,提高系统资源的使用效率
  • 吞吐量:单位时间内完成的任务数量
  • 这些性能指标之间具有一定的冲突性
    • 比如可通过让更多的任务处于就绪状态来提高CPU的使用率,但这显然会降低系统的响应时间
    • 调度程序的设计需要优先考虑最重要的需求,然后在各种因素之间进行折中处理

FCFS

  • 先来先服务算法(First Come First Served,FCFS):也叫先进先出算法(First In First Out,FIFO)按照任务到达的先后次序进行调度,是不可抢占的调度方式
    • 若当前任务占用CPU在运行,一直等到它执行完或被阻塞,才释放CPU
    • 被阻塞的任务,唤醒后,放在就绪队列的末尾,重新开始排队
  • 先来先服务算法特点:
    • 简单,易于理解,易于实现
    • 一批任务的平均周转时间取决于各个任务到达的顺序,如果短任务位于长任务之后,将增大平均周转时间

SJF

  • 短作业优先算法(Shortest Job First,SJF):各个任务开始执行之前,事先预计好它的执行时间,从中选择用时较短的任务优先执行
  • 短作业优先算法有2种实现方案:
    • 不可抢占方式:任务正在运行时,即使来了一个更短的任务,也不会被打断,只有当它运行完毕或被阻塞时,才会让出CPU,进行新的调度
    • 可抢占方式:如果一个新的短任务到了,且它的运行时间要小于当前正在运行的任务的剩余时间,则新任务会抢占CPU去运行。也称为最短剩余时间优先算法(Shortest Remaining Time First,SRTF)

RR

  • 时间片轮转调度(round-robin scheduing RR)算法:

    • 所有的就绪任务按照先来先服务的原则排成一个队列
    • 在每次调度的时候,把处理器分派给队列当中的第一个任务,让它去执行一小段时间(时间片)。在这个时间段里任务被阻塞或结束,或者任务的时间片用完了,它会被送到就绪队列的末尾,然后调度器再执行当前队列的第一个任务
  • 特点:

    • 时间片轮转调度(round-robin scheduing RR)算法的优点:
      • 公平性:每个就绪任务平均地分配使用CPU的时间
      • 活动性:每个就绪任务都能一直保持着活动性
    • 采用时间片轮转调度算法,任务的时间片大小要适当选择
    • 时间片大小的选择会影响系统的性能和效率
      • 时间片太大,时间片轮转调度就没有意义
      • 时间片太小,任务切换过于频繁,处理器开销大,真正用于运行应用程序的时间会减小
  • 时间片轮转法有一个默认前提,即位于就绪队列中的各个任务时同等重要的

    • 任务按照先来后到的顺序排成一个队列
    • 大家轮流执行相同长度的时间片

优先级算法:

  • 给每个任务都设置一个优先级

  • 在任务调度的时候,让所有处于就绪状态的任务中选择优先级最高的那个任务去运行

  • 优先级算法分为:可抢占式和不可抢占式

    • 可抢占式:当一个任务正在运行,一个优先级更高的新任务进入就绪状态,会立即抢占CPU运行新任务
    • 不可抢占式:当一个任务正在运行,一个优先级更高的新任务进入就绪状态,等当前任务执行完再决定
  • 优先级算法确定方式:

    • 静态方式
      • 在创建任务的时候就确定任务的优先级,且一直保持不变直到任务结束
      • 缺点:高优先级的任务会一直占用着CPU运行,低优先级的任务可能会长时间地得不到CPU,一直处于“饥饿”状态
    • 动态方式
      • 在创建任务的时候确定任务的优先级,但该优先级可以在任务的运行过程中动态改变,以获得更好的调度性能
  • 在优先级算法中,把任务按照不同的优先级进行分组,不同组的任务之间使用优先级算法,同一组的各任务之间使用时间片轮转法

  • 采用优先级调度算法还有一个问题是可能会发生优先级反转(priority inversion),出现任务“饥饿”现象

  • 理想情况下,高优先级任务就绪后,能够立即抢占低优先级任务而得到执行

  • 实际系统中,但在有多个任务需要使用共享资源的情况下,可能会出现高优先级任务被低优先级任务阻塞,并等待低优先级任务执行的现象

  • 优先级反转(priority inversion)

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

任务间通信

  • 任务间通信(intertask communication):任务之间为了协调工作,需要相互交换数据和控制信息

  • 任务之间的通信可以分为两种类型:

    • 低级通信:只能传递状态和整数值等控制信息,例如信号量机制、异步信号机制
    • 高级通信:能够传输任意数量的数据,主要有三类:共享内存消息传递管道
  • 共享内存(shared memory):各个任务共享其地址空间中的某些部分,在此区域,可以任意读写和使用任意的数据结构,把它看成一个通用的缓冲区

    • 使用共享内存来传递数据时,通常需和任务间的互斥机制结合起来,以免产生竞争条件,确保数据顺利传送
  • 消息:内存空间中一段长度可变的缓冲区,其长度和内容均可以由用户定义,其内容可以是实际的数据、数据块的指针或空

  • 对消息内容的解释由应用完成

    • 从操作系统观点看,消息没有定义的格式,所有的消息都是字节流,没有特定的含义
    • 从应用观点看,根据应用定义的消息格式,消息被解释成特定的含义
    • 应用可以只把消息当成一个标志,这时消息机制用于实现同步
  • 消息传递:任务与任务之间通过发送和接受消息来交换信息

  • 消息机制由操作系统来维护,包括定义寻址方式、认证协议、消息的数量等,一般提供两个基本操作

    • send操作:发送一条消息
    • receive操作:接受一条消息
  • 任务间的通信方式:

    • 直接通信。在通信过程中双方必须明确地知道(命名)彼此:
      • Send(p,message)发送一个消息到任务p
      • Receive(Q,message)从任务Q接受一个消息
    • 间接通信。通信双方不需要指出消息的来源或去向,而通过中间机制来通信。如:
      • snend(A,message)发送一个消息给邮箱A
      • receive(A,message)从邮箱A接受一个消息
  • 一些操作系统内核把消息进一步分为:邮箱和消息队列

    • 邮箱仅能存放单条消息,它提供了一种低开销的机制来传递信息。每个邮箱可以保存一条大小为若干个字节的消息
    • 消息队列可存放若干消息,提供了一种任务间缓冲通信的方法,间接通信方式
  • 管道(pipe)是提供非结构化数据交换和实现任务间同步的内核对象。在传统的实现中,管道是单向数据交换设施

    • 数据在管道中像一个非结构字节流,按FIFO的次序从管道中读出
    • 当管道空时,阻塞读者,当管道满时,阻塞写者
  • 管道和消息队列的区别

    • 管道不存储多个消息,它存储的数据是非结构化的字节流
    • 管道中的数据严格地遵循先进先出的顺序
    • 管道支持选择(select)操作,而消息队列不支持

文件管理

文件组织结构

  • 逻辑结构
    • 流式文件
    • 记录式文件
  • 物理结构
    • 顺序结构
    • 链接结构
    • 索引结构

微信图片_20241024101151

树形目录结构

  • 绝对路径
  • 相对路径

微信图片_20241024101129

空闲存储空间的管理

  • 位示图法

微信图片_20241024101207

设备管理

虚设备与SPOOLING技术

微信图片_20241024101201

台区

  • 定义:台区是指(一台)变压器的供电范围或区域,是电力经济运行管理的名词。
  • 类型:按照负荷类型不同,台区可分为城市居民台区、商业台区、工业台区和农业台区四类。
  • 功能:电能运输与分配、电能质量检测、能源管理

功率因数

  • 定义:又称功率系数,是交流电路中有功功率(P)与视在功率(S)的比值,常用符号cosΦ表示,其中Φ为电压与电流之间的相位差。
  • 视在频率是指电路的总功率,包括了有功功率和无功功率两个部分。
  • 功率因数的大小反映了电路中有功功率在总功率中所占的比例。功率因数越高,说明电路中有功功率的比例越大,电能的利用效率也就越高。反之,功率因数低则表明电路中无功功率的比例较大,电能的利用效率低。

射频电磁场

  • 定义:射频电磁场(Radiofrequency Electromagnetic Fields,简称RF)是高频交流变化电磁波的简称。当交流电的频率达到10^5 Hz(即100 kHz)以上时,其周围就形成了高频率的电场和磁场,即射频电磁场。射频电磁场在多个领域有着广泛的应用和重要作用。

差模电流

  • 定义:差模电流是指在电源线与电源回线之间(或在信号线与信号回线之间)流动的、大小相同但方向相反的电流。这种电流通常是由电路中的工作信号或信号源产生的。差模电流是平衡电流的一种形式,其特点是电流在传输线中以相反的方向流动,从而减少了电磁辐射和对外界设备的干扰。
  • 应用与影响:在信号传输中,使用差模信号可以降低共模电流的影响,提高信号的传输质量。差模电流主要通过平衡传输线进行传输,这种传输方式通过将正负极性的信号分别传输以减少信号的失真和噪声。此外,在电磁兼容性(EMC)设计中,差模电流和共模电流是需要关注的重要参数。通过合理设计滤波电路和选择合适的滤波器,可以抑制和衰减传导干扰(包括差模干扰和共模干扰),确保电子设备的正常工作和性能稳定。

直流电压纹波

  • 定义:直流电压纹波是由于直流稳定电源的电压波动而造成的一种现象。直流电源一般是由交流电源经整流稳压等环节而形成的,这就不可避免地在直流稳定量中带有一些交流成分,这种叠加在直流稳定量上的交流分量就被称为纹波。

潜动

  • 定义:是指电能表在运行或校验时,只加电压而负载电流为零时,表盘仍然连续旋转的现象。简单来说,就是当电能表没有实际负载电流而通过电压时,其转盘会不正常地转动。
  • 电能表产生潜动的原因
    • 有轻微负荷,如配电盘上的指示灯、带灯开关、线路负荷定量器、电压互感器、变压器、电焊机空载运行和功率因数过低等。
    • 潜动试验不合格。一般电能表轻载正、负误差偏大。
    • 没按正相序电源进行电能表接线。
    • 三相电压严重不平衡。
    • 电流互感器匝间短路或存在漏电,电路绝缘破损及电能表电流线圈烧毁等。

浪涌试验

  • 定义:浪涌试验是指在电子设备中注入控制的电压和电流瞬态,模拟实际使用条件下可能发生的过电压和过电流,以评估设备的耐受能力。这些瞬态电压和电流可能由外部因素引起,如雷击、电源开关操作或其他用户的操作。

相位角

  • 定义:某一物理量随时间(或空间位置)作正弦或余弦变化时,决定该量在任一时刻(或位置)状态的一个数值。

八种输入输出模式

  • 推挽输出(Push-Pull Output):推挽输出模式是最常见的GPIO输出模式。在该模式下,引脚可以输出高电平或低电平,同时具有一定的驱动能力。引脚在输出低电平时形成低阻抗,输出高电平时形成高阻抗,可以驱动外部电路。
  • 开漏输出(Open-Drain Output):开漏输出模式是一种能够输出低电平和高阻抗的GPIO模式。在该模式下,引脚只能输出低电平,要输出高电平需要通过外部上拉电阻或其他方式。通常用于与外部器件连接,例如与开漏输出的I2C总线器件进行通信。
  • 复用推挽输出(AF Push-Pull Output):复用推挽输出模式允许将GPIO引脚用作特定外设功能。在该模式下,引脚可以输出高电平或低电平,并具有一定的驱动能力。
  • 复用开漏输出(AF Open-Drain Output):复用开漏输出模式允许将GPIO引脚用作特定外设功能。在该模式下,引脚只能输出低电平,要输出高电平需要通过外部上拉电阻或其他方式。
  • 浮空输入(Floating Input):浮空输入模式是一种高阻抗输入模式。在该模式下,引脚不连接到外部电路,处于高阻抗状态。可以通过读取引脚电平来检测外部信号。
  • 上拉输入(Pull-up Input):上拉输入模式是一种具有内部上拉电阻的GPIO输入模式。在该模式下,引脚连接到外部电路,通过内部上拉电阻来维持默认电平为高电平。
  • 下拉输入(Pull-down Input):下拉输入模式是一种具有内部下拉电阻的GPIO输入模式。在该模式下,引脚连接到外部电路,通过内部下拉电阻来维持默认电平为低电平。
  • 模拟输入(Analog Input):模拟输入模式是一种用于ADC(模数转换器)输入的特殊模式。在该模式下,引脚可以接收连续变化的模拟信号。

VCC、VSS和VDD

  • VCC:供电端电压
  • VSS:接地端电压(常作为接地点)
  • VDD:芯片内部工作电压

起动电流

  • 定义:在功率因数为1时,规定的电能表应起动并连续记录电能的最小电流值,多相电能表应带平衡负载。
  • 功率因数为1是指有功功率等于视在功率。

最小电流

  • 定义:复合电能表准确度要求的电流最小值。
  • 代号:Imin

转折电流

  • 定义:规定的电流值,在大于等于该值时,与电能表准确度等级对应的最大允许误差在最小极限内。
  • 代号:Itr

最大电流

  • 定义:规定的电能表持续承载并保持安全且满足准确度要求的电流的最大值。
  • 代号:Imax

标称电压

  • 定义:确定电能表相关性能所依据的电压值。
  • 代号:Unom

标称频率

  • 定义:确定电能表相关性能所依据的频率值。

初始固有误差

  • 定义:在性能试验和耐久性试验之前,在参比条件下测定的电能表误差。

基本最大允许误差

  • 定义:除电流和功率因数在额定工作条件给出的范围内变化外,且电能表工作在参比条件下时,所允许的测量电能表指示的误差的极限值。

间谐波

  • 定义:其频率为信号基波频率非整数的信号部分。

  • 由谐波次数扩展,间谐波次数是间谐波频率域基波频率的比值。该比值为非整数。

    • ”非整数”的原因
      • 定义:间谐波(Interharmonics)定义为频率与基波频率的比值为非整数的频率分量。这是间谐波的基本定义,直接说明了其频率与基波频率之间不存在整数倍的关系。
      • 物理特性:间谐波与基波频率不存在同步关系,其频率分布可能是位于两个谐波频率之间的离散频率分量,也可能是连续频谱。这种非同步和非整数倍的关系使得间谐波具有独特的物理特性。
  • 间谐波的产生原因

    • 非线性设备:随着电力电子元件等非线性设备在电力系统中的广泛应用,这些设备在工作过程中会产生非基波频率整数倍的谐波,即间谐波。这些谐波对电网的污染日益严重,是间谐波产生的主要原因之一。
    • 波动负载:许多负载(不论是线性的还是非线性的)是波动的,这导致对于工频的“周期性”前提已不存在。因此,用傅立叶理论分析的结果可能不完全符合实际,从而产生了非整数倍基波频率的间谐波。
    • 主动调制与控制:除了工频电力系统遭遇“外来”客观扰动外,主动调制(包括调幅、调频、调相)和主动控制(如电力电子变流器)也会产生间谐波。这些谐波是基波能量和外加能量综合作用的结果,其频率与基波频率之间不存在固定的整数倍关系。

影响量

  • 定义:电能表外部的、可能影响电能表的功能或计量性能的任一长时间的量。

干扰

  • 定义:电能表外部的、可能影响电能表的功能或计量性能的任一短时间(瞬时)的量。

热稳定

  • 定义:当由热效应引起的误差偏移在20min内按认可的方法所测得的值(根据不同试验所确定的计量值)小于基本最大允许误差的0.1倍时,则可认为仪表达到热稳定。

电能表电压工作范围中“扩展的工作范围”

  • 定义:设备或系统能够正常工作的电压范围,这个范围超出了其标准或规定的工作电压范围,但仍在设备或系统能够安全、稳定运行的极限之内。这种扩展的工作范围设计通常是为了提高设备或系统的灵活性和适应性,以应对不同的工作条件和需求。

脉冲常数

  • 定义:,脉冲常数通常用来表征每度电(kWh)所对应的脉冲个数。单位通常为imp/kWh(脉冲数/千瓦时)或p/kWh等。这种表示方式使得电能表能够通过计数脉冲个数来准确计量电能的消耗。

  • 为什么能用脉冲数计算电能消耗:电能的计量通常是通过记录脉冲信号来完成的。在电能表内部,有电流互感器、电压互感器和A/D变换器等模块,这些模块将电能转化为数字信号,并输出脉冲信号给计量器。

传导干扰

  • 定义:传导干扰是指通过导电介质把一个电网络上的信号耦合到另一个电网络的行为现象。
  • 分类:传导干扰可以分为共模传导干扰和差模传导干扰两种。共模传导干扰是指信号或干扰源以相同的方式影响多个电路,如共享电源线上的噪声干扰;差模传导干扰则是指信号或干扰源的差异在电路间引起的干扰,如差分信号传输中的干扰。
  • 产生原因:传导干扰的产生主要源于电子系统中不同电路之间的相互作用。它可以来自其他电子设备、电源线的噪声、开关电路、发射机和无线电频率干扰等。当这些干扰源通过电源线、信号线等物理连接传播到其他电路时,就会产生传导干扰。

准确度等级

  • 根据国际标准GB/T 17215.321的规定
    • A级代表2级
    • B级代表1级
    • C级代表0.5级
    • D级代表0.2级
    • E级代表0.1级

功率因数0.5L和功率因数0.8C

  • 功率因数0.5L
    • 含义:功率因数0.5L表示在交流电路中,电流与电压之间的相位差使得它们的余弦值为0.5,并且这个相位差是由于电感(L)引起的。具体来说,0.5表示电流滞后电压60°,即电压与电流的夹角为60度(cos60°=0.5),这通常出现在感性电路中,即电压超前于电流60度。
    • 特性:感性电路的特点是电流滞后于电压,这种相位差导致电流的一部分并不用于产生有功功率(即驱动负载的实际功率),而是产生了无功功率,增加了电网中的能量损耗和负荷。
  • 功率因数0.8C
    • 含义:功率因数0.8C表示在交流电路中,电流与电压之间的相位差使得它们的余弦值为0.8,但这个相位差是由于电容(C)引起的。具体来说,这里的“C”并不是直接表示功率因数的值,而是表示电容元件的电容,与“L”表示电感元件的电感相对应。然而,在实际应用中,当我们看到“0.8C”这样的表示时,更可能是指功率因数为0.8且电路呈现出容性特性(即电流超前电压)。但严格来说,“0.8C”并不是标准的功率因数表示方法,更常见的表示方式是直接写为cosφ=0.8(容性)。
    • 特性:容性电路的特点是电流超前于电压,这种相位差同样导致一部分电流不用于产生有功功率,而是产生了无功功率。但与感性电路不同的是,容性电路在某些情况下可以通过与感性电路并联来相互补偿无功功率,从而提高整个电网的功率因数。

电压线路和电流线路

  • 电压线路
    • 主要作用:电压线路是电能表上用于测量电压的部分,也被称为V线。它主要用来测量电路中的电压,确认供电方的用电情况。
    • 实现方式:电压线路通常通过电压互感器或类似元件将高电压安全地转换为低电压进行测量,以保护测量设备和人员的安全。
  • 电流线路
    • 主要作用:电流线路是电能表上用于测量电流的部分,也被称为A线。它主要用来测量电路中的电流,判断电路中电器设备的用电情况。
    • 实现方式:电流线路通常通过电流互感器将大电流转换为小电流进行测量,这种转换不仅降低了测量难度,还提高了测量精度和安全性。
  • 接口位置:在电表上,电压线路的接口通常是高电压端,而电流线路的接口通常是低电压端。这是因为电流线路需要拥有低内阻,才能测量出准确的电流值;而电压线路则需要阻抗高一些才能将测得的值正常传输至电表中。
  • 测量原理:电压线路通过测量电压差来测量电路中的电压;而电流线路则通过测量电路中的电流大小来进行测量。

继电器

  • 定义:一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。
  • 工作原理:当输入量(如电压、电流、温度等)达到规定值时,继电器通过电磁效应、机械传动或声、光、热元件等使输出回路发生阶跃变化(通或断),从而控制或保护被控对象。
  • 分类
    • 根据输入信号的性质可以分为电压继电器、电流继电器、时间继电器、温度继电器、速度继电器、压力继电器等;
    • 根据工作原理可以分为电磁继电器、固体继电器、温度继电器、舌簧继电器、时间继电器、高频继电器等;
    • 根据触点形式可以分为动合型(H型)、动断型(D型)、转换型(Z型)。
  • 主要作用
    • 扩大控制范围:例如,多触点继电器控制信号达到某一定值时,可以按触点组的不同形式,同时换接、开断、接通多路电路。
    • 放大:例如,灵敏型继电器、中间继电器等,用一个很微小的控制量,可以控制很大功率的电路。
    • 综合信号:例如,当多个控制信号按规定的形式输入多绕组继电器时,经过比较综合,达到预定的控制效果。
    • 自动、遥控、监测:例如,自动装置上的继电器与其他电器一起,可以组成程序控制线路,从而实现自动化运行。

电能潮流

  • 定义:通常称为电力潮流(Power Flow),是电力系统在运行时,电流或功率从电源通过系统各元件流入负荷,分布于电力网各处的现象。
  • 计算:从电的产生到被负荷消耗,流过哪一路输配电线,各节点电压是多少,这种计算称为电力潮流计算或简称潮流计算。

智能电能表

  • 定义:由测量单元、数据处理单元、通信单元等组成,具有电能量计量、信息存储及处理、实时监测、自动控制和信息交互等功能的电能表。

基本电流

  • 定义:确定直接接入电能表有关特性的电流值,Ib=10Itr

额定电流

  • 定义:确定经互感器接入电能表有关特性的电流值,In=20Itr。额定电流和基本电流之间并不是2倍关系,二者是相对于不同电能表而言的表述,二者转折电流不同,而额定电流是等于基本电流的。这里的额定电流指的是电能表外部有互感器的情况。

需量

  • 定义:规定时间内的平均功率。

需量周期

  • 定义:测量平均功率的连续相等的时间间隔。

最大需量

  • 定义:在规定时间段内记录的需量的最大值。

滑差时间

  • 定义:依次递推用来测量最大需量的小于需量周期的时间间隔。

冻结

  • 定义:存储特定时刻重要数据的操作。

时段

  • 定义:将一天中的24小时划分成若干时间区段。

费率

  • 定义:与电能消耗时段相对应的计算电费的价格体系。

介质

  • 定义:售电系统和电能表之间以某种方法传递信息的媒体。
  • 分类
    • 固态介质:具备合理的电气接口,具有特定的封装形式的介质,如接触式IC卡等。
    • 虚拟介质:采用非固态介质传输信息的介质,可以为电力线载波、无线电、电话或线缆等。

CPU卡

  • 定义:配置有存储器和逻辑控制电路及微处理(MCU)电路,能多次重复使用的接触式IC卡。

ESAM

  • 定义:嵌入在设备内,实现安全存储、数据加/解密,双向身份认证、存取权限控制、线路加密传输等安全控制功能的模块。

剩余金额

  • 定义:在电能表中记录的可供用户使用的电费金额,该金额应大于等于零。

透支金额

  • 定义:用户已使用但未缴纳电费的金额值,该值小于零。

透支门限金额

  • 定义:允许用户合法使用的最大透支金额。

报警金额

  • 定义:剩余金额的报警限值,当剩余金额小于等于报警限值时,电能表给出或其他方式报警。

负荷开关

  • 定义:负荷开关是一种用于控制电路中负载(如电气设备、灯具、电动机等)通断的电气开关装置。它通过手动或自动操作实现对电路的控制,具有可靠性高、操作简便、安全可靠等特点,广泛应用于电力系统、工业自动化控制、交通信号控制以及建筑智能化等领域。
  • 分类:可采用内置和外置方式。
  • 作用:控制用户用电。
  • 表内的跳闸控制开关宜采用电磁继电器。

低压电力线载波

  • 定义:将低压电力线作为数据/信息传输载体的一种通信方式,简称“载波”。

公网通信

  • 定义:采用公网通信信道实现数据传输的通信。

阶梯电价

  • 定义:在一个约定的用电结算周期内,把用电量分为两段或多段,每一分段对应一个单位电价,单位电价在分段内保持不变,但是可随分段不同而变化,针对上述电量制定的单位电价。

临界电压

  • 定义:电能表能够启动工作的最低电压。

  • 这里的启动工作表示电能表能够正常的计量、显示、记录事件,不强制要求响应背光点亮、通信、跳合闸、报警输出等。

  • 对于三相电能表,当各相电压均达到标称电压的60%时或单相电压达到标称电压的85%单独工作时,电能表能够启动工作;对于单相电能表,当电压达到标称电压的60%时,电能表能够启动工作。

电压(电流)不平衡率

  • 定义:在三相供电系统中,电压(电流)不平衡率为最大相电压(电流)和最小相电压(电流)之差占最大相电压(电流)的百分比。
  • 对于电压不平衡率三相三线情况下,用 UabUcb 参与运算。
  • 对于电流不平衡率三相三线情况下,B相电流不参与运算。

欠压

  • 定义:在三相(或单相)供电系统中,某相电压大于设定的过压事件电压触发下限,且持续时间大于设定的欠压事件判定延时时间的工况。
  • 当“过压时间电压触发下限”设定为“0”时,表示“过压事件”不启用。

过流

  • 定义:在三相(或单相)供电系统中,某相负荷电流大于设定的过流事件电流触发下限,且持续时间大于设定的过流事件判定延时时间的工况。

  • 当“过流事件触发下限”设定为“0”时,表示“过流事件”不启用。

断流

  • 定义:在三相(或单相)供电系统中,某相电压大于断流事件电压的触发下限,同时该相电流小于设定的断流事件电流触发上限,且持续时间大于设定的断流事件判定延时时间的工况。
  • 三相三线情况下,电压用 UabUcb 参与运算,B相电流不参与运算。
  • 当“断流事件电流触发上限“设定为”0“时,表示”断流事件“不启用。

电压不平衡

  • 定义:当三相电压中任一相大于电能表的临界电压,电压不平衡率大于设定的电压不平衡率限值,且持续时间大于设定的电压不平衡率判定延时时间的工况。
  • 当“电压不平衡率限值”设定为“0”时,表示“电压不平衡事件”不启用。

电流不平衡

  • 定义:当三相电流中的任一相电流大于5%额定(基本)电流,电流不平衡率大于设定的电流不平衡率限值,且持续时间大于设定的电流不平衡判定延时时间的工况。
  • 当“电流不平衡率限值”设定为“0”时,表示“电流不平衡事件”不启用。

电流严重不平衡

  • 定义:当三相电流中的任一相电流大于5%额定(基本)电流,电流不平衡率大于设定的电流严重不平衡率限值,且持续时间大于设定的电流严重不平衡判定延时时间的工况。
  • 当“电流严重不平衡率限值”设定为“0”时,表示“电流严重不平衡事件”不启用。

功率因数超下限

  • 定义:在三相(或单相)供电系统中,当总功率因数小于设定的功率因数超下限阈值,同时任意一相电流大于5%额定(基本)电流,或者当某相功率小于设定的功率因数超下限阈值,同时该相电流大于5%额定(基本)电流,且持续时间大于设定的功率因数超下限判定延时时间的工况。
  • 三相三线情况下,不判断分相功率因数超下限。
  • 当“功率因数超下限阈值”设定为“0”时,表示“功率因数超下限事件”不启用。

有功功率反向

  • 定义:在三相供电系统中,当总或任一相有功功率方向为反向,同时该总或任一相有功功率大于设定的有功功率反向事件有功功率触发下限,且持续时间大于设定的有功功率反向事件判定延时时间的工况。
  • 当“有功功率反向事件有功功率触发下限”设定为“0”时,表示“有功功率反向事件”不启用。
  • 三相三电供电系统不要求分相功率反向。

过载

  • 定义:在三相(或单相)供电系统中,某相功率大于设定的过载事件有功功率触发下限,且持续时间大于设定的过载事件判定延时时间的工况。
  • 当“过载事件有功功率触发下限”设定为“0”时,表示“过载事件”不启用。

断相

  • 定义:在三相供电系统中,当某相电压低于设定的断相事件电压触发上限,同时该相电流小于设定的断相事件电流触发上限,且持续时间大于设定的断相事件判定延时时间的工况。
  • 三相三线情况下,电压用 UabUcb 参与运算,不判断B相断相。
  • 当“断相事件电压触发上限”设定为“0”时,表示“断相事件”不启用。

失流

  • 定义:在三相供电系统中,三相中至少有一相负荷电流大于失流事件电流触发下限,某相电压大于设定的失流事件电压触发下限,同时该相电流小于设定的失流事件电流触发上限值时,且持续时间大于设定的失流事件判定延时时间的工况。
  • 三相三线情况下,电压用 UabUcb 参与运算,B相电流不参与运算。
  • 当“失流事件电流触发上限”设定为“0”时,表示“失流事件”不启用。

失压

  • 定义:在三相供电系统中,某相电流大于设定的失压事件电流触发下限,同时该相电压低于设定的失压事件电压触发上限,且持续时间大于设定的失压事件判定延时时间的工况。
  • 三相三线情况下,电压用 UabUcb 参与运算,不判断B相失压。
  • 当“失压事件电流触发上限”设定为“0”时,表示“失压事件”不启用。

全失压

  • 定义:在三相供电系统中,若三相电压均低于电能表的临界电压,且有任一相或多相负荷电流大于 5%额定(基本)电流,且持续时间大于 60s 的工况。
  • 全失压时,不管电能表能否工作,都记录全失压;如果这时电能表还能工作,电压继续降低直到电能表不能工作时,不记录全失压结束,直到电压恢复至电能表启动工作时,再进行全失压事件的判断。
  • 电能表停止工作后,在停止工作 60s 时检测且仅检测电流一次,进行全失压事件记录的判断,此后不再检测电流。
  • 全失压发生时,分相失压事件记录结束。

掉电

  • 定义:电能表供电电压低于电能表临界电压的工况。
  • 电能表符合掉电工况时,不管电能表能否工作,都记录掉电;如果这时电能表还能工作,电压继续降低直到电能表不能工作时,则不记录掉电结束,等到电压恢复至电能表启动工作时,再进行记掉电事件的判断。
  • 对于三相电能表,掉电工况为三相供电电压均低于电能表临界电压。
  • 当电能表供电电源符合掉电的条件,即使电能表有辅助电源供电,也必须记录掉电状况。

电压逆相序事件

  • 定义
  • 在三相供电系统中,三相电压均大于电能表的临界电压,三相电压逆相序,且持续时间大于 60s 时记录的事件。

电流逆相序事件

  • 定义:在三相供电系统中,三相电压均大于电能表的临界电压,三相电流均大于 5%额定(基本)电流,三相电流逆相序,且持续时间大于 60s 时记录的事件。

有功需量超限

  • 定义:在三相供电系统中,总有功需量大于设定的有功需量超限事件的需量触发下限,且持续时间大于设定的需量超限事件判定延时时间的工况。
  • 当“有功需量超限事件需量触发下限”设定为“0”时,表示“有功需量超限事件”不启用。

无功需量超限

  • 定义:在三相供电系统中,总无功需量大于设定的无功需量超限事件需量触发下限,且持续时间大于设定的需量超限事件判定延时时间的工况。
  • 当“无功需量超限事件需量触发下限”设定为“0”时,表示“无功需量超限事件”不启用。

恒定磁场干扰事件

  • 定义:三相电能表检测到外部有 100mT 以上强度的恒定磁场,且持续时间大于 5s 时记录的事件。

电源异常事件

  • 定义:电能表的外部供电为电能表正常工作电压范围(0.8Unom~1.15Unom)时,但电能表内部处理器工作电压异常导致处理器进入到低功耗状态,且持续时间大于 1s 时记录的事件。
  • 内置负荷开关拉闸情况下不要求做此事件记录。
  • 电能表在进入低功耗后记录且仅记录一次电源异常事件。

负荷开关误动作事件

  • 定义:电能表负荷开关实际状态与电能表发给负荷开关的命令状态不一致,且持续 5s 以上时记录的事件。

零线电流异常事件

  • 定义:在三相(或单相)供电系统中,零线电流和火线电流(三相电能表的火线电流为三相电流矢量和)中任一电流大于电流触发下限,零线电流、火线电流的不平衡率大于不平衡率限值,且持续时间大于设定的判定延时时间时记录的事件。
  • 当“零线电流不平衡限制”设定为“0”时,表示“零线电流异常事件”不启用。
  • 直接接入式电能表应采用抗直流采样元件实现零线电流测量及监测,经互感器接入式电能表不要求零线电流测量功能。
  • 零线电流、火线电流的不平衡率为零线电流、火线电流的差值绝对值与零线电流、火线电流中最大值的比例。

计量芯片故障事件

  • 定义:电能表微处理器与电能表的计量芯片通信失败,且持续时间大于设定的判定延时时间时记录的事件。

时钟故障事件

  • 定义:当电能表时钟在运行过程或停上电过程中发生倒退、格式错乱、上电时刻时间小于掉电时间或大于掉电时间1000天等情况时记录的事件。
  • 当电能表收到明文方式广播校时指令时,如果广播校时的校时范围大于最大校时偏差(默认5分钟),电能表不接受校时,同时记录时钟故障事件;每个自然日因为该原因最多只生成一条时钟故障事件记录。

“缺省”通信

  • 定义:在电能表调制型红外接口的缺省通信中,“缺省”一词的含义是指系统或设备在出厂时预设的、未经用户修改的默认通信参数或设置。这些缺省参数和设置是制造商根据通用标准、设备性能以及用户常见需求而设定的,以确保设备在初次使用时能够正常工作,并与其他兼容设备或系统顺畅通信。

调制型红外接口

  • 调制技术:调制技术是将数据信号(基带信号)与载波信号(高频信号)混合,以产生适合传输的信号的过程。在调制型红外接口中,数据信号被调制到红外光载波上,形成红外光脉冲信号进行传输。
  • 接口特点
    • 通信速率:调制型红外接口的通信速率通常较高,可以满足多种数据传输需求。具体速率取决于调制技术和接口设计,但一般高于无调制的红外接口。
    • 抗干扰能力强:由于采用了调制技术,红外光信号在传输过程中能够更好地抵抗环境干扰,如光线、电磁干扰等。
    • 传输距离远:调制型红外接口通常具有较远的传输距离,适用于需要远距离数据传输的场合。
    • 安全性高:红外光信号传输具有方向性,且难以穿透障碍物,因此具有较高的安全性。
  • 作用:这种调制方式可以提高数据传输的抗干扰能力和传输距离。

有功总电量、有功尖电量、有功峰电量、有功平电量和有功谷电量

  • 在电力系统中,为了更合理地分配电力资源、制定电价以及进行电力需求管理,通常会根据用电负荷的不同时间段来划分电量,这就是所谓的分时电量。具体来说,有功总电量是指一段时间内(如一个月)用户消耗的总电量,而不区分时间段。而有功尖电量、有功峰电量、有功平电量和有功谷电量则是根据用电负荷的高低来划分的。
  • 有功尖电量:这通常指的是在一天中用电负荷最高的时段(即尖峰时段)内消耗的电量。尖峰时段一般出现在白天的工作高峰,此时电力需求最大,电网负荷最重。尖峰电量的价格通常也是最高的,以鼓励用户在非高峰时段用电。
  • 有功峰电量:峰电量是指在一天中用电负荷相对较高的时段(即峰时段)内消耗的电量。峰时段虽然不如尖峰时段负荷高,但仍然属于用电高峰,因此峰电量的价格也会相应较高。
  • 有功平电量:平电量则是指在一天中用电负荷相对平稳的时段(即平时段)内消耗的电量。这个时段的电力需求较为稳定,电价也相对较低。
  • 有功谷电量:谷电量是指在一天中用电负荷最低的时段(即谷时段)内消耗的电量。谷时段一般出现在深夜至清晨,此时电力需求最低,电网负荷最轻。为了鼓励用户在谷时段用电,谷电量的价格通常是最低的。

数字地和模拟地

  • 数字地:数字地是数字信号的对地,主要是指TTL或CMOS芯片、I/O接口芯片、CPU芯片等数字逻辑电路的地端,以及A/D、D/A转换器的数字地。它也可以理解为各种开关量信号的零电位,是数字电压信号的基准端。数字地也被称为逻辑地,在一个完整的微机控制系统中,通常存在多种类型的地,如低电平电路地线、强电设备的地、机壳或控制柜的外壳地等。
  • 模拟地:模拟地是模拟信号的对地,主要指放大器、采样-保持器和A/D、D/A中模拟信号的接地端。在微型机控制系统中,数字地和模拟地必须分别接地,即使一个芯片上同时包含数字和模拟两种地(如A/D、D/A或S/H),也需要分别接地,并在一点处将两者连接起来。

接口带载能力

  • 定义:接口带载能力是指接口在外接负载后,其输出电压或电流的大小能否保持稳定,且不受外接负载变化影响的能力。简单来说,就是接口能否有效地驱动和支撑外部负载工作。

非激励态输出电压和激励态输出电压

  • 非激励态输出电压:非激励态输出电压是指当控制信号处于非激励(或称非激活、非工作)状态时,电路系统输出的电压值。
  • 激励态输出电压:激励态输出电压是指当控制信号处于激励(或称激活、工作)状态时,电路系统输出的电压值。

II类绝缘防护

  • 定义:电能表采用双重绝缘或加强绝缘作为主要的防电击措施。这种防护方式不依赖设备的外壳接地或安装条件,而是通过增加绝缘层的数量和厚度来提高电气安全性。
  • 实现方式
    • 双重绝缘
      • 电能表的内部电路与外部可触及部分之间设置两层绝缘层。
      • 这两层绝缘层各自独立,即使一层绝缘失效,另一层绝缘仍然能够提供保护。
    • 加强绝缘
      • 在某些情况下,可能采用单一但更厚的绝缘层,即加强绝缘。
      • 这种绝缘层具有更高的电气强度和耐电压能力,以确保在异常情况下也不会发生电击危险。

带热拔插操作

  • 定义:热插拔操作通常指的是在设备带电的情况下进行插拔操作。

驻留时间

  • 定义:规定频率下影响量施加的持续时间。

步进频率

  • 定义:试验中以固定的步长在一定范围不断变化的频率。

扫频测试

  • 定义:扫频测试是一种通过改变测试信号的频率,观察被测设备在不同频率下的响应特性的测试方法。

电能寄存器

  • 定义:电能寄存器是电能计量中不可或缺的重要组件,它通过记录电能数据为电费计算、电力负荷分析、电力供需平衡等方面提供重要依据。
  • 分类
    • 正向有功电能寄存器:用于记录用户从电网中获取的电能,即用户用电的总电能值。
    • 反向有功电能寄存器:用于记录用户向电网输出的电能值,这在一些特殊情况下(如分布式发电系统)会发生。
    • 正向无功电能寄存器:用于记录用户从电网中获取的无功电能。无功电能是电网中用于建立和维护电磁场的能量,虽然不直接转化为有用功,但对电网的稳定运行至关重要。
    • 反向无功电能寄存器:记录用户向电网输出的无功电能。

共模与差模

  • 共模
    • 也称对地噪声,是指信号线与参考点(通常为大地或机架)之间的电压差。
    • 在电路中,共模信号表现为两个信号端点(或导线)对同一参考点(如地)有相同的电位变化或噪声。
    • 例如,当平衡线对中引入到两个平衡端的噪声电压,或者由于信号源与接收器之间的地电位差而产生的直流电平,都属于共模信号。
  • 差模
    • 也称串模,是指两个信号线之间的电压差。
    • 在电路中,差模信号表现为两个信号端点(或导线)之间的电位差,这种电位差是信号本身所携带的,用于传输有效信息。
    • 差模信号由一个正向信号和一个反向信号组成,它们在导线上以相等但相反的幅度传输。
  • 共模信号
    • 两个信号的幅度相等、相位相同。
    • 共模噪声对信号的传输具有干扰作用,容易导致信号失真和传输质量下降。
    • 衡量共模抑制能力的参数称为共模抑制比(CMRR),它反映了差分放大器对共模信号的抑制能力。
  • 差模信号
    • 两个信号的幅度相等、相位相反。
    • 差模信号的特点是其幅度大于单个信号的幅度,并且可以有效抵消外部干扰。
    • 差模传输主要用于提高信号质量和增强信号传输能力。

四象限

  • 定义:电能表计量中的四象限是将一个平面坐标系的横轴定义为无功功率(Q),纵轴定义为有功功率(P),通过这两个轴将平面划分为四个区域,即四个象限。这四个象限按顺时针方向依次为Ⅰ象限、Ⅱ象限、Ⅲ象限和Ⅳ象限。
  • Ⅰ象限
    • 定义:输入有功功率和输入无功功率(即P>0,Q>0)。
    • 特点:通常发生在用户设备为感性负载(如电动机)的情况下,电流滞后于电压。电网需要向用户设备提供有功功率和无功功率,以维持设备的正常运行。
    • 应用场景:大多数用户的正常用电状态都属于Ⅰ象限。
  • Ⅱ象限
    • 定义:输出有功功率和输入无功功率(即P<0,Q>0)。
    • 特点:通常发生在用户设备相当于一台欠励磁发电机的情况下。用户设备向电网输出有功功率,但同时还需要从电网中吸收无功功率,以维持设备的稳定运行。
    • 应用场景:某些具有自发电能力的用户(如小型水电站、风力发电站等)在发电不足或负荷过大时,可能会处于Ⅱ象限状态。
  • Ⅲ象限
    • 定义:输出有功功率和输出无功功率(即P<0,Q<0)。
    • 特点:通常发生在用户设备相当于一台过励磁发电机的情况下。用户设备不仅向电网输出有功功率,还向电网输出无功功率,这有助于改善电网的功率因数,提高电网的效率。
    • 应用场景:某些具有强大自发电能力的用户(如大型水电站、核电站等)在发电过剩或负荷较小时,可能会处于Ⅲ象限状态。
  • Ⅳ象限
    • 定义:输入有功功率和输出无功功率(即P>0,Q<0)。
    • 特点:通常发生在用户设备为容性负载(如电容器组)的情况下,电流超前于电压。电网需要向用户设备提供有功功率,但用户设备会向电网输出无功功率,这有助于减少电网中的无功功率流动,提高电网的稳定性。
    • 应用场景:电力系统中的无功补偿装置(如并联电容器组)在投入运行时,可能会使系统处于Ⅳ象限状态。

电磁兼容、电磁干扰和电磁抗扰度

  • 电磁兼容(EMC):电子、电气设备或系统在电子、电气设备或系统在预期的电磁环境中,按设计要求正常工作的能力。它是电子、电气设备或系统的一种重要的技术性能。
    • 电磁干扰(EMI):在一定环境中设备或系统在正常工作时,不应产生超过相应标准所要求的电磁能量,相对应的测试项目根据产品类型及标准不同而不同。
    • 电磁抗扰度(EMS):在一定环境中设备或系统,在正常运行时,设备或系统能承受相应标准规定范围内的电磁能量干扰,相对应的测试项目也根据产品类型及标准不同而不同。
    • 电磁环境:系统或设备的工作环境。

开漏输出

  • 定义:开漏输出引脚是由单个晶体管(通常是N沟道MOSFET或NPN三极管)驱动的,它将引脚拉到只有一个电压(通常是地)。当输出设备关闭时,引脚被悬空(开放或高阻)。

  • 原理:以N沟道MOSFET为例,当MOSFET打开时,将信号拉到地(低电平);当MOSFET关闭时,引脚则保持开放状态,此时引脚的电平状态由外部电路决定,通常需要一个上拉电阻将引脚拉至高电平。

  • 应用场景

    • 总线通信:如I2C、SMBus等总线标准采用开漏输出方式,以支持多设备共享总线和实现电平匹配。

    • 电平转换:在需要实现不同电平之间转换的场合,开漏输出可以通过外接不同电压的上拉电阻来实现。

    • 驱动LED:虽然开漏输出通常需要外接上拉电阻才能输出高电平,但在驱动LED等简单负载时仍然有其应用空间。

数据链路层

  • 定义:数据链路层定义了在单个链路上如何传输数据,这些协议与被讨论的各种介质(如ATM、FDDI等)有关。数据链路层通过物理线路(物理链路)加上实现通信协议的硬件和软件,构成逻辑上的数据链路。
  • 功能
    • 封装成帧
    • 差错控制
    • 流量控制
    • 链路管理
    • MAC寻址
    • 区别数据和控制信息
    • 透明传输

面向对象的用电信息数据交换协议

  • 定义:基于面向对象的建模方法建立的一套使用于用电采集系统的互操作性数据交换通信协议。面对对象建模以接口类实现继承关系,以对象来封装数据及操作,以对象为互操作的基本要素。

对象标识

  • 定义:标识终端中对象唯一名称的编码。

逻辑名

  • 定义:用于标识接口类的实例,它是接口类的第一个属性,它的值与对象标识一致。

类标识码

  • 定义:用于区别对象接口类的标识码,即接口类的名称。

服务器地址

  • 定义:客户机/服务器访问模型中的服务器的通信地址。

逻辑地址

  • 定义:服务器模型中逻辑设备的地址。

客户机地址

  • 定义:客户机/服务器访问模型中的客户机的通信地址。

采集启动时标

  • 定义:启动采集任务时的设备时钟当前值,其值只与启动时刻有关,与执行时间的长短无关。

采集成功时标

  • 定义:客户机成功接收到服务器响应时的设备时钟的当前值。

采集存储时标

  • 定义:采集到的数据进行存储的时间。

组地址

  • 定义:具有某一相同属性的设备群组编码,如属于同一行业,同一变电站,同一线路,可以响应同一个命令。

通配地址

  • 定义:在十进制编码表示的地址码中出现了一位或多位采用了通配符的地址码。

消息鉴别码

  • 定义:用于鉴别消息完整性的固定长度的认证标识。

透传

  • 定义:改变信号传递的形式而不改变信号传递的内容。

光伏越限

  • 定义:主要是指光伏电站或分布式光伏发电系统在运行过程中,其电压、功率因数等参数超出了规定的范围或限制。

嵌入式系统开发与设计

  • 一个嵌入式应用项目的开发过程是一个硬件设计和软件设计的综合过程,一般而言要经历以下几个步骤:
    • 硬件的设计与实现
    • 设备驱动软件的设计与实现
    • 嵌入式操作系统的选择、移植,以及API接口函数的设计
    • 支撑软件的设计与调试
    • 应用程序的设计与调试
    • 系统联调,样机交付
  • 嵌入式应用程序的生成与加载嵌入式应用程序的生产与加载
  • 嵌入式软件开发有如下的几个特点
    • 需要交叉编译工具
    • 通过仿真手段进行调试
    • 开发板是中间目标机
    • 可利用的资源有限
    • 需要与硬件打交道
  • 嵌入式软件开发的挑战
    • 软硬件协同设计
    • 嵌入式操作系统
    • 代码优化
    • 有限的I/O功能
  • 嵌入式系统开发的最大特点:软硬件综合开发
    • 嵌入式产品是软硬件的结合体
    • 软件针对硬件开发、固化,不能进行任意修改
  • 嵌入式软件开发模式通常是包括三种
    • 本机开发
    • 交叉开发
    • 模拟开发
  • 嵌入式软件开发流程
    • 嵌入式平台选型
    • 软件设计
    • 特性设计
    • 编码
    • 测试
    • 下载和运行

嵌入式程序设计

程序设计语言

  • 程序设计语言程序设计语言

  • 各种程序语言特点

    • Fortran语言(科学计算,执行效率高)
    • Pascal语言(为教学而开发的,表达能力强,Delphi)
    • C语言(指针操作能力强,高效)
    • Lisp语言(函数式程序语言,符号处理,人工智能)
    • C++语言(面向对象,高效)
    • Java语言(面向对象,中间代码,跨平台)
    • C#语言(面向对象,中间代码,.Net)
    • Prolog语言(逻辑推理,简洁性,表达能力,数据库和专家系统)
    • Python语言(一种脚本语言)

程序语言的数据成分

  • 数据是程序操作的对象,具有以下属性
    • 数据名称:由用户通过标识符命名
    • 数据类型:说明数据占用内存的大小和存放形式
    • 存储类别:说明数据在内存中的位置和生存期
    • 作用域:说明可以使用数据的代码范围
    • 生存域:说明数据占用内存的时间范围
  • 程序设计语言的基本成分包括:
    • 数据
    • 运算
    • 控制
    • 传输
  • 数据类型
    • 基本类型:整型、字符型、实型、布尔类型
    • 特殊类型:空类型(void)
    • 用户定义类型:枚举类型
    • 构造类型:数组、结构、联合
    • 指针类型:type*
    • 抽象类型:类类型
  • 数据类型转换规则:char,short->int->unsigned->long,float->double

程序语言的运算成分

  • 指明允许使用的运算符号及运算规则,运算符号要规定优先级和结合性,大多数高级程序语言的基本运算包括了
    • 算术运算
    • 关系运算
    • 逻辑运算
    • 位运算

程序语言的控制成分

  • 三种基本逻辑结构
    • 顺序结构:是一种线性有序的结构,由一系列依次执行的语句或模块组成
    • 循环结构:是由一个或几个模块构成,程序运行时重复执行,直到满足某一条件为止
    • 选择结构:是根据条件成立与否选择执行路径的结构

传值/传址

  • 传值调用:实际上重新复制了一个副本给形参,不改变调用函数实参变量的内容
  • 传址调用:将实参地址给形参,将改变调用函数实参变量的内容传值

表达式

  • 前缀表达式+ab
  • 中缀表达式a+b
  • 后缀表达式ab+(逆波兰式)

编译器的工作阶段

  • 词法错误:非法字符,关键字或标识符拼写错误
  • 语法错误:语法结构出错,if…end if不匹配,缺分号
  • 语义错误:死循环,零除数,其他逻辑错误编译器的工作阶段

解释程序基本原理

  • 解释程序是另一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同

  • 但在运行用户程序时,它直接执行源程序或源程序的内部形式。因此,解释程序与编译程序最大的区别就是不产生源程序的目标程序

  • 解释程序通常可分为两部分

    • 分析部分,包括通常的词法分析、语法分析和语义分析程序。经分析后把源程序翻译成中间代码
    • 解释部分,用来对第一部分所产生的中间代码进行解释执行
  • 解释语句实现高级语言的三种方式

    解释程序基本原理

    • 源程序被直接解释执行的处理方式,如图标记A,这种解释程序对源程序逐个字符进行检查,然后执行语句规定的动作。如GOTO L
    • 解释程序也可以先将源程序翻译成某种中间代码的形式,然后对中间代码进行解释,实现用户程序的运行。解释方式B和C的不同之处在于中间代码的级别

C预处理

  • #define:定义宏
  • #include:包含一个源代码文件
  • #undef:取消已定义的宏
  • #ifdef:如果宏已经定义,则返回真
  • #ifndef:如果宏没有定义,则返回真
  • #if:一般含义是如果#if后面的常量表达式为true,则编译它与#endif之间的代码,否则跳过这些代码
  • #else:类似C语言中的else#else建立另一选择(#if失败的情况下)
  • #elif:类似于elseif,它形成一个if else-if阶梯状语句,进行多种编译选择
  • #endif:标识一个#if块的结束
  • #error:当遇到标准错误时,输出错误消息
  • #pragma:使用标准化方法,向编译器发布特殊的命令到编译器中

预定义宏

  • __DATE__:当前源文件的编译日期,格式为“Mmm dd yyyy”的字符串字面量

  • __TIME__:当前源文件的编译时间。格式为“hh:mm:ss”的字符串字面量

  • __FILE__:当前源文件名称,含路径信息

  • __FUNC__:当前函数名称

  • __LINE__:当前程序行的行号,表示为十进制整型常量

  • __STDC__:若当前编译器符合ISO标准,那么该宏的值为1,否则未定义

  • __STDC_HOSTED__:(C99)如果当前是宿主系统,则该宏的值为1,否则为0

数据类型

  • 基本数据类型基本数据类型
  • 变量
    • 常量(字面量和const常量)
    • void类型(特殊类型)
    • 数组(构造类型)
    • 枚举类型(自定义类型)
    • 结构体、位域和共用体(构造类型)

存储管理

  • 如图所示是一个程序运行时的内存分布屏幕截图 2024-09-13 095810

函数调用的过程

函数调用的例子

  1. 程序开始运行时,main函数被装入到内存,代码存放在内存的代码区域
  2. 全局变量区域分配了一个存储单元给变量z,并初始化为0
  3. 接下来,系统调用主函数main去运行
  4. 当这个函数调用发生时,系统就会在栈中给它分配一块内存空间(栈帧),存放main函数内部定义的局部变量x,y
  5. PC跳转到主函数的第一条语句,开始执行
  6. 函数执行完后,首先释放栈帧,x和y所占用的空间被释放,不能再访问
  7. 整个程序结束,全部变量z释放,不能再访问

变量的存储与作用域

变量的存储与作用域

面向对象的语言

  • Peter Coad和Edward Yourdon提出用下面的等式来识别面向对象方法,采用这四个概念开发的软件系统是面向对象的屏幕截图 2024-09-13 101143

串行接口基本原理与结构

  • 串行通信:数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度
  • 优点:
    • 传输线少、成本低
    • 特别适合远距离传送
  • 缺点:
    • 速度慢

串行数据传送3种基本的通信模式

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

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

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

串行通信在信息格式上划分

异步通信方式

  • 是指通信的发送和接收设备使用各自的时钟,控制数据的发送和接收过程

  • 为使双方的收发协调,要求发送和接收设备的时钟尽可能一致

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

  • 一帧数据的各位代码间的时间间隔是固定的,而相邻两帧的数据其时间间隔是不固定的

  • 在异步通信的数据传送中,传输线上允许空字符

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

    • 字符格式

      • 每个字符传送时,必须前面加一起始位,后面加上1、1.5或2位停止位
      • 例如ASCII码传送时,一帧数据的组成是:前面一个起始位,接着7位ASCII编码,再接着一位奇偶校验位,最后一位停止位,共10位串行异步通信字符格式
    • 波特率

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

      • 偶校验就是要使字符加上校验位有偶数个“1”
      • 奇校验就是要使字符加上校验位有奇数个“1”
      • 例如数据“00010011”,共有奇数个“1”,偶校验时,则校验位就置为“1”,奇校验时,则校验位就置为“0”
  • 异步通信的特点

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

同步通信方式

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

RS-232串行接口

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

  • RS-232C接口规格

    • EIA所制定的传送电气规格

      状态 L(LOW) H(Hight)
      电压范围 -25V~3V +3V~+25V
      负逻辑 1 0
    • RS-232C通常以±12V的电压来驱动信号线,TTL标准与RS-232C标准之间的电平转换电路通常采用集成电路芯片实现,如M2AX23等

  • RS-232C接口信号

    • EIA制定的RS-232C接口与外界的相连采用25芯(DB-25)和9芯(DB-9)D型插接件,实际应用中,并不是每只引脚信号都必须用到。

    • 各引脚功能如下RS232

      引脚号 符号名称 名称 说明
      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的控制信号,则采用完全连接方式RS232两种连接方式

RS-422串行接口

  • RS-422标准是RS-232的改进型,是一种单机发送、多机接收的单向、平衡传输规范,传输速率可达10Mb/s。采用差分传输方式,也称做平衡传输
    • 允许在相同传输线上连接多个接收节点,最多可接10个节点,即一个主设备(Master),其余10个为从设备(Salve),从设备之间不能通信
    • 支持一点对多点的双向通信。RS-422四线接口由于采用单独的发送和接受通道,因此不必控制数据方向,各装置之间任何必需的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现
  • RS-422的最大传输距离为4000英尺(约1219m),最大传输速率为10Mb/s
    • 传输速率与平衡双绞线的长度有关,只有在很短的距离下才能获得最高传输速率
    • 在最大传输距离时,传输速率为100Kb/s
    • 一般100m长的双绞线上所能获得的最大传输速率仅为1Mb/s
    • RS-422需要再传输电缆的最远端连接一个电阻,要求电阻阻值约等于传输电缆的特性阻抗
      • 在短距离(300m以下)传输时可以不连接电阻

RS-485串行接口

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

    • 在通信距离为几十米至上千米时,通常采用RS-485收发器
    • RS-485收发器采用平衡发送和差分发送
    • 即在发送端,驱动器将TTL电平信号转换成差分信号输出;在接受端,接收器将差分信号变成TTL电平,因此具有抑制共模干扰能力
    • 接受器能够检测低达200mV的电压,具有高的灵敏度,故数据传输距离可达千米以上
  • RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信

    • 采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主设备,其余为从设备
    • RS-485可以连接多达32个设备
  • RS-485的共模输出电压在-7~+12V之间,接收器最小输入阻抗为12kΩ

  • RS-485满足所有RS-422的规范,所以RS-485的驱动器可以在RS-422网络中应用

  • RS-485的最大传输速率为10Mb/s。在最大传输距离时,传输速率为100Kb/s

  • RS-485需要两个终端电阻,接在传输总线的两端,要求电阻阻值约等于传输电缆的特性阻抗

    • 在短距离传输(300m以下)时可不需要终端电阻

并行接口基本原理与结构

  • 并行通信通常是将数据字节的各位用多条数据线同时进行传送

    • 一般用来连接打印机、扫描仪等,所以又称打印口
  • 特点:

    • 控制简单、传输速度快
    • 由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难
  • 并行接口可以分为

    • SPP(标准并口)
    • EPP(增强型并口)
    • ECP(扩展型并口)
  • 并行总线分为:

    • 标准并行总线
    • 非标准并行总线
  • 常用的并行标准总线:IEEE488总线SCSI总线

  • MXI总线是一种高性能非标准的通用多用户并行总线

  • IEEE488总线

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

    • 速度可达5Mb/s,传输距离6m
    • 传输速率很高
    • 普遍用作计算机的高速外设总线,如连接高速硬盘驱动器
  • MXI(Multi-system extension Interface bus,多系统扩展接口总线)

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

PCI接口基本原理与结构

  • PCI(Peripheral Component Interconnect,外围设备互连)总线是由Intel公司推出的一种局部总线,是当前用于系统扩展最流行的总线之一

  • PCI总线是地址、数据多路复用的高性能32位和64位总线,是微处理器与外围控制部件、外围附加板之间的互连机构

  • PCI定义了32位数据总线,并且可扩展为64位。总线速度有33MHz和66MHz两种

    • 改良的PCI系统PCI-X,数据传输速度最高可以达到64位@133MHz
    • PCI总线主板插槽的体积比ISA总线插槽小,支持突发读写操作(突发数据传输),可同时支持多组外围设备
  • 与ISA总线不同,PCI总线的地址总线与数据总线是分时复用的,支持即插即用(PNP:PLug-and-Play)、中断共享等功能

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

    • 总线上所有时序的产生和控制都由Master发起
    • PCI总线在同一时刻只能供一对设备完成传输,要求有一个仲裁机构来决定谁有权拿到总线的控制权

USB接口基本原理与结构

  • USB(Universal Serial Bus,通用串行总线)是由Compaq、HP、Intel、Lucent、Microsoft、NEC和Philips公司制定的连接计算机与外围设备的机外串行总线

    • 最多可连接127个设备
    • 用于多种嵌入式系统设备的数据通信。如移动硬盘、PDA
  • 热插拔。USB提供机箱外的热插拔功能,连接外设不必再打开机箱,也不必关闭主机电源,USB可智能地识别USB链上外围设备的动态插入和拆除,具有自动配置和重新配置外设的能力,连接设备方便,使用简单

  • 可连接多个外部设备

    • 每个USB系统中有一个主机,USB总线采用“级联”方式可连接多个外部设备
    • 每个USB设备用一个USB插头连接到上一个USB设备插座上,而其本身又提供一或多个USB插座供下一个或多个USB设备连接使用
    • 这种多重连接是通过集线器(Hub)来实现的,整个USB网络中最多可连接127个设备,支持多个设备同时操作
  • 低成本的电缆和连接器

    • USB采用统一的4引脚插头和一根四芯的电缆传送信号和电源
    • 电缆长度可长达5m
  • 总线供电

    • USB总线可为连接在其上的设备提供5V电压/100mA电流的供电,最大可提供500mA的电流
    • USB设备也可采用自供电方式。可以通过电池或其他的电力设备
    • 支持节约能源的挂机和唤醒模式
  • USB总线的电缆有一对标准尺寸的双绞信号线和一对标准尺寸的电源线,共4根导线

    连接序号 信号名称 典型连接线
    1 VBUS(USB电源)
    2 D+(正差分信号)
    3 D-(负差分信号) 绿
    4 GND(USB地)
    外层 屏蔽层

SPI接口基本原理与结构

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

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

    • 主机输出/从机输入(MOSI)
    • 主机输入/从机输出(MISO)
    • 串行SCLK或SCK
    • 外设片选(/CS)
    • 有些处理器有SPI接口专用的芯片选择,称为从机选择(/SS)
  • MOSI信号由主机产生,从机接收。在有些芯片上,MOSI只被简单地标为串行输入(SI),或串行数据输入(SDI)

  • MISO信号由从机产生,不过还是在主机的控制下产生的。在一些芯片上,MISO有时被称为串行输出(SO)或串行数据输出(SDO)

  • 外设片选信号:通常只是由主机的备用I/O引脚产生的

  • 与标准的串行接口不同,SPI是一个同步协议接口,所有的传输都参考一个共同的时钟,这个同步时钟信号由主机(处理器)产生,接收数据的外设(从设备)使用时钟来对串行比特流的接收进行同步化。可以将多个具有SPI接口的芯片连到主机的同一个SPI接口上,主机通过控制从设备的片选输入引脚来选择接收数据的从设备。

  • 如图所示,微处理器通过SPI接口与外设进行连接SPI连线

    • 主机和外设都包含一个串行移位寄存器,主机写入一个字节到它的SPI串行寄存器,SPI寄存器通过MOSI信号线将字节传送给外设
    • 外设也可以将自己移位寄存器中的内容通过MISO信号线传送给主机。主机和外设的两个移位寄存器中的内容被相互交换
    • 外设的写操作和读操作是同步完成的,因此SPI成为一个很有效的协议
  • 如果只是进行写操作,主机只需忽略收到的字节

  • 如果主机要读取外设的一个字节,就必须发送一个空字节来触发从机的数据传输

  • 当主机发送一个连续的数据流时,有些外设能进行多字节传输

    • 如多数具有SPI接口的存储器芯片都以这种方式工作。在这种传输方式下,SPI外设的芯片选择端必须在整个传输过程中保持低电平
    • 如,存储器芯片会希望在一个“写”命令之后紧接着收到的是4个地址字节(起始地址),这样后面接收到的数据就可以存储到该地址
  • 其他外设只需要一个单字节(比如一个发给A/D转换器的命令),有些设置还支持菊花链连接,如图所示SPI菊花链连接方式

    • 主机处理器从其SPI接口发送3个字节的数据
    • 第1个字节发送给外设A,当第2个字节发送给外设A的时候,第1个字节已移出了A,而传送给了B
    • 同样,主机想要从外设A读取一个结果,它必须再发送一个3字节(空字节)的序列,这样就可以把A中的数据移到B中,然后再移到C中,最后送回到主机。在这个过程中,主机还依次从B和C接收到字节
    • 注意,菊花链连接不一定适用于所有的SPI设备,特别是要求多字节传输的(比如存储器芯片)设备。有的外设芯片不支持菊花链连接
  • 根据时钟极性和时钟相位的不同,SPI有4种工作模式

    • 时钟极性有高电平、低电平两种
    • 时钟相位有两个:时钟相位0和时钟相位1
  • 时钟极性(CPOL:Clock Polarity):

    • 时钟极性为低电平时:空闲时时钟(SCK)处于低电平,传输时跳到高电平
    • 时钟极性为高电平时:空闲时时钟(SCK)处于高电平,传输时跳到低电平
  • 时钟相位(CPHA:Clock Phase):

    • 当CPHA为0时,时钟周期的前一边缘采集数据
    • 当CPHA为1时,时钟周期的后一边缘采集数据

I2C接口基本原理与结构

  • I2C BUS(Inter Integrated Circuit BUS,内部集成电路总线)是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备

    • I2C总线是具有总线仲裁和高低速设备同步等功能的高性能多主机总线
    • 直接用导线连接设备,通信时无需片选信号
    • I2C总线的协议层包含物理层和数据链路层。物理层有两根信号线,在链路层每个连接到I2C总线上的设备都有唯一的地址
  • 在I2C总线上,物理层只需要两条线——串行数据SDA线、串行时钟SCL线,它们用于总线上器件之间的信息传递

    • SDA和SCL都是双向的
    • 每个器件都有一个唯一的地址以供识别,而且各器件都可以作为一个发送器或接收器(由器件的功能决定)IIC接线
  • I2C总线有4种操作模式

    • 主发送模式
    • 主接受模式
    • 从发送模式
    • 从接受模式
  • I2C的启动信号

    • 当I2C接口处于从模式时,想要数据传输,必须检测SDA线上的启动信号,启动信号由主器件产生
    • 在SCL信号为高时,SDA产生一个由高变低的电平变化,即产生一个启动信号
    • 当I2C总线上产生了启动信号后,那么这条总线就被发出启动信号的主器件占用了,变成“忙”状态
  • I2C的停止信号

    • 在SCL信号为高时,SDA产生一个由低变高的电平变化,产生停止信号
    • 停止信号也由主器件产生,作用是停止与某个从器件之间的数据传输
    • 当I2C总线上产生了一个停止信号后,那么在几个时钟周期之后总线就被释放,变成“闲”状态IIC启动和停止信号
  • 主器件产生一个启动信号后,会立即送出一个从地址,用来通知将与它进行数据通信的从器件

    • 1个字节的地址包括7位的地址信息和1位的传输方向指示位(R/W’)
    • 如果第7位为“0”,表示主机发送数据(W’),即进行一个写操作
    • 如果为“1”,表示主机接收数据(R),即进行一个读操作
  • 数据传输格式IIC数据传输格式

    • SDA线上传输的每个字节长度都是8位,每次传输中字节的数量是没有限制的
    • 在起始条件后面的第一个字节是地址域,之后每个传输的字节后面都有一个应答(ACK)位(即一帧共有9位)
    • 传输中串行数据的MSB(字节的高位)首先发送
  • 应答信号

    • 为了完成1个字节的传输操作,接收器应该在接收完1个字节之后发送ACK位到发送器,告诉发送器,已经收到了这个字节
    • ACK脉冲信号在SCL线上第9个时钟处发出(前面8个时钟完成1个字节的数据传输,SCL上的时钟都是由主器件产生的)
    • 当发送器要接收ACK脉冲时,应该释放SDA信号线,即将SDA置高
    • 接受器在接受完前面8位数据后,将SDA拉低
    • 发送器探测到SDA为低,就认为接收器成果接收了前面的8位数据
  • 总线竞争的仲裁

    • I2C总线上可以挂接有多个器件,有时会发生两个或多个主器件同时向占用总线的情况
    • I2C总线具有多主控能力,可对发生在SDA线上的总线竞争进行仲裁
    • 仲裁原则:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级
  • 总线竞争的仲裁在两个层次上进行的

    • 首先是地址位的比较,如果主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲裁的可靠性
    • 由于是利用I2C总线上的信息进行仲裁,不会造成信息的丢失
  • I2C总线的数据传输过程:

    1. 开始:主设备产生启动信号,表明数据传输开始
    2. 地址:主设备发送地址信息,包含7位的从设备地址和1位的数据方向指示位(读或写位,表示数据流的方向)
    3. 数据:根据指示位,数据在主设备和从设备之间进行传输。数据一般以8位传输,MSB先传;具体能传输多少量的数据并没有限制。接收器产生1位的ACK(应答信号)表明收到了每个字节。传输过程中可以被中止和重新开始
    4. 停止:主设备产生停止信号,结束数据传输

网络接口

以太网接口基本原理与结构

  • 以太网(Ethernet)是目前应用最广泛的局域网通讯方式,同时也是一种协议

  • 以太网协议定义了一系列软件和硬件标准,从而将不同的设备连接在一起

  • 嵌入式系统通常使用的以太网协议是IEEE802.3标准,以太网接口电路主要由媒质接入控制MAC控制器和物理层接口(Physical Layer,PHY)两大部分构成

  • 在802.3版本的标准中,没有采用直接的二进制编码(即用0V表示“0”,用5V表示“1”),而是采用

    • 曼彻斯特编码(Manchester Encoding)
    • 差分曼彻斯特编码(Differential Manchester Encoding)曼彻斯特编码
  • 曼彻斯特编码的规律:每位中间有一个电平跳变,从高到低的跳变表示“0”,从低到高的跳变表示“1”

  • 差分曼彻斯特编码的规律:每位的中间有一个电平跳变,但不用这个跳变来表示数据,而是利用每个码元开始时有无跳变来表示“0”或“1”,有跳变表示“0”,无跳变表示“1”(保持性)

  • 曼彻斯特编码和差分曼彻斯特编码相比,前者编码简单,后者能提供更好的噪声抑制性能

  • 802.3 Mac层的以太网的物理传输帧如表所示

    PR SD DA SA TYPE DATA PAD FCS
    56位 8位 48位 48位 16位 不超过1500字节 可选 32位
    • PR:同步位,用于收发双方的时钟同步,同时也指明了传输的速率,是56位的二进制数101010101010…,最后两位是10

    • SD:分隔符,表示下面跟着的是真正的数据而不是同步时钟,为8位的10101011

    • DA:目的地符,以太网的地址为48位二进制地址,表明该帧传输给哪个网卡。如果为FFFFFFFFFFFF,是广播地址。广播地址的数据可以被任何网卡接收到

    • SA:源地址,48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址,是6个字节

    • TYPE:类型手段,表明该帧的数据是什么类型的数据,不同协议的类型字段不同。如:0800H表示数据为IP包,0806H表示数据为ARP包,814CH是SNMP包,8137H为IPX/SPX包

    • DATA:数据段,该段数据不能超过1500B。以太网规定整个传输包的最大长度不能超过1514B(14B为DA,SA,TYPE)

    • PAD:填充位。以太网帧传输的数据包最小不能小于60B(除去DA、SA、TYPE的14B),还必须传输64B的数据,当数据段的数据不足46B时,后面通常是补0(也可以补其他值)

    • FCS:32位数据校验位。32位的CRC校验,该校验由网卡自动计算,自动生成,自动校验,自动在数据段后面填入。不需要软件还礼

    • 通常PR、SD、PAD、FCS数据段是网卡(包括物理层和Mac层的处理)自动产生的,剩下的DA、SA、TYPE、DATA4个段的内容由上层软件控制

  • 以太网数据传输的特点

    • 所有数据位的传输由低位开始,传输的位流用曼彻斯特编码
    • 以太网是基于冲突检测的总线复用方法,冲突退避算法是由硬件自动执行
    • 以太网传输的数据段的长度,DA+SA+TYPE+DATA+PAD最小为60B,最大为1514B
    • 通常的以太网卡可以接受3种地址的数据:广播地址、多播地址(或者叫组播地址,在嵌入式系统中很少用到)、自己的地址。但有时,用于网络分析和监控,网卡也可以设置为接受任何数据包
    • 任何两个网卡的物理地址都是不一样的,是世界上唯一的,网卡地址由专门机构分配。不同厂家使用不同地址段,同一厂家的任何两个网卡的地址也是唯一的。根据网卡的地址段(网卡地址的前3个字节)可以知道网卡的生产厂家
  • 嵌入式以太网接口实现的方法

    • 嵌入式处理器+网卡芯片

      • 把以太网芯片连接到嵌入式处理器的总线上
      • 通用性强,对嵌入式处理器没有特殊要求,不受处理器的限制,但是,嵌入式处理器和网络数据交换通过外部总线(通常是并行总线)交换数据,速度慢,可靠性不高,电路板走线复杂
      • 目前常见的以太网接口芯片,如CS8900,RTL8019/8029/8039、DM9008及DWL650无线网卡等
    • 带有以太网接口的嵌入式处理器

      • 带有以太网接口的嵌入式处理器通常是面向网络应用而设计的,要求嵌入式处理器有通用的网络接口(比如:MII接口)
      • 处理器和网络数据交换通过内部总线,速度快
  • 网络编程接口

    • BSD套接字(BSD Sockets)是使用的最广泛的网络程序编程方法

      • 主要用于应用程序的编写,用于网络上主机与主机之间的相互通信
      • 很多操作系统都支持BSD套接字编程。例如,UNIX、Linux、VxWorks、Windows的Winsock基本上是来自BSD Sockets
    • 套接字(Sockets)分为Stream Sockets和Data Sockets

      • Stream Sockets是可靠性的双向数据传输,对应使用TCP协议传输数据
      • Data Sockets是不可靠连接,对应使用UDP协议传输数据网络编程接口

CAN总线接口基本原理与结构

  • Can(Controller Area Network,控制器局域网)是德国Bosch公司与1983年为汽车应用而开发的,它是一种现场总线(FieldBus),能有效支持分布式控制和实时控制的串行通信网络。1993年11月,ISO正式颁布了控制器局域网CAN国际标准(ISO11898)

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

    • 理想的由CAN总线构成的单一网络中,是可以挂接任意多个节点,实际应用中节点数目受网络硬件的电气特性所限制。例如:当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。
    • CAN总线具有很高的实时性能,已经在汽车工业、航空工业、工业控制、安全防护等领域得到了广泛应用。
  • CAN总线的通信介质可采用双绞线、同轴电缆和光导纤维,最常用的是双绞线

    • 通信距离与波特率有关,最大通信距离可达10km,最大通信波特率可达1Mbps
    • CAN总线仲裁采用11位标识和非破坏性位仲裁总线结构机制,可以确定数据块的优先级,保证在网络节点冲突时最高优先级结点不需要冲突等待
    • CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点
    • CAN总线上任意结点可在任意时刻主动向网络上其他节点发送信息而不分主次,因此可在各节点之间实现自由通信
  • CAN总线信号使用差分电传送

    • 两条信号线被称为CAN_H和CAN_L,静态时均是2.5V左右,此时状态表示为逻辑1,也可以叫作“隐性”
    • 采用CAN_H比CAN_L高表示逻辑0,称为“显性”,通常电压值为CAN_H=3.5V和CAN_L=1.5V
    • 当“显性”位和“隐性”位同时发送的时候,最后总线数值将为“显性”
    • 这种特性为CAN总线的仲裁奠定了基础
  • 一些面向工业控制的嵌入式处理器集成了一个或者多个CAN总线控制器

    • 例如:Phillips公司的LPC2194和LPC2294(ARM7TDMI内核)带有4个CAN总线控制器
    • CAN总线控制器主要是完成时序逻辑转换等工作,要在电气特性上满足CAN总线标准,还需要一个CAN总线的物理层芯片,用它来实现TTL电平到CAN总线电平特性的转换,即CAN收发器
      image-20240912093354492
  • 实际上,多数嵌入式处理器都不带CAN总线控制器

    • 通常的解决方案是在嵌入式处理器的外部总线上扩展CAN总线接口芯片
    • 例如:Phillips公司的SJA1000 CAN总线接口芯片,Microchip公司的MCP251x系列(MCP2510和MCP2515)CAN总线接口芯片,这两种芯片都支持CAN2.0B标准
  • SJA 1000的总线采用的是地址线和数据线复用的方式,多数嵌入式处理器采用SJA 1000扩展CAN总线较为复杂

  • MCP2510是由Microchip公司产生的CAN协议控制器,完全支持CAN总线V2.0A/B技术规范

    • 0~8字节的有效数据长度,支持远程帧
    • 最大1Mb/s的可编程波特率
    • 两个支持过滤器(Filter,Mask)的接收缓冲区,三个发送缓冲区
    • 支持回环(Loop Back)模式,便于测试
    • SPI高速串行总线,最大5MHz
    • 3V到5.5V供电
  • 大多数嵌入式处理器都有SPI总线控制器,MCP2510可以3V到5.5V供电,能够直接和3.3V I/O口的嵌入式处理器连接,电路原理图如图所示image-20240912094843626

  • MCP2510使用3.3V电压供电,可以直接和三星S3C44B0X处理器通过SPI总线连接。相关的资源如下:CAN扩展原理图

    • 使用一个扩展的I/O口(EXIO2)作为片选信号,低电平有效
    • 用S3C2410A的外部中断6(EXINT6)作为中断管脚,低电平有效
    • 16MHz晶体作为输入时钟,MCP2510内部有振荡电路,用晶体可以直接起振使用TJA1050作为CAN总线收发器
  • CAN总线收发器TJA1050必须使用5V供电。MCP2510和TJA1050连接的两个信号都是单向的信号。需单向满足I/O口的电气特性

    • 从MCP2510输出的TXCAN信号是否满足TJA1050的输入电平。TJA1050为5V供电时,输入高电平Vih的范围是2~5.3V。而3.3V供电的MCP2510输出TXCAN信号高电平Voh最小值为2.6V,可以满足要求
    • 从TJA1050输出的RXD信号是否满足MCP2510的输入电平。3.3V供电的MCP2510输入信号RXCAN高电平范围Vih:2~4.3V,无法满足5V逻辑的TJA1050输出电平——电阻分压实现单向电平转换
  • 分压电阻值的选择,需要考虑两个问题

    • TJA1050输出信号的驱动能力(输出电流<=15mA)
    • MCP2510的RXCAN管脚的输入阻抗(输入电流<=5μA)

无线以太网基本原理与结构

  • WLAN(Wireless Local Area Network,无线局域网)是利用无线通信技术在一定的局部范围内建立的,是计算机网络与无线通信技术相结合的产物,以无线多址通道作为传输媒介,提供有线局域网的功能
  • 传输介质
    • 红外线IR
    • 射频RF波段
  • WLAN的标准:主要是针对物理层和媒质访问控制层(MAC层)。涉及到所有使用的无线频率范围、控制接口通信协议等技术规范和技术标准
    • 802.11原始标准(2Mbps,2.4GHz)办公室、校园局域网
    • 802.11b物理层补充(11Mbps,2.4GHz)办公室、家庭、宾馆、车站、机场等场合
    • 802.11a物理层补充(54Mbps,5.2GHz)话音、数据和图像
    • 802.11g物理层补充(54Mbps,2.4GHz)传输速率和安全性
    • 802.11h无线覆盖半径的调整(室内和室外信道,5.2GHz)

1394接口基本原理与结构

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

    • 1394作为一种标准总线,可以在不同的工业设备之间架起一座沟通的桥梁
    • 在一条总线上可以接入63个设备
    • 实时多媒体领域。大容量存储以及打印机、扫描仪上等等
    • IEEE1394规范仅支持64位固定解址模式
  • 支持多种总线速度,适应不同应用要求

    • IEEE 1394a:100Mb/s、200Mb/s、400Mb/s
    • IEEE 1394b:800Mb/s、1600Mb/s、3200Mb/s
  • 支持热插拔

    • 设备的资源均由总线控制器自动分配
    • 总线控制器会自动重新配置好设备
  • 接口有两种类型

    • 6针的六角形接口和4针的小型四角形接口
    • 6针的六角形接口可向所连接的设备供电,而4针的四角形接口则不能
  • 支持同步和异步两种传输方式

    • 设备可以根据需要动态地选择传输方式,总线自动完成带宽分配
    • 要求实时传输并对数据的完整性要求不严格的场合,可采用同步传输方式
    • 对数据完整性要求较高的场合,采用异步传输的方式更好
  • 支持点到点通信模式,IEEE 1394是多主总线,每个设备均可以获取总线的控制权,与其他设备进行通信

  • 两种传输方式:Backplane模式和Cable模式

    • Backplane模式最小的速率也比USB1.1最高速率高,分别为12.5Mbps/s、25Mbps/s、50Mbps/s,可以用于多数的高带宽应用
    • Cable模式是速度非常快的模式,分为100Mbps/s、200Mbps/s和400Mbps/s几种,在200Mbps/s下可以传输不经压缩的高质量数据电影
  • 遵循ANSIIEEE 1212控制及状态寄存器(CSR)标准,定义了64位的地址空间。可寻址1024条总线的63个节点,每个节点可包含256TB的内存空间

  • 支持较远距离的传输

    • 普通线缆:2个设备之间的最大距离可达4.5m(高级线缆可达15m)
    • 玻璃光缆或5类双绞线:设备间距离可达100m以上
  • 支持公平仲裁原则,为每一种传输方式保证足够的传输带宽,支持错误检测和处理

  • 六线电缆具有电源线,可传输8~40V的直流电压

    • 2对双绞线:信号传递
    • 1对双绞线:供应电源
  • IEEE1394的协议栈由3层组成:物理层、链路层和事物层,另外还有一个管理层1394

    • 物理层和链路层由硬件构成,通常集成在同一块芯片上
    • 事务层主要由软件实现
  • 物理层提供IEEE1394的电气和机械接口,功能是重组字节流并将它们发送到目的节点上去

    • 物理层为链路层提供服务
    • 解析字节流并发送数据包给链路层
  • 链路层提供了给事务层确认的数据服务,包括:寻址、数据组帧和数据校验

    • 提供直接面向应用的服务
    • 支持同步和异步传输模式
    • 链路层的底层提供了仲裁机制
  • 事务层为应用提供服务

    • 只支持异步传输
    • 定义了3种基于请求响应的服务:read、write、lock
    • 即是将发送者的数据送往接受者;读即是将有关数据返回到发送者;锁定即是写、读指令功能的组合
  • 管理层定义了一个管理节点所使用的所有协议、服务以及进程

    • 电缆环境下,IEEE 1394定义了2类管理:总线管理(BM)和同步资源管理(IRM)
    • 总线管理(BM):总线的电源管理信息、拓扑结构信息、不同节点的速度极限信息,一遍协调不同速度设备之间的通信
    • 同步资源管理(IRM):管理同步资源,如:可用频道信息、带宽的分配

总线分类

内部总线

  • 说明:内部总线是微机内各外围芯片与处理器之间的总线,用于芯片一级的互连
  • 常用总线:I2总线、SPI总线、SCI总线等

系统总线

  • 说明:系统总线是微机中各插件板与系统板之间的总线,用于插件板一级的互连
  • 常用总线:ISA总线、EISA总线、VESA总线、PCI总线

外部总线

  • 说明:外部总线则是微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连
  • 常用总线:RS232、RS485、USB总线、IEEE1394总线等

GPIO的原理与结构

  • GPIO(General Purpose I/O,通用输入/输出接口)也称为并行I/O(parallel I/O),是最基本的I/O形式
    • 有一组输入引脚或输出引脚组成,CPU对它们能够进行存取操作
    • 有些GPIO引脚能够通过软件编程改变输出/输出方向
  • 一个双向GPIO端口(D0)的简化功能逻辑图如图所示,图中:
    • PORT:数据寄存器
    • DDR(Data Direction Register):数据方向寄存器GPIO

A/D接口基本原理与结构

  • A/D转换器是把电模拟量转换为数字量的电路。实现A/D转换的方法有很多,常用的方法有:
    • 计数法
    • 双积分法
    • 逐次逼近法AD转换

计数式A/D转换器原理

  • 计数式A/D转换器电路的主要部件包括:比较器、计数器、D/A转换器和标准电压源。转换原理图如下所示:计数式AD转换原理
  • 特点
    • 结构简单
    • 但转换速度较慢
    • 特别是模拟电压较高时,转换速度更慢
    • 例如对一个8位A/D转换器,若输入模拟量为最大值,计数器要从0开始计数到255,做255次D/A转换和电压比较的工作,才能完成转换

双积分A/D转换器原理

  • 双积分式A/D转换法电路主要部件包括:积分器、比较器、计数器和标准电压源。转换原理图如下所示:

双积分AD转换原理

  • 工作原理:
    • 对输入模拟电压和参考电压进行两次积分,将电压变换成与其成正比的时间间隔
    • 利用时钟脉冲和计数器测出其时间间隔,完成A/D转换双积分AD转换积分原理
  • 双积分式A/D转换器的转换过程如下:
    • 对输入待测的模拟电压Vi进行固定时间的积分
    • 转换至标准电压VREF进行固定斜率的反向积分(定值积分),反向积分进行到一定时间,便返回起始值。对标准电压VREF进行反向积分的时间T正比于输入模拟电压,输入模拟电压越大,反向积分回到起始值的时间T越长,有Vi=(T2/T1)VREF
    • 用标准时钟脉冲测定反向积分时间(如计数器),就可以得到对应于输入模拟电压的数字量,实现A/D转换
  • 特点:
    • 具有很强的抗工频干扰能力
    • 转换精度高
    • 但转换速度慢
    • 通常转换速率小于10Hz,主要用于数字式测试仪表、温度测量等方面

逐次逼近式A/D转换器原理

  • 逐次逼近式A/D转换法电路主要部件包括:比较器、D/A转换器、逐次逼近寄存器和基准电压源

逐次逼近式AD转换器

  • 工作原理:
    • 实质上就是对分搜索法,和天平称重的使用原理一样
    • 在进行A/D转换时,由D/A转换器从高位到低位逐位增加转换位数,产生不同的输出电压,把输入电压与输出电压进行比较而实现
    • 首先使逐次逼近寄存器的最高位为1,这相当于取出基准电压的1/2与输入电压比较,如果在输入电压小于1/2的基准电压,则最高位置0,反之置1。之后,次高位置1,相当于在1/2得到范围中再作对分搜索,以此类推,逐次逼近
  • 特点:
    • 转换速度快
    • 转换精度高
    • 对N位A/D转换只需N个时钟脉冲即可完成
    • 可用于测量微秒级的过渡过程的变化,是目前应用最普遍的一种A/D转换方法

D/A接口基本原理与结构

  • D/A转换器是把输入的数字量转换为与输入量成比例的模拟信号的器件,简称为DAC(Digital to Analog Converter)
    • 在集成化的D/A转换器中,通常采用电阻网络实现将数字量转换为模拟电流
    • 然后再用运算放大器完成模拟电流到模拟电压的转换AD转换
  • 一个4位T型电阻网络DAC如图所示
    • 电路由R-2R电阻解码网络、模拟电子开关和求和放大电路构成,因为R和2R组成T型,故称为T型电阻网络DAC屏幕截图 2024-09-10 093116

分类

  • 电压输出型
    • 电压输出型D/A转换器虽有直接从电阻阵列输出电压的,但一般采用内置输出放大器以低阻抗输出
    • 直接输出电压的器件仅用于高阻抗负载,由于无输出放大器部分的延迟,故常作为高速D/A转换器使用
  • 电流输出型
    • 电流输出型D/A转换器直接输出电流,但应用中通常外接电流-电压转换电路得到电压输出
    • 电流-电压可以直接在输出引脚上连接一个负载电阻,实现电流-电压转换
    • 但多采用的是外接运算放大器的形式
    • 大部分CMOS D/A转换器当输出电压不为零时不能正确动作,所以必须外接运算放大器
    • 在D/A转换器的电流建立时间上加入了外接运算放大器的延迟,D/A响应变慢
    • 运算放大器因输出引脚的内部电容容易起振,有时必须作相位补偿
  • 乘算型:
    • D/A转换器中有使用恒定基准电压的,也有在基准电压输入上加交流信号的,后者由于能得到数字输入和基准电压输入相乘的结果而输出,因而称为乘算型D/A转换器
    • 乘算型D/A转换器一般不仅可以进行乘法运算,而且可以作为使输入信号数字化衰减的衰减器及对输入信号进行调制的调制器使用

指标

  • 分辨率(Resolution):
    • DAC电路所能分辨的最小输出电压与满量程输出电压之比称为DAC的分辨率
    • 最小输出电压是指输入数字量只有最低有效位为1时的输出电压
    • 最大输出电压是指输入数字量各位全为1时的输出电压
    • DAC的分辨率可用下式表示:分辨率=(1/(2n-1)) * 量程,式中,n表示数字量的二进制位数
  • DAC产生误差的主要原因有:
    • 基准电压VREF的波动
    • 运放的零点漂移
    • 电阻网络中电阻阻值偏差等原因
  • 转换误差
    • 转换误差重用满量程FSR(Full Scale Range)的百分数来表示
    • 例如,一个DAC的线性误差为0.05%,就是说转换误差是满量程输出的万分之五
    • 有时转换误差用最低有效位LSB(Least Significant Bit)的倍数来表示
    • 例如,一个DAC的转换误差是LSB/2,则表示输出电压的绝对误差是最低有效位(LSB)为1时输出电压的1/2
  • DAC的转换误差主要有失调误差满值误差
  • 失调误差
    • 输入数字量全为0时,模拟输出值与理论输出值的偏差
    • 在一定温度下的失调误差可以通过外部电路调整措施进行补偿,也有些DAC芯片本身有调零端进行调零
    • 对于没有设置调零端的芯片,可以采用外接校正偏置电路加到运放求和端
  • 满值误差
    • 又称增益误差,是指输入数字量全为1时,实际输出电压不等于满值的偏差
    • 调整运放的反馈电阻
  • DAC的分辨率和转换误差共同决定了DAC的精度
    • 要使DAC的精度高,不仅要选择位数高的DAC,还要选用稳定度高的参考电压源VREF和低漂移的运算放大器与其配合
  • 建立时间(Setting Time)
    • 是描述DAC转换速度快慢的一个重要参数,一般是指输入数字量变化后,输出模拟量稳定到相应数值范围所经历的时间
    • DAC中的电阻网络,模拟开关等是非理想器件,各种寄生参数及开关延迟等都会限制转换速度
    • 一般电流输出D/A转换建立时间较短,电压输出D/A转换建立时间较长
    • 实际上建立时间的长短不仅与DAC本身的转换速度有关,还与数字量变化范围有关
    • 输入数字量从全0变到全1(或者从全1变到全0)时,建立时间最长,称为满量程变化建立时间
    • 一般产品手册上给出的是满量程变化建立时间
  • 精度(Accuracy)
    • 绝对精度:在一个转换器中,对应于一个数字量的实际模拟输入电压和理想的模拟输入电压之差并非是一个常数。把它们之间的差的最大值,定义为“绝对误差”。通常以数字量的最小有效位(LSB)的分数值来表示绝对精度,如±1LSB。绝对误差包括量化精度和其他所有精度
    • 相对精度:是指整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论值之差,用模拟电压满量程的百分比表示
    • 例如,满量程为10V,10位A/D芯片,若其绝对精度为±1/2LSB,则其最小有效位的量化单位为9.77mV,其绝对精度为4.88mV,其相对精度为0.048%
  • 量程
    • 量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型
    • 例如,单极性的量程为0 ~ +5V,0 ~ +20V;双极性的量程为-5 ~ +5V,-10 ~ +10V

嵌入式软件基础

嵌入式软件特点

  • 规模较小
  • 开发难度大
    • 硬件资源有限
    • 嵌入式软件一般涉及到底层软件的开发,需要软、硬件基础
    • 开发环境和运行环境不高
  • 实时性和可靠性要求高
  • 要求固化存储

嵌入式软件分类

  • 系统软件:控制和管理嵌入式系统资源
    • 嵌入式操作系统
    • 驱动程序
    • 嵌入式中间件(CORBA、Java)等
  • 支撑软件:辅助软件开发的工具软件
    • 系统分析设计工具
    • 仿真开发工具
    • 交叉开发工具
    • 测试工具
    • 配置管理工具
    • 维护工具等
  • 应用软件:定义嵌入式设备的主要功能和用途,负责与用户进行交互(面向应用领域)
    • 手机软件
    • 路由器软件
    • 交换机软件
    • 飞控软件等

嵌入式软件的体系结构

无操作系统阶段

  • 硬件配置较低,系统应用主要集中在控制领域
  • 嵌入式软件的设计是以应用为核心,应用软件直接建立在硬件上
  • 无操作系统的嵌入式软件的两种实现方式:
    • 循环轮转:把系统功能分解为若干个不同的任务,然后把它们包含在一个永不结束的循环语句中。按照顺序逐一执行。执行完一轮循环后,又回到循环体
    • 前后台系统(在循环轮转的基础上增加了中断处理功能):
      • 前台程序(事件处理级):中断服务程序,负责处理异步事件
      • 后台程序(任务级):一个无限循环,负责资源分配、管理和系统调度
      • 在系统运行时,后台程序会检查每个任务是否具备运行条件,对实时性要求严格的操作通常由中断完成
      • 前后台系统认为所有的任务具有相同的优先级,任务的执行是通过先进先出队列排队
      • 实时性较差

有操作系统阶段:

屏幕截图 2024-08-20 195845

  • 开发应用程序不再直接面对嵌入式硬件设备,而是在操作系统的基础上编写。优点有:

    • 提高了系统的可靠性

      • 提高了系统的开发效率,降低了开发成本,缩短了开发周期
        • 可以按照软件工程的思想,将程序分解为多个任务模块,每个任务模块的调试、修改几乎不影响其他模块
        • 商业软件提供了良好的多任务调试环境
    • 有利于系统的扩展与移植

设备驱动层

  • 也叫板级支持包BSP:包含了嵌入式系统中所有与硬件相关的代码

    • 大多数的嵌入式硬件设备都需要某种类型软件的初始化和管理
    • 这部分工作由设备驱动层来完成的,它负责直接与硬件打交道, 对硬件进行管理和控制,为上层软件提供所需的驱动支持,类似PC系统中的BIOS和驱动程序
  • 板级支持包BSP(Board Support Package)

    • 把嵌入式操作系统与具体的硬件平台隔离开来
    • 即在BSP中,把所有与硬件相关的代码都封装起来,向上提供一个虚拟的硬件平台,操作系统就运行在这个虚拟的硬件平台上
    • 操作系统使用一组定义好的编程接口来与BSP进行交互,并通过BSP来访问真正的硬件
  • 一般BSP主要包括两个方面的内容

    • 引导加载程序Boot Loader
    • 设备驱动程序
  • 引导加载程序Boot Loader是嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行的一段小程序

    • 通过这段程序,可以初始化硬件设备、建立内存空间的映射图
    • 将系统的软硬件环境设置到一个合适的状态,为最终调用操作系统内核做准备
  • Boot Loader的实现高度依赖于具体的硬件平台,主要的基本功能如下

    • 片级初始化
    • 板级初始化
    • 加载内核
  • 片级初始化

    • 主要完成微处理器的初始化
    • 包括设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式、局部总线模式等
    • 把微处理器从上电的默认状态设置成系统要求的工作状态
    • 纯硬件初始化过程
  • 板级初始化

    • 设置各种硬件寄存器来完成微处理器以外的其他硬件设备的初始化
    • 设置某些软件的数据结构和参数
    • 同时有软件和硬件的初始化过程
  • 加载内核

    • 将操作系统和应用程序的映像从Flash存储器复制到系统内存中
    • 然后跳转到系统内核的第一条指令处继续执行
  • 设备驱动程序

    • 在一个嵌入式系统中,操作系统可能有也可能无,设备驱动是必不可少的
    • 设备驱动程序,是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口
    • 大多数设备驱动程序都具备下面的基本功能:启动、关闭、停用、启用、读操作、写操作
  • 设备驱动程序的分层结构:把设备驱动程序中的函数分为硬件接口函数和调用接口函数

    • 硬件接口:直接操作和控制硬件
    • 上层接口:为上层软件提供服务和函数接口。不直接和硬件打交道,会调用硬件接口中的函数
    • 优点:把所有与硬件相关的细节都封装在硬件接口中,在硬件需要升级,需要更新设备驱动程序的时候,只需要改动接口中的函数即可,而上层调用接口中的函数不用做任何修改
  • 设备驱动程序的混合结构:

    • 在设备驱动程序当中,没有明确的层次关系
    • 上层接口和硬件接口函数混在一起、互相调用

嵌入式中间件

  • 中间件:在操作系统内核、设备驱动程序和应用软件之外的所有系统软件
  • 基本思路:把原本属于应用软件层的一些通用的功能模块抽取出来,形成独立的一层软件,从而为运行在它上面的那些应用软件提供一个灵活、安全、移植性好、相互通信、协同工作的平台
  • 特点:
    • 可以有效地实现软件的可重用,降低应用软件的复杂性,提高系统的开发效率,缩短开发周期,节约开发成本和维护费用,保证了系统的高伸缩性、易升级性、稳定性
    • 但会带来额外的开销
  • 种类:
    • 消息中间件
    • 对象中间件
    • 远程过程调用
    • 数据库访问中间件
    • 安全中间件等

嵌入式软件的运行流程

  • 主要分为五个阶段屏幕截图 2024-08-21 174628

嵌入式操作系统概述

  • 基本概念:嵌入式操作系统(Embedded Operating System,EOS):工作在嵌入式环境中的操作系统

  • 基本功能

    • 从软件开发的角度,可以把EOS看成是一种扩展机或虚拟机。将底层的硬件细节封装起来,为运行在它上面的软件提供了一个抽象的编程接口,即操作系统对外提供的系统调用函数
    • 从系统管理的角度,可以把EOS看成是系统资源的管理者,负责管理系统当中的各种软硬件资源
  • 特有功能

    • 非通用型操作系统
    • 在性能和实时性方面可能有严格的限制
    • 能源、成本和可靠性通常是影响设计的重要因素
    • 占用资源少
    • 可裁剪、可配置
  • 不同的嵌入式操作系统,包含的组件各不相同,但所有操作系统都会有一个内核(kernel),内核是指操作系统中的一个组件,它包含了OS的主要功能,即OS的各种特性及其相互之间的依赖关系

  • OS的主要功能:

    • 任务管理:对系统中运行的软件进行描述和管理,并完成处理器资源分配和调度
    • 存储管理:提高内存的利用率,方便用户使用,提供足够的存储空间
    • I/O设备管理:方便设备的使用,提高CPU和I/O设备的利用率
    • 文件管理:解决文件资源存储、共享、保密和保护等问题
  • 不同嵌入式操作系统的内核设计各不相同,不一定包含所有的4个功能模块,取决于系统设计和实际需求

  • 嵌入式操作系统的分类

    • 按系统类型来分
      • 商业系统:商业化的嵌入式操作系统
        • 功能强大、性能稳定、应用范围相对较广、辅助软件齐全
        • 价格较贵
        • 如VxWorks、Windows CE、PalmOS
      • 专用系统:专业厂家为本公司产品特制的嵌入式操作系统
      • 开源系统:开放源代码的嵌入式操作系统
        • 免费、开源、性能优良、资源丰富、技术支持强
        • 如μC/OS、Linux系统
    • 按系统对响应时间的敏感程度来分
      • 硬实时系统:系统对响应时间有严格要求,若响应时间不能满足,是绝对不允许的,会引起系统的崩溃或致命的错误
      • 软实时系统:系统对响应时间有要求,若响应时间不能满足,会带来额外可接受的代价
      • 非实时系统:响应时间没有严格要求,如分时操作系统,基于公平性原则,各进程分享处理器,获得大致相同的运行时间
    • 按软件体系结构来分
      • 单体结构(μC/OS)
      • 分层结构(MS-DOS)
      • 微内核结构(Vxworks)
      • 这三类操作系统的差异体现在
        • 内核的设计:内核中包含的功能组件
        • 在系统中集成的其他系统软件
    • 单体结构(monolithic):是一种常见的组织结构屏幕截图 2024-08-21 190535
      • 中间件和设备驱动程序通常集中在系统内核中
      • 系统只有一个可执行文件,包含所有功能组件,功能模块可相互调用
      • 如Linux、Jbed RTOS、μC/OS、PDOS
      • 优点:性能较好、系统各模块间可相互调用、通信开销较小
      • 缺点:
        • 操作系统体积庞大、高度集成、相互关联
        • 系统裁剪、修改和调试都较困难
    • 分层结构(layered):操作系统被划分为若干个层次(0~N),各个层次之间的调用关系是单向的,即某一层次上的代码只能调用比它低层的代码屏幕截图 2024-08-21 190535
      • 只有一个大的可执行文件,包含有设备驱动程序和中间件
      • 系统的开发和维护较为简单
      • 要替换系统中的某一层时,不会影响到其他的层次
      • 但每个层次都要提供一组API接口函数,带来额外的开销
        • API(APPlication Programming Interface,应用程序编程接口):
          • 是一些预先定义的函数
          • 目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节
    • 微内核结构:也称为客户/服务(client/server)结构,在内核中,把操作系统的大部分功能都剥离出去,只保留最核心的功能单元(如进程管理、存储管理)。如:OS-9、C Executive、VxWorks和QNX等。屏幕截图 2024-08-21 190840
      • 优点:
        • 内核非常小
        • 易于扩展、调试方便:新的功能组件可以被动态添加
        • 安全性更高:大部分的系统功能被放置在内核之外
        • 可移植性
      • 缺点:
        • 通过微内核构造和发送信息、接受应答并解码所花费的时间比进行一次系统调用的时间多
        • 很大程度取决于微内核的大小和功能
        • 客户单元和服务器单元的内存地址空间是相互独立,在切换时候,会增加额外开销

    屏幕截图 2024-08-21 191215