嵌入式编程是指驱动我们身边众多计算机控制设备的计算机编程。嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
需要明确的是,所有微控制器编程都属于嵌入式编程,但并非所有嵌入式编程都是微控制器编程。稍后会再详细介绍这个问题。有时这些术语会互换使用,但本教程系列的重点始终放在微控制器上。
对于每台台式机、笔记本电脑或平板电脑,你可能拥有十几个或更多(也许更多)的微控制器在默默地执行嵌入式任务,而许多人甚至不知道它们包含一个运行程序的微型计算机。但实际上是这样,而这些程序必须编写才能让设备正常运行,这就是为什么世界需要嵌入式编程。
微控制器为无数设备和系统增加了智能,使这些设备和系统能够更好、更快、更安全、更高效、更便利地运行,在许多情况下,甚至允许构建其他方式无法实现的设备和系统。
什么是嵌入式系统?
嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
嵌入式系统是指使用一个或多个微型计算机(即小型到非常非常小的计算机),运行定制专用程序并连接到专用硬件,以执行一组专用功能。
这可以与通用计算机进行对比,如熟悉的桌面或笔记本电脑,它们不是设计为仅使用一个专用程序和一个专用的硬件运行。所说的嵌入式开发,通常都是指有嵌入式操作系统的那种,产品功能复杂了,单片机开发无法实现,需要用到嵌入式操作系统,也能体现出嵌入式操作系统的优势。嵌入式产品在航空、医疗、家电、消费电子、汽车电子、移动等众多领域都可以看到,应用领域极为广泛,所以嵌入式开发相当热门,并且具备非常好的发展前景!!
一些嵌入式系统的例子包括:
• 报警/安全系统
• 汽车巡航控制
• 暖气/空调恒温器
• 微波炉
• 防滑制动控制器
• 交通信号灯控制器
• 自动售货机
• 加油站油泵
• 手持数独游戏
• 灌溉系统控制器
• 唱歌的墙壁鱼(或这个礼物季节的等价物)
• 多旋翼飞行器
• 示波器
• 火星车
上述嵌入式应用程序都恨简单,因为这毕竟是一个初学者教程。
通过本教程系列的学习,您应该对大多数应用程序编程方式有一个很好的概念,以及它们需要什么类型的I/O、时间、中断和通信硬件及功能。
许多嵌入式系统使用相当传统的用户输入输出设备(键盘、显示器),但许多其他系统则不是如此。
此外,许多嵌入式系统直接与人类交互,但其他系统则没有(我们仍在等待火星车是否会直接与任何火星人交互)。
嵌入式编程和一般计算机编程有什么不同?
嵌入式编程和一般计算机编程是不一样的。
- 嵌入式编程必须与构成硬件的专用组件和自定义电路配合工作,和在完备操作系统之上编程不同,一般编程可忽略硬件细节,大多数嵌入式编程直接与硬件交互并对硬件进行操作。这不仅包括 CPU 的硬件,还包括系统中所有外围设备(包括芯片和芯片外的设备)。
因此,嵌入式程序员要编写正确与硬件连接并操作硬件的软件,就必须对硬件有很好的了解,对指定硬件的关键组件(微控制器、存储器设备、I/O 设备等),硬件设计和硬件布局(作为印刷电路板)等必须了解。嵌入式程序员还需要对多用表、示波器、逻辑分析仪等调试设备有很好的理解。
- 嵌入式编程另一个与一般计算机编程是不一样之处是:大多数(但不是全部)嵌入式系统都相当有限。用于嵌入式系统的微型计算机可能具有几千到几十万字节的程序存储器大小,而不是台式机中的千兆字节,而且数据(RAM)存储器通常比程序存储器更少。此外,CPU 通常会是更小的 8 位和 16 位设备,而不是桌面机器中找到的 32 位或更大设备(这些问题随着技术进步将很快解决)。较小的 CPU 字长意味着,在等效的程序运行在具有较大字长的 CPU 上的情况下,程序将需要更多的指令(因此需要更多的时钟周期)。
- 最后,较小的微控制器运行速度远低于 PC 的运行速度。典型的较小微控制器时钟速率在 1 到 200 MHz 之间,而不是 PC 的 GHz 级别速率。
嵌入式系统与通用型计算机系统的对比
- 嵌入式系统通常是面向特定应用的嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。
- 嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
- 嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。
- 嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。
- 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。
- 嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发!