本人学习电子信息工程快4年,但是接触到的硬件开发和系统开发比较少,更多接触到的是android软件应用开发和简单的单片机应用,嵌入式开发是多听多余了解。本人目的是想对嵌入式开发感兴趣的朋友做一个关于嵌入式开发的框架和应用有个了解。

1、神码是嵌入式系统?

嵌入式系统Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电器工程师协会(U.K. Institution of Electrical Engineer)的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。由于嵌入式系统通常进行大量生产,所以单个的成本节约,能够随着产量进行成百上千的放大。

嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成。与通用计算机能够运行用户选择的软件不同,嵌入式系统上的软件通常是暂时不变的;所以经常称为“固件”。

2.嵌入式应用实例

  • 自动柜员机(ATM)automatic teller machine
  • 航空电子,例如惯性导航系统、飞行控制硬件和软件以及其他飞机和导弹中的集成系统
  • 移动电话和电信交换机
  • 计算机网络设备,包括路由器、时间服务器和防火墙
  • 办公设备,包括打印机、复印机、传真机、多功能打印机(MFPs)
  • 磁盘驱动器(软盘驱动器和硬盘驱动器)
  • 汽车发动机控制器和防锁死刹车系统
  • 家庭自动化产品,如恒温器、冷气机、洒水装置和安全监视系统
  • 手持计算器
  • 家用电器,包括微波炉、洗衣机、电视机、DVD播放器和录制器
  • 医疗设备,如X光机、核磁共振成像仪
  • 测试设备,如数字存储示波器、逻辑分析仪、频谱分析仪
  • 多功能手表
  • 多媒体电器:因特网无线接收机、电视机顶盒、数字卫星接收器
  • 个人数码助理(PDA),也就是带有个人信息管理和其他应用程序的小型手持计算机
  • 带有其他能力移动电话,如带有蜂窝电话、个人数码助理(PDA)和Java的移动数字助理(MIDP)
  • 用于工业自动化和监测的可编程逻辑控制器(PLCs)
  • 固定游戏机和便携式游戏机
  • 可穿戴计算机

特性

  1. 嵌入式系统在广义上说就是计算机系统,它包括除了以通用为目的计算机之外的所有计算机。从便携式音乐播放器到航天飞机的实时控制子系统都能见到嵌入式系统的应用。与通用计算机系统可以满足多种任务不同,嵌入式系统只能完成某些特定目的的任务。但有些也有实时性能的制约因素必须得到满足的原因,如安全性和可用性。除此之外其他功能可能要求较低或没有要求,使系统的硬件得以简化,以降低成本。对于大批量生产的系统来说,降低成本通常是设计的首要考虑。嵌入式系统通常需要简化去除不需要的功能以降低成本,设计师通常选择刚刚满足所需功能的硬件使目标最小化低成本的实现。
  2. 嵌入式系统并非总是独立的设备。许多嵌入式系统是以一个部件存在于一个较大的设备,它为设备提供更多的功能,使设备能完成更广泛的任务。例如,吉布森吉他机器人采用了嵌入式系统来调弦,但总的来说吉布森吉他机器人设计的目的绝不是调弦而是演奏音乐。同样的,车载电脑作为汽车的一个子系统,为它提供了导航,控制,车况反馈等功能。
  3. 部分为嵌入式系统编写的程序被称为固件,他们存储在只读存储器或闪存芯片。他们运行在资源有限的计算机硬件:小内存,没有键盘,甚至没有屏幕。

用户界面

嵌入式系统用户界面包括了从没有用户界面,专注于单一任务到现在的类似于现代桌面操作系统的复杂图形用户界面的各类界面。

简单的嵌入式系统

简单的嵌入式设备往往由按钮,发光二极管(LEDs)和仅仅能显示小字符或数字的显示器,以及简单的菜单系统组成。

较为复杂的嵌入式系统

较为复杂的嵌入式系统拥有的完整的图形屏幕、触摸感应或屏幕边缘按钮在最大限度地使用空间的同时,提供了足够的灵活性:指点控制是很自然的非常理想的操控方式,这样的方式可以改变屏幕的意义。

手持系统通常都有一个屏幕和作为定位装置的控制按键。

CPU平台

在嵌入式系统设计中有许多不同的CPU架构,如ARM、MIPS、Coldfire/68k、PowerPC、X86、PIC、Intel 8051、Atmel AVR、Renesas H8、SH、V850、FR-V、M32R、DMCU等。

这与桌面计算机市场有所不同,至2003年为止在那个领域只有少数几家竞争的架构,其中主要是英特尔/AMDx86和用于Apple Macintosh的Apple/Motorola/IBM PowerPC。在桌面计算机领域,随着对于Java接受程度的增长,软件对于特定运行环境的依赖越来越少。

PC/104标准是小型、小批量嵌入式和ruggedized系统设计的基础。这些系统通常使用DOS、Linux、NetBSD或者如QNX、Inferno这样的实时嵌入式操作系统。

