嵌入式

越来越多的人选择从事嵌入式开发工作,伴随而来的便是各种对硬件和寄存器的抓耳挠腮。你真的认为你现在的调试方式就是最合适的吗?先看看小粥为你带来的嵌入式调试实用秘籍!

使用集成开发环境开发基于ARM 的应用软件,包括编辑、编译、汇编、链接等工作全部在PC机上即可完成,调试工作则需要配合其他的模块或产品方可完成,目前常见的调试方法有以下几种:

1、指令集模拟器

优点:部分集成开发环境提供了指令集模拟器,可方便用户在 PC 机上完成一部分简单的调试工作。

缺点:由于指令集模拟器与真实的硬件环境相差很大,因此即使用户使用指令集模拟器调试通过的程序也有可能无法在真实的硬件环境下运行,用户最终必须在硬件平台上完成整个应用的开发。

2、驻留监控软件

优点:驻留监控软件( Resident Monitors )是一段运行在目标板上的程序,集成开发环境中的调试软件通过以太网口、并行端口、串行端口等通讯 端口与驻留监控软件进行交互,由调试软件发布命令通知驻留监控软件控制程序的执行、读写存储器、读写寄存器、设置断点等。

缺点:驻留监控软件的不便之处在于它对硬件设备的要求比较高,一般在硬件稳定之后才能进行应用软件的开发,同时它占用目标板上的一部分资 源,而且不能对程序的全速运行进行完全仿真,所以对一些要求严格的情况不是很适合。

3、JTAG 仿真器

优点:JTAG仿真器也称为JTAG调试器,是通过 ARM 芯片的JTAG边界扫描口进行调试的设备。 JTAG 仿真器比较便宜,连接比较方便,通过现 有的JTAG边界扫描口与ARM CPU 核通信,属于完全非插入式 ( 即不使用片上资源 ) 调试,它无需目标存储器,不占用目标系统的任何端 口,而这些是驻留监控软件所必需的。

缺点:由于 JTAG 调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题 ,如高频操作限制、 AC 和 DC 参数不匹配,电线长度的限制等被最小化了。

使用集成开发环境配合 JTAG 仿真器进行开发是目前采用最多的一种调试方式。

4、在线仿真器

优点:在线仿真器使用仿真头完全取代目标板上的 CPU,可以完全仿真 ARM 芯片的行为,提供更加深入的调试功能。

缺点:这类仿真器为了能够全速仿真时钟速度高于100MHz的处理器,通常必须采用极其复杂的设计和工艺,因而其价格比较昂贵。

在线仿真器通常用在ARM的硬件开发中,在软件的开发中较少使用,其价格高昂也是在线仿真器难以普及的因素。

看了这么多种调试方法,哪种适合你呢?

文章来源:周立功单片机

围观 617

1、概述:

WATCHDOG对于没有底层开发经验的开发人员来说,可能比较陌生,但是它在系统起到非常重要的作用,相当于系统警察,当系统发生严重错误(如程序进入死循环等)不能恢复的时候,WATCHDOG能够让系统重启。WATCHDOG的应用主要是在嵌入式操作系统中,避免了系统在无人干预时长时间挂起的情况。

2、WATCHDOG模块

在比较高档的嵌入式硬件芯片中,都有一个WATCHDOG模块,如果在MCU/MPU中没有集成WATCHDOG,一般会在此嵌入式系统中加一个专门的WATCHDOG芯片来实现WATCHDOG机制。此模块主要的功能包括:

(1)提供WATCHDOG控制寄存器和配置寄存器,供软件开发人员根据系统需要进行灵活配置。

(2)提供一接口,使应用软件能够定时给WATCHDOG“喂狗”。

(3)提供WATCHDOG机制,当系统进入不可恢复错误时,能产生一个不可屏蔽中断来通知系统自动重启(一般这样,也有改变为其他处理方式的),只有相应的复位信号才能清除它。

3、WATCHDOG的实现方式:

对于WATCHDOG模块的实现,不同的硬件芯片有不同的方式,这里介绍2中工作方式:

(1)利用系统操作系统时钟来实现WATCHDOG

在Intel XScale系列中,利用了操作系统时钟的比较寄存器3(OSMR3)做为WATCHDOG的运行主体,当系统的WATCHDOG激活后,软件就必须在一定时间内从OSMR3读出当前的计数,然后加上一定的计数值(下一次到期的计数值),再写回到OSMR3中,软件一直周期性的重复这个过程,如果软件没有重新写入新的计数使定时器到期,此OSMR3会利用一个GPIO触发系统复位。

(2)芯片的专门WATCHDOG模块

对于现在的很多芯片,已经集成了专门的WATCHDOG模块,比如ARM11的芯片,WATCHDOG模块中,提供了比较灵活的配置和控制机制:

A、宽范围设置过期时间间隔,从0。5秒到128秒可以用户配置

B、可以灵活配置在低功耗下,使用或者停止WATCHDOG功能

C、可以灵活配置在DEBUG等状态下,使用或者停止WATCHDOG功能

根据不同的系统,设置好相应的寄存器,激活WATCHDOG后,需要应用程序周期性的服务WATCHDOG,即我们所说的“喂狗”,对于WATCHDOG模块,需要定时向Watchdog Service Register按顺序写入0x5555、0xaaaa。一般在WATCHDOG模块中还会提供Watchdog Reset Status Register,从中可以找到复位的具体原因。

3、单片机的WATCHDOG实现

许多单片机片内自带看门狗电路,单片机复位时将片内自带看门狗电路禁止,只有当程序访问该电路时,电路启动。如51系列单片机对SFR中的0A6H地址顺序写入#01EH、#0E1H;而96系列单片机则对SFR中的0A6H地址顺序写入#1EH、#0E1H;工控主机板上看门狗电路本身并不要求复位后重新启动,但BIOS在复位后将板上看门狗禁止,启动和喂狗方法与单片机相同。通常在WatchDog编程状态,只要执行如下两条指令:

outportb(0x2e,0xf6);

outportb(0x2f,TIME-OUT-VALUE);

可实现WatchDog的启停,其中TIME-OUT-VALUE ≠0启动;TIME-OUT-VALUE =0停止[2]。能够用指令禁止看门狗是为了适应用户程序开发阶段的需要,这同时给看门狗启动和运行失败留下了后门,在看门狗启动时或启动前遇干扰而使程序跑飞,则看门狗启动失败,无法行使监控职能。

4、结论

WATCHDOG在嵌入式系统中发挥着非常重要的作用,其实现方式也千差万别,根据不同的硬件设计,可以选用不同的WATCHDOG,但它们的作用是一样的:保证系统在出现不可恢复错误时,能够自动让系统重启。

围观 1343

作者:何立民

“思考”与“行为”是人类智能的两种类型。“思考”是大脑独立的思维方式,“行为”是作用于客体的智力表现。

两种不同的智能类型决定了人工智能两种形式、两条道、两种工具、两个领域。人工智能源自图灵机模型,图灵机在实现了人工智能的实用化智力内核(微处理器)后,迅速分化成两种不同的智力内核(通用微处理器与嵌入式微控制器),以满足人工智能两个领域的全面需求。

人类智能的两种表现

思维与智力行为是人类智能的两种表现方式,人类思考方式是思维,人类的行为方式是智力。无论是思维还是智力,都是知识基础上的能力与行为。动物没有知识,人们很难窥见动物思考,只能从动物的行为中了解它们的智力。人们常常喜欢将某些宠物的智力与人类相比,殊不知两者有本质不同:马戏团的小狗会数数,只是条件反射的训练结果,没有任何知识内涵。因此,人类智能是知识基础上的行为与能力。

人类智能与动物智力的本质差异是人类几百万年演化的结果。人类与动物的根本差异在于:动物们在自然竞争中演化,人类摆脱了自然竞争,进入到“认识世界、改造世界”的特殊演化道路。认识世界的思考与改造世界的行为能力构成了人类特殊智能。人们可以从人类大脑的特殊进化中,了解到这种特殊智能的演化结果。

首先是大脑容量的异常进化。百万年来,人类相对于其他物种,唯一明显的进化特征,是脑容量的急剧增长。

据人类学家统计,几百万年前,黑猩猩的脑量平均为400毫升,作为人类祖先的“南方古猿”,脑量为400~770毫升,其后进化的“爪哇人”为775~900毫升、“北京人”为850~1300毫升,现代人脑量平均为1400毫升。与此同时演化的黑猩猩,其脑容量却没有明显变化。现代神经医学研究指出,人类大脑容量的增加,主要是大脑皮层的异常发育所致。大脑皮层主管高级神经活动,体现了人类感知、认知、思维、思考的知识效应,充分表明人类智能的基础是知识。

其次,是人类左大脑的异常进化。20世纪60年代,美国心理生物学家斯佩里博士发现了人类左右大脑的割裂现象,提出了大脑不对称性的“左、右脑分工理论”,荣获1981年诺贝尔生理学或医学奖。人类左右大脑不同功能的分工现象表现在:左半脑主要负责逻辑、理解、记忆、时间、语言、判断、排列、分类、逻辑、分析、书写、推理、抑制、感觉(视、听、嗅、触、味觉)等,其思维方式具有连续性、延续性和分析性,因此左脑可以称作“意识脑”、“学术脑”、“语言脑”。右半脑主要负责空间形象记忆、直觉、情感、身体协调、视知觉、美术、音乐节奏、想象、灵感、顿悟等,思维方式具有无序性、跳跃性、直觉性等,因此右脑又可以称作“本能脑”、“潜意识脑”、“创造脑”、“音乐脑”、“艺术脑”。

百万年来,在认识世界、改造世界中演化,为了生存成为人类进化的主旋律,人类的智能最终形成了以左脑为主的思维、行为方式。可以看出,人类智能主要是知识基础上左大脑的思维(思考)与行为(智力)能力。现阶段,人工智能也将沿着这两种能力表现进行探索与实践。

一个源头的两个分支

1956年夏天,一批有远见卓识的年轻科学家聚在一起,共同研究和探讨用机器模拟人类智能的一系列有关问题,并首次提出了“人工智能”这一概念,人们认为它标志着“人工智能”这门新兴学科的正式诞生。

人工智能,除了理论研究,还必须有能实现人工智能的先进技术与工具,这就是现代计算机。因此,不少人把人工智能看成是计算机的一个分支,其源头则是图灵学者们对“可计算原理”的开创性研究成果。

图灵学者们提出“万物皆可为函数”的可计算原理,1936年5月,图灵发表了著名论文《论可计算数及其在判定问题上的应用》,并提出了图灵机概念。1946年,在图灵机思想影响下,第一台数字计算机“ENIAC”在美国宾夕法尼亚大学诞生,但体积庞大、造价高昂,与图灵理想的人工智能机相距甚远,“ENIAC”的实用化发展也受到诸多限制,直到半导体微处理器诞生,情况才得到根本的转变。

