时刻

嵌入式系统入门指南

嵌入式系统入门指南

计算机对我来说是非常有趣的。我在职业上和个人上与它们的互动决定了我生命的大部分时间。我对它们的一切都感兴趣,从硬件到软件,以及两者之间的任何东西。这也是我决定再次启动电子和嵌入式系统工作的原因之一。

嵌入式系统是一个计算机系统–计算机处理器、计算机内存和输入/输出外围设备的组合–在一个更大的机械或电气系统中具有专用功能。

这篇文章的目的是解释什么是嵌入式系统,为什么我对它们感兴趣,以及任何人都可以开始使用它们。我还将分享我发现的一些有帮助的资源。

除了我的电子工程背景和对嵌入式系统的好奇心,我还出于以下原因(重新)开始了嵌入式之旅。

  • 为我关心的其他相关领域建立基础知识,包括物联网、机器人和能源管理。
  • 学习嵌入式系统中的软件将有助于我作为软件开发人员的日常工作,因为我将掌握更多的语言,学习新的设计原则,新的调试方法,等等。这对我来说特别有意思,因为为微控制器编写低级别的代码比构建网络API和应用程序的宽容度低。错误的代价更大,因为它们可能会使你的硬件崩溃,而且如果你没有写出 “好 “的代码,也没有什么可以帮助你。
  • 为自己建造东西应该被证明是对我业余时间的一种刺激。养成发明东西的习惯也没什么坏处。

什么是真正的嵌入式系统?

嵌入式系统是单一用途的计算机。它们是为执行一项特定任务而建造的计算机。它们与我们日常使用的多用途计算机系统(如电话或个人电脑)有点不同。嵌入式系统也可以在较大的计算机或机械系统中找到,执行单一的功能。嵌入式系统的例子包括数字手表、恒温器或像Nest Thermostat这样的智能物联网设备。
嵌入式系统工程师能够自如地使用硬件和/或软件来创建有用的系统。

硬件

这些是嵌入式系统的物理组件,包括微控制器、传感器、执行器、机箱和其他你能看到的组件。

微控制器

系统的硬件中最重要的部分之一是微控制器。它作为大脑,是对嵌入式系统的功能进行编程的部分。根据系统的需要,微控制器有各种形式,并具有各种能力。

微控制器是一种紧凑的集成电路,旨在管理嵌入式系统中的特定操作。一个典型的微控制器包括一个处理器、存储器和输入输出(IO)外设,在一个芯片上。一个标准的微控制器有各种帮助其运作的部件,包括CPU、存储器(RAM和ROM)、ADC(模数转换器)和DAC(数模转换器)等等。你可以在这里了解更多关于微控制器的不同部分。

微控制器的基本结构
微控制器与其他电子设备如传感器和执行器相连,以读取数据,处理数据,有时还产生输出或动作。
微控制器的一个例子是ATmega328,它可以在流行的Arduino Uno开发板上找到。

ATmega328微控制器

开始学习微控制器的一个好方法是使用内置了微控制器的开发板。

开发板块

这些是印刷电路板(PCBs),其中有微控制器以及GPIO(通用输入和输出引脚)和其他组件,可以帮助你快速制作原型和建立各种复杂的嵌入式系统。它们是开始构建嵌入式系统和简单的DIY项目的一个好方法。
不同的公司提供多种类型的微控制器开发板,具有广泛的功能集。例如,可以包括具有WiFi、以太网或蓝牙功能的板子。有些还预先配置了其他有用的东西,如继电器或麦克风。
流行的微控制器板的例子包括Arduino和Tessel 2板。

电子技术

在构建嵌入式系统时,你将不可避免地要与其他硬件和电子产品互动,从传感器到LED和电机。这些也包括像电阻和电容这样的电子器件,它们有助于使系统中的其他部件按预期工作。
这些电子器件与编程的微控制器(通常在印刷电路板上)一起工作,构成一个完整而有用的嵌入式系统。

带有各种组件的Arduino Uno微控制器板

软件

这就是嵌入式系统的无形部分。它是嵌入式系统被告知要执行的一组指令。这个软件通常存储在微处理器或微控制器中。
例如,下面这段代码是用来告诉Arduino板连续闪烁一个LED。

int ledPin = 13; // LED connected to digital pin 13

void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}

void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}

上述代码的完整代码和教程可以在Arduino网站上找到

语言

根据平台的不同,嵌入式系统的软件可以用各种语言编写。由于构建嵌入式系统时面临的资源限制,在挑选工作语言时要考虑速度和适当的内存管理。该语言还应该有对硬件的低水平访问。幸运的是,很多语言在这方面做得非常好。流行的包括C、C++、Rust、Go和Ada。在现代,像Java、Python和JavaScript这样的高级语言也正在被用于嵌入式系统。
由于C和C++语言提供了对硬件的低级访问,因此它们仍然是构建嵌入式系统的最流行选择。

实用的资源

电子技术

软件

嵌入式系统

分享此文章