大批量生产的嵌入式系统的通常配置是片上系统(en:System On Chip),它是一个专用集成电路,CPU是外购的知识产权并且添加到集成电路设计中。一个类似的常用机制是使用可编程门阵列,所有的逻辑包括CPU部分都可以编程实现。许多时髦的FPGA都是为这个目的设计的。

工具

同典型的计算机程序员一样,嵌入式系统设计人员也使用编译器、连结器和调试器开发嵌入式系统软件。然而,他们也使用一些大多数程序员不熟悉的工具。

软件工具的来源有如下几种:

  • 专注于嵌入式系统市场的软件公司
  • 从GNU软件开发工具移植(参见交叉平台编译)
  • 有些情况下,如果嵌入式处理器与普通个人计算机处理器很近似的话也可以使用个人计算机开发工具

嵌入式系统设计人员也使用一些不为普通计算机程序员所熟悉的软件工具:

  • 一个常用工具是“电路内部仿真器”(ICE,in-circuit emulator)或者是最新设计中的嵌入式调试器。这个调试工具是开发嵌入式程序的基本技巧。它代替微处理器或者嵌入微处理器内部,提供了在系统中快速调用和调试试验代码的便捷工具。一个焊点通常就是一个插入系统的特殊电路,通常使用一台连结到这些焊点的个人计算机作为调试界面。
  • 连结器通常是各种各样(exotic)。对于大多数商业编程来说,连接器几乎总是最后才想起的(afterthough)部分,缺省设置也从来不变。与此相反,嵌入式连结器有完整、复杂的命令行语言是很普通的。经常有不同类型的内存,分别保存特殊的代码和数据。单独的数据结构能够放在特殊的地址,这样软件能够很方便地访问映射到内存的控制寄存器。嵌入式连结器经常有用于减小代码大小和运行时间的外部(exotic)优化工具。例如,他们可能移动子程序的位置以使用较小的调用和跳转指令。它们经常带有管理data overlays和band switch技术的特性,这些技术是在嵌入式软件经常使用的扩展廉价CPU的方法。
  • 另外一个常用的工具是一个在程序中添加代码和或者CRC的工具程序(经常是自己写的),使用这个工具嵌入式系统能够在执行程序之前先进行程序数据检查。
  • 为数字信号处理开发软件的嵌入式程序员经常使用MathCad或者Mathematica这样的数学工具进行数学仿真。
  • 一些较少使用的工具有将数据文件转换成代码的工具,使用这种工具就可以在程序中包含任意类型的数据。
  • 少数一些项目为了特殊的可靠性或者数字信号处理要求使用同步编程语言。

一些编程语言为嵌入式系统编程提供了一些特殊支持。

  • 对于C语言,ISO/IEC TR 18037:2005定义了

    • 指定的地址空间
    • 指定的存储类
    • 基本输入输出的硬件寻址

调试

调试通常使用内部电路仿真器或者其他一些能够在单片机微码(microcode)内部产生中断的调试器。微码中断让调试器能够在只有CPU工作的硬件中进行操作,基于CPU的调试器能够从CPU的角度来测试和调试计算机的电路。PDP-11开创了这种特性的先河。

开发人员能够仍然使用断点、单步执行以及高级语言进行调试,在许多的调试工具上都有这种能力。另外开发人员在调试实时事件顺序的时候需要记录、使用简单的记录工具。

首先遇到这种问题的个人电脑和大型机程序员经常在设计优先级和可行方法的时候感到困惑。指导、代码审查和非个人风格(egoless)的编程是值得推荐的。

随着嵌入式系统变得越来越复杂,更高层次的工具和操作系统逐渐移植到可行的设备上。例如,蜂窝电话、个人数字助理和其他的消费用计算机需要一些从个人或者这些电子设备制造商之外的公司购买或者提供的一些重要软件。在这些系统中,需要如Linux、OSGi或者Java这样的开放编程环境,这样第三方软件提供上才能够在大规模的市场上销售软件。

大多数这样的开发环境都有一个运行在个人电脑上的参考设计,这种软件的绝大部分都可以在传统的个人电脑上开发。然而,从开放环境移植到专用的电子设备和电子设备的驱动程序开发通常仍然是传统的嵌入式系统软件工程师的工作。在有些情况下,the engineer works for the integrated circuit manufacturer, but there is still such a person somewhere.

操作系统

嵌入式系统经常没有操作系统、专用的嵌入式操作系统(经常是实时操作系统)或者指定程序员移植到这些新系统。

启动

嵌入式系统带有启动代码,通常它禁止中断、设置电子设备参数、测试计算机(RAM、CPU和软件),然后开始应用程序运行。许多嵌入式系统从短暂的掉电状态恢复,经常重起而不进行最近的自检。在十分之一秒内重起是常见的现象。