人工智能之父图灵

20世纪60年代半导体集成电路诞生后,Intel于1971年、1972年相继推出了第一代4位微处理器4004与第一代8位微处理器8008。紧随其后的是微处理器的不断改进与微处理器基础上现代计算机的快速发展。在嵌入式系统领域,1974年仙童半导体公司推出了第一个微控制器系列F8,随后微控制器开始了爆发式的创新热潮。

1976年Intel公司开始了MCS 48探索,1980年又完善成经典的8位微控制器MCS 51系列。在通用计算机领域,1981年IBM 公司在8088微处理器基础上,创建了通用计算机IBMPC。

从上面的追溯中可以看出,20世纪30年代,一批图灵学者们以“一切皆可计算”的理论与模型,成为人工智能的源头;1955年,由约翰·麦卡锡(John McCarthy)等人发起的达特茅斯会议上正式定义“人工智能”,催生了人工智能革命;20世纪70年代微处理器诞生,开启了人工智能的实践时代,其后“人工智能”大行其道,成为20世纪与空间技术、能源技术并列的三大尖端科技,又与基因工程、纳米科学一起成为21世纪三大前沿技术。

两个并行发展的人工智能领域

与人类智能的两个领域(思维与行为)相对应,微处理器诞生后,也迅速分化为通用微处理器与嵌入式微处理器,这是一个十分有趣的科技现象。“思考”是大脑在知识基础上的“思维能力”;“行为能力”是人类个体与客观世界的交互状态,除知识以外,还必须有对外部世界的感知与控制。微处理器诞生后,现代计算机智力革命就是沿着这两个领域并行发展。通用微处理器基础上的通用计算机用于实现人类大脑思维能力仿真;嵌入式微处理器基础上的嵌入式系统用于实现人类智力行为替代的智能化工具。

早期,人们以为人工智能就是对人类思维信息过程的模拟,它包括人脑的结构机制模拟与制造“类人脑”的功能模拟。微处理器诞生后,通用计算机承担了思维信息过程模拟的重任;嵌入式系统以智能化工具来替代人类智力行为,这无疑将早先人工智能的“思维仿真”进一步扩大到“行为替代”的广义领域,从此掀开了人工智能历史的新篇章。对此,有人用“强人工智能”与“弱人工智能”来区别这两种不同的人工智能领域。

“强人工智能”,是研究人类大脑及大脑思维仿真的人工智能领域。1980年,美国加州大学伯克利分校哲学教授约翰·罗杰斯·希尔勒(JohnRogersSearle)认为:“计算机不仅是用来研究人的思维的一种工具,而且,只要运行适当的程序,计算机本身就是有思维的。”因此,强人工智能领域有两类,即类人的人工智能与非类人的人工智能。类人的人工智能目标是实现人造大脑,使机器能像人类一样思考和推理,是人工智能的顶级工程,也有人称它为超强人工智能。非类人的人工智能,即机器对人脑功能的仿真。深蓝计算机“国际象棋大师”、沃森计算机“智力竞赛”、AlphaGo“围棋大师”都是机器对人脑的功能仿真,它们起源于20世纪70年代计算机的专家系统研究。

“弱人工智能”,是指用机器实现人类的智能行为,用于代替人类个体的脑力劳动。由于现代计算机的完善与广泛应用,用专家系统及智能化工具形式实现的人工智能比比皆是,充斥在人们周围,人们却视而不见。约翰·麦卡锡这位在20世纪50年代提出人工智能概念的学者也感叹于我们日常生活中每天都在使用人工智能,同时也抱怨于“一旦一样东西用人工智能实现了,人们就不再叫它人工智能了”。另外,不要一提到人工智能就想着机器人,所有内部嵌有微控制器的工具,或在计算机上实现人类思维能力的计算机软件,都是人工智能的表现形式。

全方位渗透的人工智能革命

结合现代人工智能学者温斯顿教授的简明观点—人工智能就是研究如何使计算机去做过去只有人才能做的智能工作,可以看出,20世纪50年代人工智能诞生后,由于计算机工具的滞后,人工智能领域一直没有实质性的进展。20世纪70年代半导体微处理器诞生后,微处理器基础上的现代计算机才成为实现人工智能应用的有力武器,从此开始了以人工智能为中心的现代计算机智力革命。由此构成形形色色、用于替代人类智能的工具,如集成电路芯片、通用计算智力仿真的专家系统和嵌入式系统的智能化工具。

许多业内人士都知道,半导体集成电路可以替代电子工程师的部分智力工作。过去设计一个电子时钟要了解计时原理、设计与调试计时电路,有了集成电路时钟芯片后,电子工程师只要在时钟芯片基础上添加人机交互界面即可。16位模/数转换曾经是国家级科研项目,有了16位模/数转换芯片之后,再也无人从事模/数转换的科学研究。最具说服力的是目前工科院校中模拟电路、数字电路课程内容的不断萎缩,以及大量模拟电路、数字电路专家岗位的丧失现象。

在通用计算智力仿真领域,20世纪70年代兴起了专家系统热潮,随后是形形色色的商品化软件(办公软件、科学计算/分析软件、管理软件、工程设计软件等)问世。这些商品化软件渗透到各行各业,代替人们的脑力劳动。当这些智力仿真成果铺天盖地而来时,人们不以为然。幸好有深蓝计算机“国际象棋大师”、沃森计算机“智力竞赛”、AlphaGo的“围棋大师”对人工智能的普及,让人们对人工智能有了初步的认识。

在嵌入式系统领域,微控制器以智力内核角色嵌入到工具中,实现人类工具的智能化革命。早期的工具智能化是传统电子系统的智能化改造,改造后的智能化工具代替了使用者的智力劳动。自动洗衣机代替了洗衣工的智力劳动,汽车故障自动检测系统免除了维修技师的智力劳动,智能手机多方面代替了人们生活中的智力劳动。在前沿科技领域,众多的智能化设备代替了科学家的智力劳动。

如今,在AlphaGo掀起的这股人工智能热潮中,引发了人们对机器人的众多遐想与议论。在这些遐想与议论中,人们应该意识到,我们已沉浸在一个人工智能的汪洋大海之中。多年来,人工智能彻底改变了我们的生活方式,改变了我们的世界观,只是我们往往浑然不知。

文章来源: 嵌入式资讯精选

围观 377

本文主要介绍嵌入式系统的一些基础知识,希望对各位有帮助。

嵌入式系统基础

1、嵌入式系统的定义

