简介
编辑嵌入式软件是为控制通常不被视为计算机的机器或设备而编写的计算机软件,通常被称为嵌入式系统。它通常是为其运行的特定硬件专门设计的,并有时间和内存限制。该术语有时可与固件互换使用。
一个精确而稳定的特点是,没有或不是所有的嵌入式软件的功能是通过人的界面启动/控制的,而是通过机器界面。
制造商在汽车、电话、调制解调器、机器人、电器、玩具、安全系统、心脏起搏器、电视和机顶盒以及数字手表等电子产品中构建嵌入式软件。
这样的软件可以非常简单,例如在一个有几千字节内存的8位微控制器上运行的照明控制,适当的处理复杂程度由假定的正确计算框架(基于随机算法的方法)决定。然而,在路由器、光网络组件、飞机、导弹和过程控制系统等应用中,嵌入式软件可能变得非常复杂。
操作系统
编辑与通常使用macOS、Windows或Linux等操作系统的标准计算机不同,嵌入式软件可能不使用操作系统。当它们使用操作系统时,它们可以从各种操作系统中选择,通常是实时操作系统。
嵌入式软件的代码通常用C或C++编写,但各种高级编程语言,如Java、Python和JavaScript,现在也普遍用于针对微控制器和嵌入式系统。汇编语言也经常被使用,特别是用于启动和中断处理。
与应用软件的区别
编辑大多数消费者都熟悉在计算机上提供功能的应用软件。然而,嵌入式软件通常不那么明显,但它的复杂性也不低。与应用软件不同,嵌入式软件有固定的硬件要求和能力,添加第三方硬件或软件受到严格的控制。
嵌入式软件在制造时需要包括所有需要的设备驱动程序,这些驱动程序是为各种硬件设备编写的。
这些设备驱动程序被称为BSP(板级支持包),形成一个软件层,包含特定硬件的驱动程序和其他例程,使特定的操作系统(传统上是实时操作系统,或RTOS)在特定的硬件环境(计算机或CPU卡)中运行,与RTOS本身集成。
该软件高度依赖于CPU和所选择的特定芯片。大多数嵌入式软件工程师至少有一些阅读原理图和阅读组件的数据表的知识,以确定寄存器和通信系统的用法。十进制、十六进制和二进制之间的转换,以及使用位的操作都很有用。
网络应用经常被用来管理硬件,尽管XML文件和其他输出可以被传递到计算机上显示。带有文件夹的文件系统经常被使用,然而SQL数据库经常不存在。
软件开发需要使用交叉编译器,它在计算机上运行,但为目标设备生成可执行代码。调试需要使用在线仿真器和调试硬件,如JTAG或SWD调试器。软件开发人员通常可以获得完整的内核(OS)源代码。
内存和RAM的大小可能差别很大。有些系统在16KB的闪存和4KB的RAM中运行,CPU运行频率为8MHz,其他的则与当代计算机相当。这些空间要求导致在C或嵌入式C++中完成的工作比在C++中完成的多。
像BASIC(而例如Parallax Propeller可以使用编译的BASIC)和Java(Java ME Embedded 8.3可用于例如ARM Cortex-M4、Cortex-M7微控制器和Raspberry Pi和Intel Galileo Gen.
处理器之间的通信协议
编辑以及处理器和其他组件之间的通信是必不可少的。除了直接的内存寻址外,硬件层面的常见协议包括I²C、SPI、串行端口、1-Wire、Ethernets和USB。
为嵌入式系统设计的通信协议可以从InterNiche Technologies和CMX Systems等公司获得封闭源代码。开源协议可从uIP、lwip和其他公司获得。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/189944/