许多设计人员发现LED在指示错误状态上非常有用,它们可以帮助进行故障处理。一个常用的机制是在复位的时候点亮电子设备所有的LED以表明供电和LED正常工作;然后在进行加电自检时由软件改变LED的状态;在此之后,软件用这些LED指示操作过程中的正常或者故障状态。这可以让技术人员、工程师和用户了解系统的状态。

  • http://zh.wikipedia.org/wiki/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F

嵌入式系统开发的架构和应用相关推荐

  1. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-08项目人力资源(Human Resource)管理...

    本节书摘来异步社区<嵌入式系统开发之道--菜鸟成长日志与项目经理的私房菜>一书中的第2章,第2.8节,作者:邱毅凌,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  2. 嵌入式系统开发怎样快速度入门

    http://wenda.tianya.cn/wenda/thread?tid=392a249d9d6856c5 实践当然是最锻炼人的方式,但是我想在校生很少有这样的机会,别说本科生,硕士生也未必有条 ...

  3. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-04项目范围(Scope)管理...

    本节书摘来异步社区<嵌入式系统开发之道--菜鸟成长日志与项目经理的私房菜>一书中的第2章,第2.4节,作者:邱毅凌,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  4. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——01-05 基本职能:老鸟也曾是菜鸟...

    本节书摘来自异步社区<嵌入式系统开发之道--菜鸟成长日志与项目经理的私房菜>一书中的第1章,第01-05节,作者 邱毅凌,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  5. 嵌入式系统开发笔记0_0:目录

    本系列文章将向大家介绍嵌入式系统开发的各方面知识. 本系列文章所介绍的知识和内容,除电路图设计外,其它均采用开源系统,所以你不会在这个系列文章中看到Keil.IAR等软件. 本系列文章涉及C.C++. ...

  6. 嵌入式系统开发笔记2:Linux的主流发行版本

    本系列文章将向大家介绍嵌入式系统开发的各方面知识. 本文将向大家介绍Linux的主流发行版本. 本文为转载文章,原文网址:Linux各个发行版本对比与简介 首先我们要能够清晰的区分Linux系统内核与 ...

  7. 嵌入式系统开发-学习路线

    嵌入式系统开发 课程链接 随着嵌入式设备的普及,嵌入式应用的需求量也随之增大,本课程将重点培养基于linux系统下的嵌入式应用开发,包括5个阶段,其中课程涵盖了linux系统下的多进程.多线程嵌入式开 ...

  8. LINUX嵌入式系统开发平台选择

    1 嵌入式系统与Linux 按照电气工程师协会的一个定义:嵌入式系统是用来控制或监视机器.装置或工厂等的大规模系统的设备.具体说来,它是电脑软件和硬件的综合体:是以应用为中心,以计算机技术为基础,软硬 ...

  9. 嵌入式系统开发设计---嵌入式系统开发设计

    嵌入式系统设计的主要任务是定义系统的功能.决定系统的架构,并将功能映射到系统实现架构上.这里,系统架构既包括软件系统架构也包括硬件系统架构.一种架构可以映射到各种不同的物理实现,每种实现表示不同的取舍 ...

最新文章

  1. 四级嵌入式系统开发工程师-计算题题库
  2. 带图片的,多列的DropDownList的实现
  3. 响应服务器535.5.7.0AUTH,javax.mail.AuthenticationFailedException:535 5.7.3无法发送邮件
  4. python+PyQT+Eric安装配置
  5. 精读linux源码,Linux基础入门的操作精读.doc
  6. 哈夫曼树(利用python实现)
  7. CPU的向量化、多核技术、多路技术、众核技术
  8. C#图解教程读书笔记(结构)
  9. 软件分享 kemulator lite
  10. centos6.9安装MySql可视化管理工具
  11. DigestUtils.md5Hex加密
  12. 微信-软件 报警信息
  13. 前端工程师必备:前端的模块化
  14. css案例1——一级菜单、二级菜单、三级菜单、四级菜单
  15. 蚂蚁金服 CTO 新加坡演讲:小蚂蚁是如何“爬”上区块链的?
  16. 国风雅韵之琴瑟(页面文章不知道放哪,于是放CSDN当跳转链接系列QWQ Sorry辣~)
  17. 数据结构与算法——左程云06
  18. redis之地理位置
  19. 2017-2042美国国防部无人系统路线图
  20. Ldap双主模式+keepalived实现ldap高可用

热门文章

  1. linux的ping命令含义,Linux ping命令详解
  2. 具名插槽 slot使用
  3. 地图坐标系之间的转换(百度地图、GCJ、WGS84)
  4. signal(SIGPIPE, SIG_IGN)
  5. redis crackit入侵事件总结
  6. php算法----队列
  7. 今天和大家分享期待已久的剪映专业版Windows
  8. 远程桌面时,如何登录没有设置密码的系统
  9. 基于QT5实现的心率变异与心率减速力分析软件
  10. 小码笔记17:IO流