(1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。

(3)知识产权核(IP核):具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基本构件。

(4)IP核模块有行为、结构和物理3级不同程度的设计,对应描述功能行为的不同可以分为三类:软核、固核、硬核。

2、嵌入式系统的组成

包含:硬件层、中间层、系统软件层和应用软件层

(1)硬件层:嵌入式微处理器、存储器、通用设备接口和I/O接口。

嵌入式核心模块=微处理器+电源电路+时钟电路+存储器

Cache:位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。它的主要目标是减小存储器给微处理器内核造成的存储器访问瓶颈,使处理速度更快。

(2)中间层(也称为硬件抽象层HAL或者板级支持包BSP).

它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。

BSP有两个特点:硬件相关性和操作系统相关性。

设计一个完整的BSP需要完成两部分工作:

A、 嵌入式系统的硬件初始化和BSP功能。

片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。

板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。

系统级初始化:以软件为主的初始化过程,进行操作系统的初始化。

B、 设计硬件相关的设备驱动。

(3)系统软件层:由RTOS、文件系统、GUI、网络系统及通用组件模块组成。

RTOS是嵌入式应用软件的基础和开发平台。

(4)应用软件:由基于实时系统开发的应用程序组成。

3、实时系统

(1)定义:能在指定或确定的时间内完成系统功能和对外部或内部、同步或异步时间做出响应的系统。

(2)区别:通用系统一般追求的是系统的平均响应时间和用户的使用方便;而实时系统主要考虑的是在最坏情况下的系统行为。

(3)特点:时间约束性、可预测性、可靠性、与外部环境的交互性。

(4)硬实时(强实时):指应用的时间需求应能够得到完全满足,否则就造成重大安全事故,甚至造成重大的生命财产损失和生态破坏,如:航天、军事。

(5)软实时(弱实时):指某些应用虽然提出了时间的要求,但实时任务偶尔违反这种需求对系统运行及环境不会造成严重影响,如:监控系统、实时信息采集系统。

(6)任务的约束包括:时间约束、资源约束、执行顺序约束和性能约束。

4、实时系统的调度

(1)调度:给定一组实时任务和系统资源,确定每个任务何时何地执行的整个过程。

(2)抢占式调度:通常是优先级驱动的调度,如uCOS。优点是实时性好、反应快,调度算法相对简单,可以保证高优先级任务的时间约束;缺点是上下文切换多。

(3)非抢占式调度:通常是按时间片分配的调度,不允许任务在执行期间被中断,任务一旦占用处理器就必须执行完毕或自愿放弃,如WinCE。优点是上下文切换少;缺点是处理器有效资源利用率低,可调度性不好。

(4)静态表驱动策略:系统在运行前根据各任务的时间约束及关联关系,采用某种搜索策略生成一张运行时刻表,指明各任务的起始运行时刻及运行时间。

(5)优先级驱动策略:按照任务优先级的高低确定任务的执行顺序。

(6)实时任务分类:周期任务、偶发任务、非周期任务。

(7)实时系统的通用结构模型:数据采集任务实现传感器数据的采集,数据处理任务处理采集的数据、并将加工后的数据送到执行机构管理任务控制机构执行。

5、嵌入式微处理器体系结构

(1)冯诺依曼结构:程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,采用单一的地址及数据总线,程序和数据的宽度相同。例如:8086、ARM7、MIPS…

(2)哈佛结构:程序和数据是两个相互独立的存储器,每个存储器独立编址、独立访问,是一种将程序存储和数据存储分开的存储器结构。例如:AVR、ARM9、ARM10…

(3)CISC与RISC的特点比较。

计算机执行程序所需要的时间P可以用下面公式计算:

P=I×CPI×T

I:高级语言程序编译后在机器上运行的指令数。

CPI:为执行每条指令所需要的平均周期数。

T:每个机器周期的时间。

(4)流水线的思想:在CPU中把一条指令的串行执行过程变为若干指令的子过程在CPU中重叠执行。

(5)流水线的指标:

吞吐率:单位时间里流水线处理机流出的结果数。如果流水线的子过程所用时间不一样长,则吞吐率应为最长子过程的倒数。

建立时间:流水线开始工作到达最大吞吐率的时间。若m个子过程所用时间一样,均为t,则建立时间T=mt。

(6)信息存储的字节顺序

A、存储器单位:字节(8位)

B、字长决定了微处理器的寻址能力,即虚拟地址空间的大小。

C、32位微处理器的虚拟地址空间位232,即4GB。

D、小端字节顺序:低字节在内存低地址处,高字节在内存高地址处。

E、大端字节顺序:高字节在内存低地址处,低字节在内存高地址处。

F、网络设备的存储顺序问题取决于OSI模型底层中的数据链路层。

6、逻辑电路基础

(1)根据电路是否具有存储功能,将逻辑电路划分为:组合逻辑电路和时序逻辑电路。

(2)组合逻辑电路:电路在任一时刻的输出,仅取决于该时刻的输入信号,而与输入信号作用前电路的状态无关。常用的逻辑电路有译码器和多路选择器等。

(3)时序逻辑电路:电路任一时刻的输出不仅与该时刻的输入有关,而且还与该时刻电路的状态有关。因此,时序电路中必须包含记忆元件。触发器是构成时序逻辑电路的基础。常用的时序逻辑电路有寄存器和计数器等。

(4)真值表、布尔代数、摩根定律、门电路的概念。

(5)NOR(或非)和NAND(与非)的门电路称为全能门电路,可以实现任何一种逻辑函数。

(6)译码器:多输入多输出的组合逻辑网络。

每输入一个n位的二进制代码,在m个输出端中最多有一个有效。

当m=2n是,为全译码;当m<2n时,为部分译码。

(7)由于集成电路的高电平输出电流小,而低电平输出电流相对比较大,采用集成门电路直接驱动LED时,较多采用低电平驱动方式。液晶七段字符显示器LCD利用液晶有外加电场和无外加电场时不同的光学特性来显示字符。

(8)时钟信号是时序逻辑的基础,它用于决定逻辑单元中的状态合适更新。同步是时钟控制系统中的主要制约条件。

(9)在选用触发器的时候,触发方式是必须考虑的因素。触发方式有两种:

电平触发方式:具有结构简单的有点,常用来组成暂存器。

边沿触发方式:具有很强的抗数据端干扰能力,常用来组成寄存器、计数器等。

7、总线电路及信号驱动

(1)总线是各种信号线的集合,是嵌入式系统中各部件之间传送数据、地址和控制信息的公共通路。在同一时刻,每条通路线路上能够传输一位二进制信号。按照总线所传送的信息类型,可以分为:数据总线(DB)、地址总线(AB)和控制总线(CB)。

(2)总线的主要参数:

总线带宽:一定时间内总线上可以传送的数据量,一般用MByte/s表示。

总线宽度:总线能同时传送的数据位数(bit),即人们常说的32位、64位等总线宽度的概念,也叫总线位宽。总线的位宽越宽,总线每秒数据传输率越大,也就是总线带宽越宽。

总线频率:工作时钟频率以MHz为单位,工作频率越高,则总线工作速度越快,也即总线带宽越宽。

总线带宽 = 总线位宽×总线频率/8, 单位是MBps。

常用总线:ISA总线、PCI总线、IIC总线、SPI总线、PC104总线和CAN总线等。

(3)只有具有三态输出的设备才能够连接到数据总线上,常用的三态门为输出缓冲器。

(4)当总线上所接的负载超过总线的负载能力时,必须在总线和负载之间加接缓冲器或驱动器,最常用的是三态缓冲器,其作用是驱动和隔离。

(5)采用总线复用技术可以实现数据总线和地址总线的共用。但会带来两个问题:

A、需要增加外部电路对总线信号进行复用解耦,例如:地址锁存器。

B、总线速度相对非复用总线系统低。

(6)两类总线通信协议:同步方式、异步方式。

(7)对总线仲裁问题的解决是以优先级(优先权)的概念为基础。

8、电平转换电路

(1)数字集成电路可以分为两大类:双极型集成电路(TTL)、金属氧化物半导体(MOS)。

(2)CMOS电路由于其静态功耗极低,工作速度较高,抗干扰能力较强,被广泛使用。

(3)解决TTL与CMOS电路接口困难的办法是在TTL电路输出端与电源之间接一上拉电阻R,上拉电阻R的取值由TTL的高电平输出漏电流IOH来决定,不同系列的TTL应选用不同的R值。

9、可编程逻辑器件基础

这方面的内容,从总体上有个概念性的认识应该就可以了。

10、嵌入式系统中信息表示与运算基础

(1)进位计数制与转换:这样比较简单,也应该掌握怎么样进行换算,有出题的可能。

(2)计算机中数的表示:源码、反码与补码。

正数的反码与源码相同,负数的反码为该数的源码除符号位外按位取反。

正数的补码与源码相同,负数的补码为该数的反码加一。

例如-98的源码:11100010B

反码:10011101B

补码:10011110B

(3)定点表示法:数的小数点的位置人为约定固定不变。

浮点表示法:数的小数点位置是浮动的,它由尾数部分和阶数部分组成。

任意一个二进制N总可以写成:N=2P×S。S为尾数,P为阶数。

(4)汉字表示法,搞清楚GB2318-80中国标码和机内码的变换。

(5)语音编码中波形量化参数(可能会出简单的计算题目哦)

采样频率:一秒内采样的次数,反映了采样点之间的间隔大小。

人耳的听觉上限是20kHz,因此40kHz以上的采样频率足以使人满意。

CD唱片采用的采样频率是44.1kHz。

测量精度:样本的量化等级,目前标准采样量级有8位和16位两种。
声道数:单声道和立体声双道。立体声需要两倍的存储空间。

11、差错控制编码

(1)根据码组的功能,可以分为检错码和纠错码两类。检错码是指能自动发现差错的码,例如奇偶检验码;纠错码是指不仅能发现差错而且能自动纠正差错的码,例如循环冗余校验码。

(2)奇偶检验码、海明码、循环冗余校验码(CRC)。

12、嵌入式系统的度量项目

(1)性能指标:分为部件性能指标和综合性能指标,主要包括:吞吐率、实时性和各种利用率。

(2)可靠性与安全性

可靠性是嵌入式系统最重要、最突出的基本要求,是一个嵌入式系统能正常工作的保证,一般用平均故障间隔时间MTBF来度量。

(3)可维护性:一般用平均修复时间MTTR表示。

(4)可用性

(5)功耗

(6)环境适应性

(7)通用性

(8)安全性

(9)保密性

(10)可扩展性

性价比中的价格,除了直接购买嵌入式系统的价格外,还应包含安装费用、若干年的运行维修费用和软件租用费。

13、嵌入式系统的评价方法:测量法和模型法

(1)测量法是最直接最基本的方法,需要解决两个问题:

A、根据研究的目的,确定要测量的系统参数。

B、选择测量的工具和方式。

(2)测量的方式有两种:采样方式和事件跟踪方式。

(3)模型法分为分析模型法和模拟模型法。分析模型法是用一些数学方程去刻画系统的模型,而模拟模型法是用模拟程序的运行去动态表达嵌入式系统的状态,而进行系统统计分析,得出性能指标。

(4)分析模型法中使用最多的是排队模型,它包括三个部分:输入流、排队规则和服务机构。

(5)使用模型对系统进行评价需要解决3个问题:设计模型、解模型、校准和证实模型。

接口技术

1. Flash存储器

(1)Flash存储器是一种非易失性存储器,根据结构的不同可以将其分为NOR Flash和NAND Flash两种。

(2)Flash存储器的特点:

A、区块结构:在物理上分成若干个区块,区块之间相互独立。

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

C、操作指令:执行写操作,它必须输入一串特殊指令(NOR Flash)或者完成一段时序(NAND Flash)才能将数据写入。

D、位反转:由于Flash的固有特性,在读写过程中偶尔会产生一位或几位的数据错误。位反转无法避免,只能通过其他手段对结果进行事后处理。

E、坏块:区块一旦损坏,将无法进行修复。对已损坏的区块操作其结果不可预测。

(3)NOR Flash的特点:

应用程序可以直接在闪存内运行,不需要再把代码读到系统RAM中运行。NOR Flash的传输效率很高,在1MB~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

(4)NAND Flash的特点

能够提高极高的密度单元,可以达到高存储密度,并且写入和擦除的速度也很快,这也是为何所有的U盘都使用NAND Flash作为存储介质的原因。应用NAND Flash的困难在于闪存需要特殊的系统接口。

(5)NOR Flash与NAND Flash的区别:

A、NOR Flash的读速度比NAND Flash稍快一些。

B、NAND Flash的擦除和写入速度比NOR Flash快很多

C、NAND Flash的随机读取能力差,适合大量数据的连续读取。

D、NOR Flash带有SRAM接口,有足够的地址引进来寻址,可以很容易地存取其内部的每一个字节。NAND Flash的地址、数据和命令共用8位总线(有写公司的产品使用16位),每次读写都要使用复杂的I/O接口串行地存取数据。

E、NOR Flash的容量一般较小,通常在1MB~8MB之间;NAND Flash只用在8MB以上的产品中。因此,NOR Flash只要应用在代码存储介质中,NAND Flash适用于资料存储。

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

G、NOR Flash可以像其他内存那样连接,非常直接地使用,并可以在上面直接运行代码;NAND Flash需要特殊的I/O接口,在使用的时候,必须先写入驱动程序,才能继续执行其他操作。因为设计师绝不能向坏块写入,这就意味着在NAND Flash上自始至终必须进行虚拟映像。

H、NOR Flash用于对数据可靠性要求较高的代码存储、通信产品、网络处理等领域,被成为代码闪存;NAND Flash则用于对存储容量要求较高的MP3、存储卡、U盘等领域,被成为数据闪存。

2、RAM存储器

(1)SRAM的特点:

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

通常SRAM有4种引脚:

CE:片选信号,低电平有效。

R/W:读写控制信号。

ADDRESS:一组地址线。

DATA:用于数据传输的一组双向信号线。

(2)DRAM的特点:

DRAM表示动态随机存取存储器。这是一种以电荷形式进行存储的半导体存储器。它的每个存储单元由一个晶体管和一个电容器组成,数据存储在电容器中。电容器会由于漏电而导致电荷丢失,因而DRAM器件是不稳定的。它必须有规律地进行刷新,从而将数据保存在存储器中。

DRAM的接口比较复杂,通常有一下引脚:

CE:片选信号,低电平有效。

R/W:读写控制信号。

RAS:行地址选通信号,通常接地址的高位部分。

CAS:列地址选通信号,通常接地址的低位部分。

ADDRESS:一组地址线。

DATA:用于数据传输的一组双向信号线。

(3)SDRAM的特点:

SDRAM表示同步动态随机存取存储器。同步是指内存工作需要同步时钟,内部的命令发送与数据的传输都以它为基准;动态是指存储器阵列需要不断的刷新来保证数据不丢失。它通常只能工作在133MHz的主频。

(4)DDRAM的特点

DDRAM表示双倍速率同步动态随机存取存储器,也称DDR。DDRAM是基于SDRAM技术的,SDRAM在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输;而DDR内存则是一个时钟周期内传输两次次数据,它能够在时钟的上升期和下降期各传输一次数据。在133MHz的主频下,DDR内存带宽可以达到133×64b/8×2=2.1GB/s。

3、硬盘、光盘、CF卡、SD卡

4、GPIO原理与结构

GPIO是I/O的最基本形式,它是一组输入引脚或输出引脚。有些GPIO引脚能够加以编程改变工作方向,通常有两个控制寄存器:数据寄存器和数据方向寄存器。数据方向寄存器设置端口的方向。如果将引脚设置为输出,那么数据寄存器将控制着该引脚状态。若将引脚设置为输入,则此输入引脚的状态由引脚上的逻辑电路层来实现对它的控制。

5、A/D接口

(1)A/D转换器是把电模拟量转换为数字量的电路。实现A/D转换的方法有很多,常用的方法有计数法、双积分法和逐次逼进法。

(2)计数式A/D转换法

其电路主要部件包括:比较器、计数器、D/A转换器和标准电压源。

其工作原理简单来说就是,有一个计数器,从0开始进行加1计数,每进行一次加1,该数值作为D/A转换器的输入,其产生一个比较电压VO与输入模拟电压VIN进行比较。如果VO小于VIN则继续进行加1计数,直到VO大于VIN,这时计数器的累加数值就是A/D转换器的输出值。

这种转换方式的特点是简单,但是速度比较慢,特别是模拟电压较高时,转换速度更慢。例如对于一个8位A/D转换器,若输入模拟量为最大值,计数器要从0开始计数到255,做255次D/A转换和电压比较的工作,才能完成转换。

(3)双积分式A/D转换法

其电路主要部件包括:积分器、比较器、计数器和标准电压源。

其工作原理是,首先电路对输入待测电压进行固定时间的积分,然后换为标准电压进行固定斜率的反向积分,反向积分进行到一定时间,便返回起始值。由于使用固定斜率,对标准电压进行反向积分的时间正比于输入模拟电压值,输入模拟电压越大,反向积分回到起始值的时间越长。只要用标准的高频时钟脉冲测定反向积分花费的时间,就可以得到相应于输入模拟电压的数字量,也就完成了A/D转换。

其特点是,具有很强的抗工频干扰能力,转换精度高,但转换速度慢,通常转换频率小于10Hz,主要用于数字式测试仪表、温度测量等方面。

(4)逐次逼近式A/D转换法

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

其工作原理是,实质上就是对分搜索法,和平时天平的使用原理一样。在进行A/D转换时,由D/A转换器从高位到低位逐位增加转换位数,产生不同的输出电压,把输入电压与输出电压进行比较而实现。首先使最高位为1,这相当于取出基准电压的1/2与输入电压比较,如果在输入电压小于1/2的基准电压,则最高位置0,反之置1。之后,次高位置1,相当于在1/2的范围中再作对分搜索,以此类推,逐次逼近。

其特点是,速度快,转换精度高,对N位A/D转换器只需要M个时钟脉冲即可完成,一般可用于测量几十到几百微秒的过渡过程的变化,是目前应用最普遍的转换方法。

(5)A/D转换的重要指标(有可能考一些简单的计算)

A、分辨率:反映A/D转换器对输入微小变化响应的能力,通常用数字输出最低位(LSB)所对应的模拟电压的电平值表示。n位A/D转换器能反映1/2n满量程的模拟输入电平。

B、量程:所能转换的模拟输入电压范围,分为单极性和双极性两种类型。

C、转换时间:完成一次A/D转换所需要的时间,其倒数为转换速率。

D、精度:精度与分辨率是两个不同的概念,即使分辨率很高,也可能由于温漂、线性度等原因使其精度不够高。精度有绝对精度和相对精度两种表示方法。通常用数字量的最低有效位LSB的分数值来表示绝对精度,用其模拟电压满量程的百分比来表示相对精度。

例如,满量程10V,10位A/D芯片,若其绝对精度为±1/2LSB,则其最小有效位LSB的量化单位为:10/1024=9.77mv,其绝对精度为9.77mv/2=4.88mv,相对精度为:0.048%。

6、D/A接口基本

(1)D/A转换器使将数字量转换为模拟量。

(2)在集成电路中,通常采用T型网络实现将数字量转换为模拟电流,再由运算放大器将模拟电路转换为模拟电压。进行D/A转换实际上需要上面的两个环节。

(3)D/A转换器的分类:

A、电压输出型:常作为高速D/A转换器。

B、电流输出型:一般外接运算放大器使用。

C、乘算型:可用作调制器和使输入信号数字化地衰减。

(4)D/A转换器的主要指标:分辨率、建立时间、线性度、转换精度、温度系数。

7、键盘接口

(1)键盘的两种形式:线性键盘和矩阵键盘。

(2)识别键盘上的闭合键通常有两种方法:行扫描法和行反转法。

(3)行扫描法是矩阵键盘按键常用的识别方法,此方法分为两步进行:

A、识别键盘哪一列的键被按下:让所有行线均为低电平,查询各列线电平是否为低,如果有列线为低,则说明该列有按键被按下,否则说明无按键按下。

B、如果某列有按键按下,识别键盘是哪一行按下:逐行置低电平,并置其余各行为高电平,查询各列的变化,如果列电平变为低电平,则可确定此行此列交叉点处按键被按下。

8、显示接口

(1)LCD的基本原理是,通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。

(2)LCD的光源提供方式有两种:投射式和反射式。笔记本电脑的LCD显示器为投射式,屏的背后有一个光源,因此外界环境可以不需要光源。一般微控制器上使用的LCD为反射式,需要外界提供电源,靠反射光来工作。电致发光(EL)是液晶屏提供光源的一种方式。

(3)按照液晶驱动方式分类,常见的LCD可以分为三类:扭转向列类(TN)、超扭曲向列型(STN)和薄膜晶体管型(TFT)。

(4)市面上出售的LCD有两种类型:带有驱动电路的LCD显示模块,只要总线方式驱动;没有驱动电路的LCD显示器,使用控制器扫描方式。

(5)通常,LCD控制器工作的时候,通过DMA请求总线,直接通过SDRAM控制器读取SDRAM中指定地址(显示缓冲区)的数据,此数据经过LCD控制器转换成液晶屏扫描数据格式,直接驱动液晶显示器。

(6)VGA接口本质上是一个模拟接口,一般都采用统一的15引脚接口,包括2个NC信号、3根显示器数据总线、5个GND信号、3个RGB色彩分量、1个行同步信号和1个场同步信号。其色彩分量采用的电平标准为EIA定义的RS343标准。

9、触摸屏接口

(1)按工作原理分,触摸屏可以分为:表面声波屏、电容屏、电阻屏和红外屏几种。

(2)触摸屏的控制采用专业芯片,例如ADS7843。

10、音频接口
(1)基本原理:麦克风输入的数据经音频编解码器解码完成A/D转换,解码后的音频数据通过音频控制器送入DSP或CPU进行相应的处理,然后数据经音频控制器发送给音频编码器,经编码D/A转换后由扬声器输出。

(2)数字音频的格式有多种,最常用的是下面三种:

A、采用数字音频(PCM):是CD或DVD采用的数据格式。其采样频率为44.1kHz。精度为16位时,PCM音频数据速率为1.41Mb/s;精度为32位时为2.42 Mb/s。一张700MB的CD可以保存大约60分钟的16位PCM数据格式的音乐。

B、MPEG层3音频(MP3):MP3播放器采用的音频格式。立体声MP3数据速率为112kb/s至128kb/s。

C、ATSC数字音频压缩标准(AC3):数字TV、HDTV和电影数字音频编码标准,立体声AC3编码后的数据速率为192kb/s。

(3)IIS是音频数据的编码或解码常用的串行音频数字接口。IIS总线只处理声音数据,其他控制信号等则需要单独传输。IIS使用了3根串行总线:数据线SD、字段选择线WS、时钟信号线SCK。

(4)当接收方和发送方的数据字段宽度不一样时,发送方不考虑接收方的数据字段宽度。如果发送方发送的数据字段小于系统字段宽度,就在低位补0;如果发送方的数据宽度大于接收方的宽度,则超过LSB的部分被截断。字段选择WS用来选择左右声道,WS=0表示选择左声道;WS=1表示选择右声道。此外,WS能让接收设备存储前一个字节,并准备接收下一个字节。

11、串行接口

(1)串行通信是指,使数据一位一位地进行传输而实现的通信。与并行通信相比,串行通信具有传输线少、成本低等优点,特别适合远距离传送;缺点使速度慢。

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

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

A、异步传输:把每个字符当作独立的信息来传输,并按照一固定且预定的时序传送,但在字符之间却取决于字符与字符的任意时序。异步通信时,字符是一帧一帧传送的,每帧字符的传送靠起始位来同步。一帧数据的各个代码间间隔是固定的,而相邻两帧数据其时间间隔是不固定的。

B、同步传输:同步方式不仅在字符之间是同步的,而且在字符与字符之间的时序仍然是同步的,即同步方式是将许多字符******成一字符块后,在每块信息之前要加上1~2个同步字符,字符块之后再加入适当的错误检测数据才传送出去。

(4)异步通信必须遵循3项规定:

A、字符格式:起始位+数据+校验位+停止位(检验位可无),低位先传送。

B、波特率:每秒传送的位数。

C、校验位:奇偶检验。

a、奇校验:要使字符加上校验位有奇数个“1”。

b、偶检验:要使字符加上校验位有偶数个“1”。

(5)RS-232C的电气特性:负逻辑。

A、在TxD和RxD上:逻辑1为-3V~-15V,逻辑0为3V~15V。

B、在TES、CTS、DTR、DCD等控制线上:

信号有效(ON状态)为3V~15V

信号无效(OFF状态)为-3V~-15V

(6)TTL标准与RS-232C标准之间的电平转换利用集成芯片RS232实现。

(7)RS-422串行通信接口

A、RS-422是一种单机发送、多机接收的单向、平衡传输规范,传输速率可达10Mb/s。

B、RS-422采用差分传输方式,也称做平衡传输,使用一对双绞线。

C、RS-422需要一终端电阻,要求其阻值约等于传输电缆的特性阻抗。

(8)RS-485串行总线接口

A、RS-485是在RS-422的基础上建立的标准,增加了多点、双向通信能力,通信距离可为几十米到上千米。

B、RS-485收发器采用平衡发送和差分接收,具有抑制共模干扰的能力。

C、RS-485需要两个终端电阻。在近距离(300m一下)传输可不需要终端电阻。

12、并行接口

(1)并行接口的数据传输率比串行接口快8倍,标准并行接口的数据传输率为1Mb/s,一般用来连接打印机、扫描仪等,所以又称打印口。

(2)并行接口可以分为SPP(标准并口)、EPP(增强型并口)和ECP(扩展型并口)。

(3)并行总线分为标准和非标准两类。常用的并行标准总线有IEEE 488总线和ANSI SCSI总线。MXI总线是一种高性能非标准的通用多用户并行总线。

13、PCI接口

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

(2)从数据宽度上看,PCI定义了32位数据总线,且可扩展为64位。从总线速度上分,有33MHz和66MHz两种。

(3)与ISA总线相比,PCI总线的地址总线与数据总线分时复用,支持即插即用、中断共享等功能。

14、USB接口

(1)USB总线的主要特点:

A、使用简单,即插即用。

B、每个USB系统中都有主机,这个USB网络中最多可以连接127个设备。

C、应用范围广,支持多个设备同时操作。

D、低成本的电缆和连接器,使用统一的4引脚插头。

E、较强的纠错能力。

F、较低的协议开销带来了高的总线性能,且适合于低成本外设的开发。

G、支持主机与设备之间的多数据流和多消息流传输,且支持同步和异步传输类型。

H、总线供电,能为设备提供5V/100mA的供电。

(2)USB系统由3部分来描述:USB主机、USB设备和USB互连。

(3)USB总线支持的数据传输率有3种:高速信令位传输率为480Mb/s;全速信令位传输率为12Mb/s;全速信令位传输率为1.5Mb/s。

(4)USB总线电缆有4根线:一对双绞信号线和一对电源线。

(5)USB是一种查询总线,由主控制器启动所有的数据传输。USB上所挂接的外设通过由主机调度的、基于令牌的协议来共享USB带宽。

(6)大部分总线事务涉及3个包的传输:

A、令牌包:指示总线上要执行什么事务,欲寻址的USB设备及数据传送方向。

B、数据包:传输数据或指示它没有数据要传输。

C、握手包:指示传输是否成功。

(7)主机与设备端点之间的USB数据传输模型被称作管道。管道有两种类型:流和消息。消息数据具有USB定义的结构,而数据流没有。

(8)事务调度表允许对某些流管道进行流量控制,在硬件级,通过使用NAK(否认)握手信号来调节数据传输率,以防止缓冲区上溢或下溢产生。

(9)USB设备最大的特点是即插即用。

(10)工作原理:USB设备插入USB端点时,主机都通过默认地址0与设备的端点0进行通信。在这个过程中,主机发出一系列试图得到描述符的标准请求,通过这些请求,主机得到所有感兴趣的设备信息,从而知道了设备的情况以及该如何与设备通信。随后主机通过发出Set Address请求为设备设置一个唯一的地址。以后主机就通过为设备设置好的地址与设备通信,而不再使用默认地址0。

15、SPI接口

(1)SPI是一个同步协议接口,所有的传输都参照一个共同的时钟,这个同步时钟有主机产生,接收数据的外设使用时钟来对串行比特流的接收进行同步化。

(2)在多个设备连接到主机的同一个SPI接口时,主机通过从设备的片选引脚来选择。

(3)SPI主要使用4个信号:主机输出/从机输入(MOSI),主机输入/从机输出(MISO)、串行时钟SCLK和外设片选CS。

(4)主机和外设都包含一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次数据传输。寄存器通过MOSI信号线将字节传送给外设,外设也将自己移位寄存器中的内容通过MISO信号线返回给主机,这样,两个移位寄存器中的内容就被交换了。

(5)外设的写操作和读操作时同步完成的,因此SPI成为一个很有效的协议。

(6)如果只是进行写操作,主机只需忽略收到的字节;反过来,如果主机要读取外设的一个字节,就必须发送一个空字节来引发从机的传输。

16、IIC接口

(1)IIC总线是具备总线仲裁和高低速设备同步等功能的高性能多主机总线。

(2)IIC总线上需要两条线:串行数据线SDA和串行时钟线SCL。

(3)总线上的每个器件都有唯一的地址以供识别,而且各器件都可以作为一个发送器或者接收器(由器件的功能决定)。

(4)IIC总线有4种操作模式:主发送、主接收、从发送、从接收。

(5)IIC在传送数据过程******有3种类型信号:

A、开始信号:SCL为低电平时,SDA由高向低跳变。

B、结束信号:SCL为低电平时,SDA由低向高跳变。

C、应答信号:接收方在收到8位数据后,在第9个脉冲向发送方发出特点的低电平。

(6)主器件发送一个开始信号后,它还会立即送出一个从地址,来通知将与它进行数据通信的从器件。1个字节的地址包括7位地址信息和1位传输方向指示位,如果第7位为0,表示要进行一个写操作,如果为1,表示要进行一个读操作。

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

(8)如果数据接收方无法再接收更多的数据,它可以通过将SCL保持低电平来中断传输,这样可以迫使数据发送方等待,直到SCL被重新释放。这样可以达到高低速设备同步。

(9)IIC总线的工作过程:SDA和SCL都是双向的。空闲的时候,SDA和SCL都是高电平,只有SDA变为低电平,接着SCL再变为低电平,IIC总线的数据传输才开始。SDA线上被传输的每一位在SCL的上升沿被采样,该位必须一直保持有效到SCL再次变为低电平,然后SDA就在SCL再次变为高电平之前传输下一个位。最后,SCL变回高电平,接着SDA也变为高电平,表示数据传输结束。

17、以太网接口

(1)最常用的以太网协议是IEEE802.3标准。

(2)传输编码(06和07年都有******):曼彻斯特编码和差分曼彻斯特编码。

A、曼彻斯特编码:每位中间有一个电平跳变,从高到底的跳变表示“0”,从低到高的跳变表示为“1”。

B、差分曼彻斯特编码:每位中间有一个电平跳变,利用每个码元开始时有无跳变来表示“0”或“1”,有跳变为“0”,无跳变为“1”。

(3)相比之下,曼彻斯特编码编码简单,差分曼彻斯特编码提供更好的噪声抑制性能。

(4)以太网数据传输特点:

A、所有数据位的传输由低位开始,传输的位流时用曼彻斯特编码。

B、以太网是基于冲突检测的总线复用方法,由硬件自动执行。

C、传输的数据长度,目的地址DA+源地址SA+类型字段TYPE+数据段DATA+填充位PAD,最小为60B,最大为1514B。

D、通常以太网卡可以接收3种地址的数据:广播地址、多播地址、自己的地址。

E、任何两个网卡的物理地址都不一样,是世界上唯一的,网卡地址由专门机构分配。

(5)嵌入式以太网接口有两种实现方法:

A、嵌入式处理器+网卡芯片(例如:RTL8019AS、CS8900等)

B、带有以太网接口的处理器。

(6)TCP/IP是一个分层协议,分为:物理层、数据链路层、网络层、传输层和应用层。每层实现一个明确的功能,对应一个或几个传输协议,每层相对于它的下层都作为一个独立的数据包来实现。每层上的协议如下:

A、应用层:BSD套接字。

B、传输层:TCP、UDP。

C、网络层:IP、ARP、ICMP、IGMP

D、数据链路层:IEEE802.3 Ethernet MAC

E、物理层:二进制比特流。

(7)ARP(地址解析协议)

A、网络层用32位的地址来标识不同的主机(即IP地址),而链路层使用48位的物理地址(MAC)来标识不同的以太网或令牌网接口。

B、ARP功能:实现从IP地址到对应物理地址的转换。

(8)ICMP(网络控制报文协议)

A、IP层用它来与其他主机或路由器交换错误报文和其他重要控制信息。

B、ICMP报文是在IP数据包内被传输的。

C、网络诊断工具ping和traceroute其实就是ICMP协议。

(9)IP(网际协议)

A、IP工作在网络层,是TCP/IP协议族中最为核心的协议。

B、所有的TCP、UDP、ICMP及IGMP数据都以IP数据包格式传输。

C、TTL(生存时间字段):指定了IP数据包的生存时间(数据包可以经过的路由器数)。

D、IP提供不可靠、无连接的数据包传送服务,高效、灵活。

a、不可靠:它不能保证数据包能成功到达目的地,任何要求的可靠性必须由上层来提供(如TCP)。如果发生某种错误,IP有一个简单的错误处理算法--丢弃该数据包,然后发送ICMP消息报给信源端。

b、无连接:IP不维护任何关于后续数据包的状态信息。每个数据包的处理都是相互独立的。IP数据包可以不按顺序接收,

(10)TCP(传输控制协议)

TCP协议是一个面向连接的可靠的传输层协议,它为两台主机提供高可靠性的端到端数据通信。

(11)UDP(用户数据包协议)

UDP协议是一种无连接不可靠的传输层协议,它不保证数据包能到达目的地,可靠性有应用层来提供。UDP协议开销少,和TCP相比更适合于应用在低端的嵌入式领域中。

(12)端口:TCP和UDP采用16位端口号来识别上层的用户,即应用层协议,例如FTP服务的TCP端口号都是21,Telnet服务的TCP端口号都是23,TFTP服务的UDP端口号都是69。

18、CAN总线接口

(1)CAN(Control Area Network,控制器局域网)总线是一种多主方式的串行通信总线,是国际上应用最广泛的现场总线之一,最初被用于汽车环境中的电子控制网络。一个CAN总线构成的单一网络中,理想情况下可以挂接任意多个节点,实际应用中节点数据受网络硬件的电气特性所限制。

(2)总线信号使用差分电压传送。两条信号线被称为CAN_H和CAN_L,静态是均为2.5V左右,此时状态表示逻辑1,也可以叫做“隐性”。用CAN_H比CAN_L高表示逻辑0,称为“显性”,此时,通常电压值为CAN_H=3.5V和CAN_L=1.5V。

(3)当“显性”和“隐性”位同时发送的时候,最后总线数值将为“显性”这种特性为CAN总线的仲裁奠定了基础。

(4)CAN总线的一个位时间可以分成4个部分:同步段、传播时间段、相位缓冲段1和相位缓冲段2。

(5)CAN总线的数据帧有两种格式:标准格式和扩展格式。包括:帧起始、仲裁场、控制场、数据场、CRC场、ACK场和帧结束。

(6)CAN总线硬件接口包括:CAN总线控制器和CAN收发器。CAN控制器主要完成时序逻辑转换等工作,例如菲利普的SJA1000。CAN收发器是CAN总线的物理层芯片,实现TTL电平到CAN总线电平特性的转换,例如TJA1050。

19、xDSL接口

(1)xDSL(数字用户线路)技术是,在现有用户电话线两侧同时接入专用的DSL调制解调设备,在用户线上利用数字数字信号高频带宽较宽的特性直接采用数字信号传输,省去中间的A/D转换,突破了模拟信号传输极限速率为56KB/s的闲置。

(2)DSL技术主要分为对称和非对称两大类。

(3)对成xDSL更适合于企业点对点连接应用,例如文件传输、视频会议等收发数据量大致相同的工作。

(4)ASDL是近年发展的另一种宽带接入技术,是利用双绞铜线向用户提供两个方向上速率不对称的宽带信息业务。

(5)ADSL在一对电话线上同时传送一路高速下行数据、一路较低速率上行数据、一路模拟电话。各信号之间采用频分复用方式占用不同频带,低频段传送话音;中间窄频带传送上行信道数据及控制信息;其余高频段传送下行信道数据、图像或高速数据。

20、WLAN接口

(1)WLAN(Wireless Local Area Network)是利用无线通信技术在一定的局部范围内建立的,是计算机网络与无线通信技术相结合的产物,它以无线多址通道作为传输媒介,提供有线局域网的功能。

(2)WLAN的标准:主要是针对物理层和媒质访问控制层(MAC层),涉及到所有使用的无线频率范围、控制接口通信协议等技术规范与技术标准。

A、IEEE 802.11:定义了物理层和MAC层规范,工作在2.4~2.4835GHz频段,最高速率为2Mb/s,是IEEE最初制定的一个无线局域网标准。

B、IEEE 802.11b:工作在2.4~2.4835GHz频段,最高速率为11Mb/s,传输距离50~150inch。采用点对点模式和基本模式两种运行模式。在数据传输速率方面可以根据实际情况在11Mb/s、5.5Mb/s、2 Mb/s、1 Mb/s的不同速率间自动切换。

C、IEEE 802.11a:工作在5.15~8.825GHz频段,最高速率为54Mb/s/72Mb/s,传输距离10~100m。

D、IEEE 802.11g:混合标准,拥有EEE 802.11a的传输速率,安全性较EEE 802.11b好,采用两种调制方式,做到与EEE 802.11a和EEE 802.11b兼容。

(3)WLAN有两种网络类型:对等网络和基础机构网络。

21、蓝牙接口

(1)蓝牙技术的目的:使特定的移动电话、便鞋式电脑以及各种便携通信设备的主机之间近距离内实现无缝的资源共享。

(2)蓝牙技术的实质内容是要建立通用的无线空中接口及其控制软件的公开标准。其工作频段为全球通用的2.4GHz ISM(即工业、科学、医学)频段,其数据传输速率为1Mb/s,采用时分双工方案来实现全双工传输,其理想的连接范围为10cm~10m。

(3)蓝牙基带协议是电路交换和分组交换的结合。

(4)蓝牙技术特点:

A、传输距离短,工作距离在10m以内。

B、采用跳频扩频技术。

C、采用时分复用多路访问技术,有效地避免了“碰撞”和“隐藏终端”等问题。

D、网络技术。

E、语言支持。

F、纠错技术,其采用的是FEC(前向纠错)方案。

(5)蓝牙接口由3大单元组成:无线单元、基带单元、链路管理与控制单元。

22、1394接口

(1)1394作为一种标准总线,可以在不同的工业设备之间架起一座沟通的桥梁,在一条总线上可以接入63个设备。

(2)IEEE 1394的特点:

A、支持多种总线速度,适应不同应用要求。

B、即插即用,支持热插拔。

C、支持同步和异步两种传输方式。

D、支持点到点通信模式,IEEE 1394是多主总线。

E、遵循ANSI IEEE 1212控制及状态寄存器(CSR)标准,定义了64位的地址空间,可寻址1024条总线的63个节点,每个节点可包含256TB的内存空间。

F、支持较远距离的传输。

G、支持公平仲裁原则,为每一种传输方式保证足够的传输带宽。

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

(3)IEEE 1394的协议栈由3层组成:物理层、链路层和事务层,例外还有一个管理层。物理层和链路层由硬件构成,而事务层主要由软件实现。

A、物理层提供IEEE 1394的电气和机械接口,功能是重组字节流并将它们发送到目的节点上去。

B、链路层提供了给事务层确认的数据服务,包括:寻址、数据组帧和数据校验。

C、事务层为应用提供服务。

D、管理层定义了一个管理节点所使用的所有协议、服务以及进程。

23、电源接口

(1)DC-DC转换器有三种类型:

A、线性稳压器:产生较输入电压低的电压。

B、开关稳压器:能升高电压、降低电压或翻转输入电压。

C、充电泵:可以升高、降低或翻转输入电压,但电流驱动能力有限。

(2)任何变压器的转换过程都不具有100%的效率,稳压器本省也使用电流(静态电流),这个电流来自输入电流。静态电流越大,稳压器功耗越大。

(3)线性稳压器输入输出使用退耦电容来过滤,电容除了有助于平稳电压以外,还有利于去除电源中的瞬间短时脉冲波形干扰。

(4)电压与功耗之间的平方关系意味着理想高效的方法是在要求较低电压的较低时钟速率上执行代码,而不是先以最高的时钟速率执行代码然后再转为空闲休眠。

(5)电源通常被认为是整个系统的“心脏”,绝大多数电子设备50%~80%的节能潜力在于电源系统,研制开发新型开关电源是节能的主要举措之一。

(6)降低功耗的设计技术:

A、采用低功耗器件,例如选用CMOS电路芯片。

B、采用高集成度专用器件,外部设备的选择也要尽量支持低功耗设计。

C、动态调整处理器的时钟频率和电压,在允许的情况下尽量使用低频率器件。

D、利用“节电”工作方式。

E、合理处理器件空余引脚:

a、大多数数字电路的输出端在输出低电平时,其功耗远远大于输出高电平时的功耗,设计时应该注意控制低电平的输出时间,闲置时使其处于高电平输出状态。

b、多余的非门、与非门的输入端应接低电平,多余的与门、或门的输入端应接高电平。

c、ROM或RAM及其他有片选信号的器件,不要将“片选”引脚直接接地,避免器件长期被接通,而应该与“读/写”信号结合,只对其进行读写操作时才选通。

F、实现电源管理,设计外部器件电源控制电路,控制“耗电大户”的供电情况。

文章来源:互联网(版权归原著作者所有)

围观 254

嵌入式操作系统(Embedded Operation System,EOS)是指用于嵌入式系统的操作系统。嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。嵌入式操作系统是负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能,是一种用途广泛的系统软件。

嵌入式LINUX

嵌入式Linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。Linux做嵌入式的优势,首先,Linux是开放源代码;其次,Linux的内核小、效率高,可以定制,其系统内核最小只有约134KB;第三,Linux是免费的OS,Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台而且性能稳定,裁剪性很好,开发和使用都很容易。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Token Ring(令牌环网)、光纤甚至卫星的支持。

移植步骤:1.Bootloader的移植;2.嵌入式Linux操作系统内核的移植;3.嵌入式Linux操作系统根文件系统的创建;4.电路板上外设Linux驱动程序的编写。

WinCE

WinCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,Win CE的图形用户界面相当出色。WinCE是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200K的ROM。

一般来说,一个WinCE系统包括四层结构:应用程序、WinCE内核映像、板级支持包(BSP)、硬件平台。而基本软件平台则主要由WinCE系统内核映像(OS Image)和板卡支持包(BSP)两部分组成。因为WinCE系统是一个软硬件紧密结合的系统,因此即使CPU处理器相同,但是如果开发板上的外围硬件不相同,这个时候还是需要修改BSP来完成一个新的BSP。因此换句话说,就是WinCE的移植过程主要是改写BSP的过程。

Android

Android 是一个包括操作系统,中间件以及一些重要应用程序的专门针对移动设备的层次结构的软件集。Android 作为一个完全开源的操作系统,是由操作系统Linux、中间件以及核心应用程序组成的软件栈。通过 android SDK 提供的 API 以及相应的开发工具, 程序员可以很方便的开发android平台上的应用程序。其整个系统由应用程序,应用程序框架,应用程序库,Android运行库,Linux内核(Linux Kernel)五个部分组成。Android操作系统内置了一部分应用程序, 包括电子邮件客户端、SMS程序、日历、地图、浏览器、通讯录以及其他的程序,值得一提的是这些所有的程序都是用java编写的。

移植的主要的工作是驱动,硬件抽象层的移植。为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调用情况。

TinyOS

TinyOS是一个开源的嵌入式操作系统,它是由加州大学的伯利克分校开发出来的,主要应用于无线传感器网络方面。程序采用的是模块化设计,所以它的程序核心往往都很小,一般来说核心代码和数据大概在400 Bytes左右,能够突破传感器存储资源少的限制。TinyOS提供一系列可重用的组件,一个应用程序可以通过连接配置文件(A Wiring Specification)将各种组件连接起来,以完成它所需要的功能。

嵌入式实时操作系统(RTOS)

在工业控制、 军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。故对嵌入式实时操作系统的理解应该建立在对嵌入式系统的理解之上加入对响应时间的要求。

FreeRTOS

FreeRTOS是一个迷你操作系统内核的小型嵌入式系统。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。FreeRTOS任务可选择是否共享堆栈,并且没有任务数限制,多个任务可以分配相同的优先权。相同优先级任务的轮转调度,同时可设成可剥夺内核或不可剥夺内核。

FreeRTOS 的移植主要需要改写如下三个文件。1.portmacro.h 2.port.c 3. port.asm

μTenux

μTenux基于ARM微控制器平台,对uT最适用于ARM Cortex M0-M4系列的微控制器,代码开源、免费,是一个功能强大的抢占式实时多任务操作系统。μTenux除具有实时嵌入式操作系统的一般特性:可移植性,可固化,可裁剪等特性以外,它还具有如下优点:(1)微内核。无MMU, ROM/RAM占用量小,所占ROM最大60KB,最小10KB;RAM最大12KB,最小2KB;(2)开源免费;(3)支持所有32位ARM7/9和Cortex M系列的微控制器;(4)可配置多达到256个任务以及140个任务优先级;(5)有良好的商业支持, T-Engine论坛进行总的维护。

移植主要包括:芯片系统时钟移植,外设移植和通用输出/输入端口的移植以及看门狗模块移植。由于考虑到内核代码的重要性以及其在整个移植中的重要意义,且为了整个系统有更好的实时性,可选用汇编语言编写操作系统的启动代码。

VxWorks

VxWorks系统提供多处理器间和任务间高效的信号灯、消息队列、管道、网络透明的套接字。实时系统的另一关键特性是硬件中断处理。为了获得最快速可靠的中断响应,VxWorks系统的中断服务程序ISR有自己的上下文。VxWorks实时操作系统由400多个相对独立的、短小精炼的目标模块组成,用户可根据需要选择适当模块来裁剪和配置系统,这有效地保证了系统的安全性和可靠性。系统的链接器可按应用的需要自动链接一些目标模块。这样,通过目标模块之间的按需组合,可得到许多满足功能需求的应用。

移植过程可以参考网络上一些BSP代码,BSP的英文全称为board support package,即板级支持包,它的作用是针对特殊的硬件平台,为VxWorks内核提供操作的接口。

μClinux

嵌入式Linux作为一个开放源代码的操作系统,以价格低廉、功能强大又易移植的特性正在被广泛应用,μClinux是专门针对没有MMU的处理器而设计的嵌入式Linux,非常适合中低端嵌入式系统的需求。 在GNU通用公共许可证的授权下,μClinux操作系统的用户可以使用几乎所有Linux的API函数,不会因为没有内存管理单元MMU而受到影响;而且,μClinux在标准的Linux基础上进行了适当的裁剪和优化,形成了一个高度优化的、代码紧凑的嵌入式Linux,体积小了,但是仍然保留了Linux的大多数的优点,比如稳定性好、强大的网络功能、良好的可移植性、完备的文件系统支持功能、以及标准丰富的应用程序接口API等,可以支持类似ARM7TDMI等类型多的小巧玲珑的中央处理器。

eCos

eCos中文翻译为嵌入式可配置操作系统或嵌入式可配置实时操作系统。适合于深度嵌入式应用,主要应用对象包括消费电子、电信、车载设备、手持设备以及其他一些低成本和便携式应用。eCos是一种开发源代码软件,无任何版权费用。 eCos最大的特点是模块化,内核可配置。如果说嵌入式Linux太庞大了,那么eCos可能就能够满足要求。它是一个针对16位、32位和64位处理器的可移植开放源代码的嵌入式RTOS。和嵌入式Linux不同,它是由专门设计嵌入式系统的工作组设计的。eCos具有相当丰富的特性和一个配置工具,后者能够让你选取你所需要的特性。

eCos的软件分了若干的模块,移植工作主要在他的hal层进行,所谓hal(硬件抽象层)就是把和硬件相关的软件凑到一起。

μC/OS-II

μC/OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。μC/OS-II绝大部分的代码是用ANSI的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。其结构小巧简洁且支持抢占式的多任务调度与管理。此实时操作系统管理任务数多达64个,且提供内部程序存储器管理、系统运行时间管理、多任务实时调度与管理等功能。由于它的作者占用和保留了8个任务,所以留给用户应用程序最多可有56个任务。赋予各个任务的优先级必须是不相同的。这意味着μC/OS-II不支持时间片轮转调度法。μC/OS-II为每个任务设置独立的堆栈空间,可以快速实现任务切换。

将μC/OS-II操作系统移植到目标处理器上,需要从硬件和软件两方面来考虑。硬件方面,目标处理器需满足以下条件:

①处理器的C编译器能产生可重入代码;

②用C语言可以开/关中断;

③处理器支持中断,并且能够产生定时中断(通常在10~1000 Hz之间);

④处理器能够支持容纳一定量数据的硬件堆栈;

⑤处理器有将堆栈指针和其他寄存器读出和存储到堆栈或内存中的指令。

软件方面,主要是一些与处理器相关的代码移植,其分布在OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM这3个不同的文件中。

来源:互联网(版权归原作者所有)

围观 460

设计以MCU为核心的嵌入式系统硬件电路需要根据需求分析进行综合考虑,需要考虑的问题较多,这里给出几个特别要注意的问题。

1、MCU的选择

选择 MCU 时要考虑 MCU 所能够完成的功能、MCU 的价格、功耗、供电电压、I/O 口电平、管脚数目以及 MCU 的封装等因素。MCU 的功耗可以从其电气性能参数中查到。供电电压有 5V、3.3V 以及 1.8V 超低电压供电模式。

为了能合理分配 MCU 的I/O资源,在 MCU 选型时可绘制一张引脚分配表,供以后的设计使用。

2、电源

(1)考虑系统对电源的需求,例如系统需要几种电源,如24V、12V、5V或者3.3V等,估计各需要多少功率或最大电流(mA)。在计算电源总功率时要考虑一定的余量,可按公式“电源总功率=2×器件总功率”来计算。

(2)考虑芯片与器件对电源波动性的需求。一般允许电源波动幅度在 ±5% 以内。对于A/D转换芯片的参考电压一般要求 ±1% 以内。 (3)考虑工作电源是使用电源模块还是使用外接电源。

3、普通I/O口

(1)上拉、下拉电阻:考虑用内部或者外部上/下拉电阻,内部上/下拉阻值一般在 700Ω 左右,低功耗模式不宜使用。外部上/下拉电阻根据需要可选 10KΩ~1MΩ 之间。

(2)开关量输入:一定要保证高低电压分明。理想情况下高电平就是电源电压,低电平就是地的电平。如果外部电路无法正确区分高低电平,但高低仍有较大压差,可考虑用 A/D 采集的方式设计处理。对分压方式中的采样点,要考虑分压电阻的选择,使该点通过采样端口的电流不小于采样最小输入电流,否则无法进行采样。

(3)开关量输出:基本原则是保证输出高电平接近电源电压,低电平接近地电平。I/O 口的吸纳电流一般大于放出电流。对小功率元器件控制最好是采用低电平控制的方式。一般情况下,若负载要求小于10mA,则可用芯片引脚直接控制;电流在 10~100mA 时可用三极管控制,在 100mA~1A 时用 IC 控制;更大的电流则适合用继电器控制,同时建议使用光电隔离芯片。

4、A/D电路与D/A电路

(1)A/D电路:要清楚前端采样基本原理,对电阻型、电流型和电压型传感器采用不同的采集电路。如果采集的信号微弱,还要考虑如何进行信号放大。

(2)D/A电路:考虑 MCU 的引脚通过何种输出电路控制实际对象。

5、控制电路

对外控制电路要注意设计的冗余与反测,要有合适的信号隔离措施等。在评估设计的布板时,一定要在构件的输入输出端引出检测孔,以方便排查错误时测量。

6、考虑低功耗

低功耗设计并不仅仅是为了省电,更多的好处在于降低了电源模块及散热系统的成本。由于电流的减小也减少了电磁辐射和热噪声的干扰。随着设备温度的降低,器件寿命则相应延长,要做到低功耗一般需要注意以下几点:

(1)并不是所有的总线信号都要上拉。上下拉电阻也有功耗问题需要考虑。上下拉电阻拉一个单纯的输入信号,电流也就几十微安以下。但拉一个被驱动了的信号,其电流将达毫安级。所以需要考虑上下拉电阻对系统总功耗的影响。

(2)不用的I/O口不要悬空,如果悬空的话,受外界的一点点干扰就可能成为反复振荡的输入信号,而MOS器件的功耗基本取决于门电路的翻转次数。

(3)对一些外围小芯片的功耗也需要考虑。对于内部不太复杂的芯片功耗是很难确定的,它主要由引脚上的电流确定。例如有的芯片引脚在没有负载时,耗电大概不到1毫安,但负载增大以后,可能功耗很大。

7、考虑低成本

(1)正确选择电阻值与电容值。比如一个上拉电阻,可以使用4.5K-5.3K的电阻,你觉得就选个整数5K,事实上市场上不存在5K的阻值,最接近的是 4.99K(精度1%),其次是5.1K(精度5%),其成本分别比精度为20%的4.7K高4倍和2倍。20%精度的电阻阻值只有1、1.5、2.2、 3.3、4.7、6.8几个类别(含10的整数倍);类似地,20%精度的电容也只有以上几种值,如果选了其它的值就必须使用更高的精度,成本就翻了几倍,却不能带来任何好处。

(2)指示灯的选择。面板上的指示灯选什么颜色呢?有些人按颜色选,比如自己喜欢蓝色就选蓝色。但是其它红绿黄橙等颜色的不管大小(5mm以下)封装如何,都已成熟了几十年,价格一般都在5毛钱以下,而蓝色却是近三四年才发明的,技术成熟度和供货稳定度都较差,价格却要贵四五倍。(注:这一已经是几年前的看法了)

(3)不要什么都选最好的。在一个高速系统中并不是每一部分都工作在高速状态,而器件速度每提高一个等级,价格差不多要翻倍,另外还给信号完整性问题带来极大的负面影响。

围观 319

前后台系统 :

应用程序一般是一个无限的循环,可称为前后台系统或超循环系统。循环中调用相应的函数完成相应的操作,这部分可以看成后台行为。中断服务程序处理异步事件,这部分可以看成前台行为。后台也可以叫做任务级,前台也叫中断级。时间相关性很强的关键操作一定是靠中断服务程序来保证的。因为中断服务提供的信息一直要等到后台程序走到该处理这个信息这一步时才能得到进一步处理,所以这种系统在处理的及时性
上比实际可以做到的要差。这个指标称作任务级响应时间。

实时操作系统(RTOS):

实时操作系统是一段在嵌入式系统启动后首先执行的背景程序,用户的应用程序是运行于 RTOS 之上的各个任务,RTOS根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在 RTOS支持的系统中,每个任务均有一个优先级,RTOS根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。实时多任务操作系统,以分时方式运行多个任务,看上去好象是多个任务“同时”运行。只有优先服务方式的RTOS才是真正的实时操作系统,时间分片方式和协作方式的RTOS并不是真正的“实时”。

代码的临界区:

指处理时不可分割的代码,运行这些代码不允许被打断。一旦这部分代码开始执行,则不允许任何中断打入(这不是绝对的,如果中断不调用任何包含临界区的代码,也不访问任何临界区使用的共享资源,这个中断可能可以执行)。为确保临界区代码的执行,在进入临界区之前要关中断,而临界区代码执行完成以后要立即开中断。

非占先式内核:

非占先式内核要求每个任务自我放弃CPU 的所有权。非占先式调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。

占先式内核:

当系统响应时间很重要时,要使用占先式内核。因此绝大多数商业上销售的实时内核都是占先式内核。最高优先级的任务一旦就绪,总能得到CPU 的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪状态,当前任务的 CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了 CPU的控制权。如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。

围观 269

本文从技术和就业经验等角度,为即将进入嵌入式开发的工程师们详细讲述嵌入式的概念、嵌入式开发之间的异同以及应该如何做出选择。是一些经验之谈,希望对大家有所帮助。

一、工程师眼中的“嵌入式系统”

在工程师看来:着重理解“嵌入”的概念,主要从三个方面来理解:

1、从硬件上,将基于CPU 的外围器件,整合到CPU 芯片内部,比如早期基于X86体系结构下的计算机,CPU 只是有运算器和累加器的功能,一切芯片要靠外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控 制器芯片实现。目前这种串口控制器芯片早已集成到CPU 内部。还有PC 机有显卡,而多数嵌入式处理器都 带有LCD 控制器,但某种意义上就相当于显卡。比较高端的ARM 类Intel Xscale 架构下的IXP 网络处理器CPU 内部集成PCI 控制器(可配成支持4个PCI 从设备或配成自身为CPI 从设备);还集成3个NPE 网络处理器引擎,其中两个对应于两个MAC 地址, 可用于网关交换用,而另外一个NPE 网络处理器引擎支持DSL,只要外面再加个PHY 芯片即可实现DSL 上网功能。IXP 系列最高主频可以达到1.8G,支持2G 内存,1G×10或10G×1的以太 网口或Febre channel 的光通道。IXP 系列应该是目标基于ARM 体系结构下由Intel 进行整合后成Xscale 内核的最高的处理器了。

2、从软件上,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM 中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE 在内核定制时,会有相应选择,其中就是 wordpad,PDF,MediaPlay 等等选择,如果我们选择了,在CE 启动后,就可以在界面中找到这些东西,如果是以前PC 上的windows 操作系统,多半的东西都需要我们得新再装。

3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM 中就实现了一个真正的“嵌入”。 以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围 内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,因为毕竟嵌入式系统是计算机范畴下的一门综合性学科。

二、嵌入式系统的分层及对口专业要求

嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。

1、硬件层:是整个嵌入式系统的根本。如果现在单片机及接口这块很熟悉,并且能用C 和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD 的逻辑设计的,同时还要对操作系统内核及其调度有相当的熟悉。但硬件平台是基础,增值还要靠软件。

硬件层比较适合于电子、通信、自动化、机电一体、信息工程类专业的人来搞。需要掌握的专业基础知识有: 单片机原理及接口技术、微机原理及接口技术、C 语言等。

2、驱动层:这部分相对而言比较难。驱动工程师不仅要能看懂电路图,还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导致其它任务不能运行。若不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,这样可能连个初级的驱动工程师的水平都达不到,所写的驱动在应用调用时就如同windows 下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几遍,不是太容易成功的,但其工资在嵌入式系统四层中是最高的。 驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞。 当然除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通。

3、操作系统层:对于操作系统层而言目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP 操作系统是微软投入300人用两年时间才搞定的,总时工时是 600人/年;中科院软件所自己的女娲Hopen 操作系统估计也得花几百人/年才能搞定。因此这部分工作相对来讲没有太大意义。

4、应用层:相对来讲较为容易。如果会在windows 下进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Java方面的编程也是如此。嵌入式系统中涉及算法的由专业算法的人来处理,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面的嵌入式数据库、基于嵌入式系统的网络编程和基于某些应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面,又较为复杂,并且有度了。

三、目标与定位

先有目标,再去定位。

学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C 语言的板级编程。从软件上讲,就是要学习基于ARM 处理器的操作系统层面的驱动和移植。这些对于初学者来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于API 的应用层的编程,硬件的寄存器类的东西还是要能看懂的、基于板级的汇编和C 编程还是要会的。因此针对于嵌 入式系统的硬件层和驱动层的人来说,ARM 的接口电路设计、ARM 的C 语言和汇编语言编程及调试开发环境还是需要掌握的。

对于初学者必然要把握住方向,自己的目标是什么,自己要在哪一层面上走。然后再着手学习才比较好,与 ARM 相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。 如果想从嵌入式系统的应用层面的走的话,可能与ARM 及其它体系相去较远,要着重研究基嵌入式操作系统的 环境应用与相应开发工具链,比如WinCE 操作系统下的EVC 应用开发(与windows 下的VC 相类似),如果想再 有突破就往某些音视频类的协议上靠,比如VOIP 领域的基于SIP 或H.323协议的应用层开发,或是基于嵌入式 网络数据库的开发等等。

对于初学者来讲,要量力而行,不要认为驱动层工资高就把它当成方向了,要结合自身特点,嵌入式系统四个层 面上无论哪个层面上来讲都是有高人存在,当然高人也对应的高工资。我是做硬件层的,以前每月工资中个人所 得税要被扣上近3千大元。当然我一方面充当工程师的角色,一方面充当主管人物的角色,两个职位我一个人干, 但上班时间就那些。硬件这方面上可能与我PK 的人很少了,才让我拿到那么多的工资。

四、如何选择合适的开发系统

很多ARM 初学者都希望有一套自己能用的系统,但他们往往会产生一种错误认识,就是认为处理器版本越高越好,性能越高越好,就象很多人认为ARM9比ARM7好, 我想对于初学者在此方面以此入门还应该理智,开发系统的选择最终要看自己往嵌入式系统的哪个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计与板级测试。如果想从操作系统层面或应用层面上走,不管是驱动还是应用,当然处理器性能越高越好了,但这个东西自学,有十分大的困难,不是几个月或半年或是一年二年能搞定的事。

在某种意义上讲,ARM7与ARM9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就比如286 和386。对于用户来讲可能觉察不到什么,只能是感觉速度有些快而已。

ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU 的很少,而且比较好控 制。就比如S3C44B0来讲,可以很容易将Cache 关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件 程序控制或AXD 单步命令行指令都可以控制起来。基于51单片机的思想很容易搞懂,就当成个32位的单 片机,从而消除很多51工程师想转为嵌入式系统硬件ARM 开发工程师的困惑,从而不会被业界某些不是真正懂 嵌入式烂公司带到操作系统层面上去,让他们望而生畏,让业界更加缺少这方面的人才。

而嵌入式系统不管硬件设计还是软件驱动方面都是十分注重接口这部分的,选择平台还要考察一个处理器的外部资源,你接触外部资源越多,越熟悉他们,以后就业成功的机率就越高,这就是招聘时所说的有无“相关技能”,因为一个人不可能在短短几年内把所有的处理器都接触一遍,而招聘单位所用的处理器就可能是我们完 全没有见过的,就拿台湾数十家小公司(市价几千万)的公司生产的ARM 类处理器,也很好用,但这些东西通用性 太差,用这些处理器的公司就只能招有相关工作经验的人了,那什么是相关工作经验,在硬件上讲的是外围接口设计,在软件上讲是操作系统方面相关接口驱动及应用开发经验。我从业近十年, 2000年ARM 出现,我一开始做ARM7,然后直接跑到了Xscale(这个板本在ARM10-11之间),一做就是五年,招人面试都不下数百人,在这些方面还是深有体会的。

我个人认为三星的S3C44b0对初学者来说比较合适,为什么这么说? 因为接口资源比较丰富,技术成熟,资料较多,应该十分适合于初学者。有问题可能很容易找人帮且解决,因为大多数人都很熟悉,就如同51类的单片 机,有N多位专家级的人物可以给你帮忙,相关问题得以很快解答,所然业界认为这款ARM 都用得烂了,但对于初学者来,却是件好事。

总的来说,开发系统的选择,要看自己的未来从业目标方向,要看开发板接口资源,还要看业界的通用性。

五、成为高级嵌入式系统硬件工程师要具备的技能

对于硬件来讲有几个方向,就单纯信号来分为数字和模拟。模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化。 比如手机的Modem 射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不 太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15K 以上。

另一类就是数字部分了,在大方向上又可分为51/ARM 的单片机类,DSP 类,FPGA 类。国内FPGA 的工程 师大多是在IC 设计公司从事IP 核的前端验证,这部分不搞到门级,前途不太明朗,即使做个IC 前端验证工程 师,也要搞上几年才能胜任。DSP 硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。而ARM 单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大。而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互PK、判定水平高低的依据。而接口设计这块最关键的是看时序, 而不是简单的连接,比如PXA255处理器I2C 要求速度在100Kbps,如果把一个I2C 外围器件,最高还达不到100kbps 的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接LCD,但为什么这种LCD 就不能挂在ARM 的总线上,还有ARM7总线上可以外接Winband 的SD 卡控制器,但为什么这种控制器接不到ARM9或是Xscale 处理器上,这些都是问题。因此接口并不是一种简单的连接,要看时序,要看参数。 一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5V 变1.8V 的DC 芯片,直接更换成LDO,有时就会把CPU 烧上几个。前几天还有人希望我帮忙把他们以前基于PXA255平台的手持GPS 设备做下程序优化,我问了一下情况,地图是存在SD 卡中的,而SD 卡与PXA255的MMC 控制器间采用的SPI 接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序的问题。因此我提了几条建议,让他们更新试下再说。

因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计、PCB 绘制、逻辑设计这块。这是指的硬件设计工程师,从上面的硬件设计工程师中还可以分出ECAD 工程师,就是专业的画PCB 板的工程师,和EMC 设计工程师,帮人家解决EMC 的问题。硬件工程师再往上就是板级测试工程师,就是C 语言功底很好的硬件工程师,在电路板调试过程中能通过自已编写的测试程序对硬件功能进行验证。然后再交给基于操作系统级的驱动开发人员。 总之,硬件的内容很多很杂,硬件哪方面练成了都会成为一个高手,我时常会给人家做下方案评估,很多高级硬件工程师设计的东西,经常被我一句话否定。因此工程师做到我这种地步,也会得罪些人,但硬件的确会有很多不为人知的东西,让很多高级硬件工程师也摸不到头脑。

那么高级硬件工程师技术技能都要具备哪些?首先要掌握EDA 设计的辅助工具类如Protel OR CADPowper PCBMaplux2ISE、VDHL 语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力, 再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工程师了。

深入了解各种器件特性,选择最合适的处理器、外围器件、操作系统和软件库,尽可能地优化软件设计,最贴切地满足应用需求,以获得最好的系统性价比,是嵌入式系统设计开发的精髓。

硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。

不过最后提醒大家:追求技术不是人生的唯一目的,切不可把它当成喜悦的唯一源泉,平时身边有很多美好的事物都值得用心去珍惜。呵呵,我已经在担心自己的智力是否会在30岁到来之前枯竭了。好好珍惜短暂的大学生活,好好珍惜自己的青春,不要整天呆在实验室,左手键盘右手烙铁的。

文章来源:玩转单片机

围观 304

页面

订阅 RSS - 嵌入式