整理自网络,排版:付斌
对嵌入式系统工程师及嵌入式硬件工程师而言,年将是振奋人心的一年。随着物联网应用的普及,MCU市场将再次繁荣。因此,市场上对嵌入式系统工程师人才的需求也将出现新高。这些都是底层编程领域中即将出现的趋势。
01
先搞清楚什么是嵌入式
我们已经习惯了使用强大的计算能力来处理机器学习,那么嵌入式是这样的吗?我们先和机器学习比一比。AlexNet需要MFlops的运算能力(Flops=浮点运算)以及Mb的内存才能处理小小的一张x像素的图像。例如,GoogleNexusS上的ARMCortex-A8的处理能力为每秒66MFlops。因此,你必须等待大约11秒才能进行推断。这也太慢了!大学里我上了几门与机器学习相关的课程。我们做了很多有趣的作业。但是当时即便是4GBGTX也不足以训练所有模型。一般的机器学习工程师很少考虑计算资源。而且他们也很少关心内存的使用情况。为什么?因为这些硬件都很便宜,甚至是你的手机都拥有相当不错的CPU和大量内存。你已经很久没有过聚会拍照时发现自己手机上的存储不够的情况了吧?想象一下,你使用的是只有KB闪存的TrueTouch感应控制器。没错,只有KB。而且由于固件占用了一部分,因此你不能完全使用这点存储。算下来,你能使用的也就是大约KB。回头再看看你的上一个模型的大小。可能比这个大多了。有意思吧?我们来继续看。当听到“嵌入式设备”时你会想起什么?记住脑海中出现的第一印象。1.嵌入式设备可以是任何电动机械,甚至是微波炉和洗衣机没错,你答对了!如今,几乎所有的电气设备都是嵌入式的。这些设备内部可能拥有一个或多个控制器来负责每个功能:触摸感应、发动机状态监控等。2.Arduino和树莓派恭喜你,再次答对了!二者是DIY项目中最受欢迎和使用最广泛的工具包之一。它们也是嵌入式设备。3.JetsonNano及类似的产品再次回答正确。这是一种特殊的开发套件,简称迷你计算机,专门为运行机器学习模型而开发。它非常强大,而且非常酷。但似乎有些不对。我有很多朋友都在做一些很棒的硬件业余项目。通常他们会使用Arduino或STM32。我认识几个AI工程师对JetsonNano和类似设备超有兴趣。他们认为这些设备是嵌入式AI的未来。那么,接下来请考虑这样一个问题:“这些设备有多少用在了生产级别的产品中?”答案:微乎其微想一想你家中有多少电气设备,然后再想想汽车中包含的大量控制器,以及工作上用到的安保系统,等等。每个设备都有一个控制器。通常,这些控制器都是微型,且超级便宜。它们根本无法企及Jetson或树莓派的资源和功能。假设你有一个微控制器。它的主要任务是处理手指触摸屏幕。它拥有ARMCortex-M0处理器,KB内存(其中只有80–KG可用)。这是一个实时系统,因此你只需很少的时间来推断模型,例如微秒。你的目标是改善算法或替换算法。祝你好运,欢迎来到“嵌入式AI”的世界。重点:真正的嵌入式世界,由资源极其有限的1-2美元芯片组成。而生产级别的产品使用的就是这种芯片。02
年软硬件有什么值得学习的新技术
编程语言当我们谈及编写围绕硬件层运行的代码时,最常提起的就是C语言。25年前,当我们从汇编语言过渡到C语言时,整个过程非常缓慢,且需求很高。如果你想进入嵌入式编程领域,那么年C以及C++仍然是你应该重点学习的编程语言。如果你想尝试嵌入式编程,那么可以从下面几个方面着手: