背景

什么是微控制器?

微控制器是一个芯片上的系统。尽管您的笔记本电脑由几个独立的组件组成:处理器,RAM棒,硬盘驱动器,以太网端口等; 然而微控制器将所有这些组件内置在单个“芯片”或封装中。这使得构建具有最少部件数的系统成为可能。

你可以用微控制器做什么?

许多事!微控制器是被称为嵌入式系统的系统的核心部分。这些系统无处不在,但您通常不会注意到它们。这些系统控制你的汽车的刹车系统,帮你洗衣服,帮你打印文件,帮你保暖,帮你保持凉爽,优化你的汽车油耗等。

这些系统的主要特点是即使它们像洗衣机那样暴露用户界面,它们也可以在没有用户干预的情况下运行; 他们的大部分操作都是靠自己完成的。

这些系统的另一个共同特征是它们控制一个过程。为此,这些系统通常具有一个或多个传感器和一个或多个致动器。例如,HVAC系统具有分布在某些区域的多个传感器,温度计和湿度传感器,以及连接到管道的多个致动器,加热元件和风扇。

我什么时候应该使用微控制器?

我提到的所有这些应用程序,您可以使用运行Linux的计算机Raspberry Pi实现。为什么我要讲解没有操作系统的微控制器呢?听起来很难开发一个程序。

主要原因是成本。微控制器比通用计算机便宜得多。不仅微控制器更便宜; 它还需要更少的外部电气元件来运行。这使得印刷电路板(PCB)的设计和制造更小,更便宜。

另一个重要原因是功耗。微控制器比完整的处理器消耗的功率低几个数量级。如果您的应用程序将使用电池运行,这将产生巨大的差异。

最后但并非最不重要:(硬)实时约束。某些过程要求其控制器在某个时间间隔内响应某些事件(例如,由阵风击中的四轴飞行器/无人机)。如果没有达到这个最后期限,这个过程可能会以灾难性的失败告终(例如无人机坠毁到地面)。运行通用OS的通用计算机具有在后台运行的许多服务。这使得很难保证在严格的时间限制内执行程序。

我应该什么时候不使用微控制器?

涉及繁重计算的地方。为了降低功耗,微控制器的计算资源非常有限。例如,某些微控制器甚至没有浮点运算的硬件支持。在这些设备上,执行简单的单精度数字添加可能需要数百个CPU周期。

为什么要使用Rust而不是C?

希望我不需要在这里说服你,因为你可能熟悉Rust和C之间的语言差异。我想提出的一点是包管理。C缺乏官方的,广泛接受的包管理解决方案,而Rust则有Cargo。这使得开发 变得更加容易。而且,IMO,简单的包管理鼓励代码重用,因为库可以很容易地集成到应用程序中,这也是图书馆获得更多“战斗测试”的好事。

我为什么不使用Rust?

或者为什么我更喜欢C over Rust?

C生态系统更加成熟。已经存在几个问题的现成解决方案。如果您需要控制对时间敏感的过程,您可以从中获取现有的商业实时操作系统(RTOS)并解决您的问题。Rust中没有商业级的生产级RTOS,因此您必须自己创建一个或尝试开发中的一个。