谢丫丫

什么是嵌入式系统设计?

0
阅读(148) 评论(0)

您能否简明扼要地定义“嵌入式系统设计”?本文着眼于电气工程领域日益突出的专业化的基本特征来介绍嵌入式系统设计。

定义可能是一个难以捉摸的事情。有时我们理解一个单词但不能真正定义它。其他时候,在尝试定义它的过程中,我们意识到毕竟我们并不真正知道它意味着什么。我怀疑“嵌入式设计”一词会让我们许多人处于后一种情况。

在某种程度上,不确定性是合理的,因为没有官方组织能够建立和执行模糊技术术语的精确使用,例如“固件”(与“软件”相对),“可穿戴”(可以“穿戴” “相当大的东西”,以及“嵌入式设计”(这似乎意味着设计师在“嵌入”某些东西时布置PCB)。

“嵌入式系统设计”最简单的定义是它是嵌入式系统的设计。这是一个简洁明了的定义,但如果不讨论“嵌入式系统”的含义,这个定义也毫无用处。

 

什么是嵌入式系统?

以下嵌入式系统的定义基于我的经验和一些在线研究:嵌入式系统是一种电子设备

  • 有一个执行计算任务的中心组件,

  • 专为特定和有限的功能而设计

  • 被实现为电气或机械系统的组件。

也许这个定义中最令人讨厌的方面是嵌入式系统,电子设备和电气或机械系统这两个术语之间的冲突。

在我看来,在这样的讨论中,“系统”应该保留用于集成到功能单元中的物理上更大的机械和电气部件集合; 例子是MRI机器,加热系统和激光打印机。当我们谈论作为系统组件的单个电路板或电子模块时,应使用“设备” - 例如,MRI机器中的梯度定时和控制模块,加热系统中的可编程恒温器,或激光打印机中的数据处理模块。

然而,术语“嵌入式系统”是有用的,因为它提醒我们这些设备通常表现出系统的特征,即使它是纯粹的电子系统而且是相当小的系统。它是系统中的一个系统(嵌入式)。

 

我认为如果将互联网(或专用网络)视为更大的系统,可以将独立的物联网设备(例如来自Silicon Labs的这种设备)视为嵌入式系统。

 

对于本文的其余部分,如果您尝试启动或巩固嵌入式系统设计职业,我们将使用“嵌入式系统”的定义来探索应该列在优先级列表中的概念和技术。

 

什么是嵌入式系统?

根据我们的定义,嵌入式系统是执行计算任务的中心组件。在大多数情况下,这将是一个微控制器,但它也可能是微处理器,数字信号处理器或FPGA。

每个嵌入式设计人员都应该完全熟悉固件开发。(另一方面,FPGA技能通常是可选的。如果我不得不猜测,我会说不到5%的嵌入式系统使用FPGA作为核心组件。)

 

我为C-BISCUIT机器人设计的嵌入式系统的框图。

 

“固件开发”包含以下任务:

  • 编写代码。 ...通常在C中。在我看来,汇编语言的知识是必不可少的,因为汇编指令告诉你处理器是如何工作的。您不需要在汇编中编写代码,但您需要了解它。

  • 配置外围设备。许多(可能是大多数ICfans)嵌入式系统将结合使用外围设备,例如模数转换器,可编程计数器模块,I2C接口或USB控制器。嵌入式设计人员需要彻底了解这些硬件模块:它们如何工作,如何实现它们,以及如何在所需功能和配置寄存器中的位之间进行转换。

  • 测试代码。这并不意味着启动设备并观看它三分钟以确认它是否有效。您需要系统地测试所有功能,同时将设备暴露在各种操作条件下。

  • 精炼代码。也许你的固件第一次总能完美运行,但是我的固件没有。初始测试主要是确定使代码进入功能状态所需的更正和调整的一种方法。

  • 调试代码。“调试”是一个有点模糊的术语; 在这里,我专门用它来描述查找和纠正已经或多或少功能的代码中的细微错误的过程。调试是一项难以从书本和文章中学习的基本技能; 熟练掌握来自丰富的个人经验和对经验丰富的嵌入式设计师的观察。

  • 验证代码。此时,您可以尽一切可能确保代码正确执行所需的功能,并且在系统中的其他位置或周围环境中发生意外情况时不会着火。一个例子是“猴子测试” - 你给代码连续随机输入(好像猴子正在玩键盘)并确认设备没有故障。

 

我使用EFM8微控制器在我的一个项目中使用的 SPI状态机的流程图。精心设计的固件并不总是那么容易 - 但是匆匆写好,组织不良的代码可能会成为一个令人头痛的问题。

 

嵌入式系统有什么作用?

嵌入式设计要求我们努力建立,理解和满足要求。也许组织中的某些人想要更低的噪音或更快的采样率或更长的电池寿命或额外的通信接口。嵌入式设计师的反应是,“嗯,有需要很好。”(注意,这通常是你想到的,不是说,特别是如果“某人”是你的老板。)

嵌入式系统旨在用于特定的功能目标,工程师有责任确定真正必要的功能和特性,然后相应地设计设备。

 

您如何实施嵌入式系统设计?

嵌入式设备可以作为独立单元进行测试,甚至可以作为独立单元运行,但是嵌入式设计通常基本上与集成概念相关。嵌入式系统的设计人员需要熟悉配电,通信接口和互连技术,因为这些是我们用于将设备成功集成到更大系统中的工具。

重要的是要记住,在系统的其他组件上工作的人可能对您正在设计的嵌入式设备几乎一无所知。此外,他们可能不想知道任何超过严格必要的东西 - 他们有自己的项目需要担心。这是界面控制文档发挥作用的地方。嵌入式设计成功的一个关键方面是开发有组织的,直接的界面,然后仔细记录这些界面,以便您的设备可以有效地集成到更大的系统中。

 

结论

嵌入式设计是一个有趣的领域,因为它融合了各种各样的技能和任务,包括模拟设计,固件开发,PCB布局,界面设计和系统集成。如果您已经开始考虑使用嵌入式系统,那么请随时在评论中对其进行描述,以便我们能够更全面地了解属于此类别的设备类型。