背景
什么是微控制器?
微控制器是单片机上的系统鉴于您的计算机由几个离散组件组成:处理器、RAM、存储、以太网端口等;微控制器将所有这些类型的组件都内置到单个"芯片"或封装中。 这使得构建具有更少部件的系统成为可能。
使用微控制器可以做什么?
许多事!微控制器是所谓的"嵌入式系统".的核心部分。嵌入式系统无处不在,但您通常不会注意到它们。他们控制着洗衣服、打印文件和做饭的机器。 嵌入式系统使您生活和工作的建筑物保持在舒适的温度下,并控制使您行驶的车辆停停走走的组件。
大多数嵌入式系统无需用户干预即可运行。即使他们像洗衣机一样暴露用户界面;他们的大部分操作都是自己完成的。
嵌入式系统通常用于控制 物理过程。为了使这成为可能,他们有一个或多个设备来告诉他们世界的状态("传感器"), 以及一个或多个允许他们改变事物的设备 ("执行器")。例如,建筑气候控制系统可能具有:
- 测量不同位置温度和湿度的传感器。
- 控制风扇速度的执行器。
- 导致热量从建筑物中添加或移除的执行器。
我什么时候应该使用微控制器?
上面列出的许多嵌入式系统都可以使用运行Linux的计算机 (例如"Raspberry Pi")来实现。为什么要改用微控制器?听起来开发程序可能更难。
一些原因可能包括:
成本。 微控制器比通用计算机便宜得多。微控制器不仅更便宜;它还需要更少的外部电气元件来操作。这使得印刷电路板 (PCB) 更小,设计和制造成本更低。
能量消耗。 大多数微控制器消耗的功率只是完整处理器的一小部分。对于依靠电池运行的应用程序,这会产生巨大的差异。
响应能力。 为了实现它们的目的,一些嵌入式系统必须始终在有限的时间间隔内做出反应(例如汽车的"防抱死"制动系统)。 如果系统错过了这种类型的最后期限, 则可能会发生灾难性故障。这样的最后期限称为"硬件实时"要求。受这种期限约束的嵌入式系统称为"硬件实时系统"。通用计算机和操作系统通常具有许多共享计算机处理资源的软件组件。 这使得在紧迫的时间限制内保证程序的执行变得更加困难。
可靠性。 在具有较少组件(硬件和软件)的系统中,出错的可能性较小!
什么时候不应该使用微控制器?
涉及繁重计算的地方。为了保持低功耗,微控制器可用的计算资源非常有限。例如,一些微控制器甚至没有对浮点运算的硬件支持。 在这些设备上,执行单精度数字的简单加法可能需要数百个 CPU 周期。
为什么使用Rust而不是C?
希望我不需要在这里说服您,因为您可能熟悉Rust和C之间的语言差异。我确实想提出一点是包管理。C缺乏官方的、被广泛接受的包管理解决方案,而Rust有Cargo。 这使得开发更加容易。而且,IMO,简单的包管理鼓励代码重用,因为库可以很容易地集成到应用程序中,这也是一件好事,因为库得到了更多的"战斗测试"。
为什么我不应该使用Rust?
或者为什么我应该更喜欢C而不是Rust?
C生态系统更加成熟。针对几个问题的现成解决方案已经存在。如果您需要控制对时间敏感的过程,您可以使用现有的商业实时操作系统 (RTOS) 之一来解决您的问题。 Rust中还没有商业的生产级RTOS,因此您必须自己创建一个或尝试其中一个正在开发中的RTOS。您可以在Awesome Embedded Rust存储库中找到这些列表。