嵌入式编程在使设备满足人们的需求方面具有悠久的历史。但是,它在很大程度上仍然被应用程序编程所掩盖。当应用程序程序员采用相对高级的面向对象的语言(如C ++或Java)或图形化应用程序开发环境(如MATLAB)时,嵌入式程序员依然在使用C语言编程。它们总是被应用程序程序员所淘汰。如今,即使是业余爱好者也可以使用简单的语言来开发应用程序并与世界分享,而嵌入式程序员则需要对硬件和固件有深刻的了解,以及如何编写可以在资源经常受限的环境中执行的程序。随着物联网(IoT)的出现,平衡最终可以改变。现在,许多新的恒温器,烤面包机,手表和灯泡都配备了处理器和连接功能,市场需要更多的嵌入式程序员来对这些设备进行编程,并需要更简单的工具来使这些编程器能够在不陷入低级硬件的情况下编写代码。
什么是嵌入式编程?
Techopedia对嵌入式编程的定义是“一种特定的编程类型,它支持创建面向消费者或面向企业的设备,这些设备不象全尺寸笔记本电脑和移动设备那样在传统操作系统上运行。”嵌入式编程的理念是驱动当今IT市场中数字家电和设备发展的一部分。
简单地说,嵌入式编程是为小型计算机设计和编写程序,这些计算机嵌入传统PC、笔记本电脑或智能手机以外的设备中。它使微控制器能够唤醒以前的哑设备,如恒温器、照明系统、停车设备等。
嵌入式编程和物联网
从工程的角度看,物联网描述了一个由微处理器控制的嵌入式设备的网络,该网络直接或间接连接到Web。因此,物联网的三个支柱是:
物联网很快将无处不在。因此,嵌入式设备很快也将无处不在。
简要介绍一下物联网改变行业的一些方式:
1)工业:工业机械和控制,温度监测和异常检测。
2)医疗保健:血压监测器,心跳监测器,健身追踪器,嵌入式药物输送。
3)航空航天和国防:飞行控制系统,驱动,空气和热管理,发动机功率监测和控制。
4)智能家居:家庭安全系统,摄像头,电视和厨房电器。
深入嵌入式系统
有人说,世界上每一个复杂的系统都可以简化为两个概念领域:软件和硬件。嵌入式系统或多或少地代表了这些领域的交叉点:硬件和软件。
探索嵌入式硬件
典型的嵌入式开发板分为五个模块:处理器,内存,输入设备,输出设备和总线控制器。
嵌入式系统的硬件组件
1)处理器
嵌入式处理器可以分为两类:普通微处理器使用单独的集成电路作为存储器和外设;微控制器使用片上外设,降低了功耗、体积和成本。其中一些例子包括:
2)内存
内存用于存储设备上正在使用的数据。嵌入式系统中使用的存储器类型的一些示例包括非易失性RAM(随机存取存储器),易失性RAM,DRAM(动态随机存取存储器)等。
3)输入设备
输入设备(例如传感器,开关,光电二极管,光耦合器等)从外界捕获数据,以进行处理或从设备中导出。
4)输出设备
输出设备,包括LCD(液晶显示器)或LED(发光二极管)显示器、七段式显示器、蜂鸣器和继电器,响应来自微控制器外部的输入事件。
5)总线控制器
总线控制器是一种通信设备,可在嵌入式系统内部的组件之间传输数据。使用最广泛的总线控制器是串行总线(I2C,SPI,SMBus等),RS232,RS485和通用串行总线(USB)。
探索嵌入式软件
嵌入式软件(有时称为固件)是为设备驱动程序、操作系统和应用程序以及错误处理和调试编写的。
嵌入式系统的软件组件
1)设备驱动
设备驱动程序是为特定硬件编写的一段嵌入式代码。
2)操作系统(OS)或MicroOS
嵌入式系统有一系列的操作系统,包括实时操作系统(RTOS)、移动嵌入式、单机和网络嵌入式系统。
现在,大多数嵌入式软件都是用两种语言编写的:C和C++。就语法而言,C和C++之间没有太大区别。但是,C++具有一些附加功能,例如增强的安全性和与实际应用程序的紧密性,而C被认为更可靠,并且通过与硬件直接交互具有更好的性能。
创建嵌入式产品时的主要注意事项
开始编写直接影响物理对象的软件的最佳方法是探索嵌入式平台,例如Arduino,Raspberry Pi或Particle。
要开发可行的产品,您应该采取以下步骤:
步骤1. 学习C或C++
这是许多人停止学习的地方,因为这些语言可能很难学习。但是,如果要编写嵌入式软件,则必须学习C/C++(可能最终是Rust)。
步骤2. 学习一些基本的电子产品
至少要了解电压,电流,功率,电阻和欧姆定律。
步骤3. 获取基本设备
嵌入式程序员与物理世界进行交互,因此,诸如烙铁,数字万用表(DMM)和硬件调试器/ JTAG适配器(例如ST-Link或OLMEX适配器)或逻辑分析仪之类的工具将有所帮助。
步骤4. 选择一个微控制器和工具链
要使程序运行,您需要一个微控制器才能真正运行它,一个编译器会编译该微控制器的代码,并使用其他工具将程序加载到您的硬件上。微控制器与工具链结合的一个例子是arm-gcc和openOCD工具链支持的STM32微控制器。
步骤5. 了解数据表(Datasheets)
在实际坐下来编写代码的第一行之前,您需要了解(最终用户)规范。
步骤6. 检查组件
分析并挑选制造产品所需的组件(软件和硬件)。
步骤7. 设计产品
设计始终是任何开发周期中最关键的阶段。嵌入式编程的特殊性是您必须分别开发硬件和软件部分,然后再将它们集成。
步骤8. 开发原型
原型是一个示例版本,旨在测试使用选定的硬件和软件工具根据规范开发的概念。
步骤9:测试应用程序
有了原型后,就可以运行测试用例来挖掘应用程序的潜力。
步骤10:部署应用程序
测试完应用程序之后,将在真实环境中检查结果,以实现概念验证(一种用于验证想法的技术)。
步骤11:支持和升级
如果需要,您应该准备提供支持并使用新功能升级应用程序。
现在您已准备好开始改变世界!