所以你想构建一个嵌入式Linux系统?

2020-10-16 21:00:19

在我发表了价值1美元的MCU文章后,几位读者建议我看看应用处理器--这是运行Linux等真正操作系统所必需的MMU芯片。在过去的几年里,巨大的变化见证了连接互联网的设备变得更有功能(希望也更安全),我发现自己把Linux放到了越来越多的地方。

在初学者工程师中,应用程序处理器恳求尊敬:一个小小的PCB错误,你价值1万美元的原型就会变成一个压纸机。有一个由工程专业人士组成的神秘联盟,他们满怀信心地将这些芯片投入到设计中,而不知情的人则对他们的覆盆子PI和价格过高的工业SOM畏缩不前。

本文的目标读者是熟悉微控制器但不熟悉微处理器或Linux的嵌入式工程师,因此我想整理一些内容,快速介绍您为什么想要运行嵌入式Linux,概述围绕应用程序处理器进行设计所涉及的内容,然后深入了解入门级嵌入式Linux系统应该检查的一些特定部分(以及应该避免的其他部分)。

就像我的微控制器文章一样,我挑选的部件范围从这十年的大部分时间里拉动产品的老马,到具有耐人寻味的能力的新鲜面孔IC,你可以保持袖子不动。

如果我对微控制器文章的口头禅是,你应该为这项工作挑选正确的部分,并且不要害怕学习新的软件生态系统,那么我对这篇文章的论点甚至更简单:一旦你在这些部分中的任何一个基本上引导到Linux,它们就变成了相同的开发环境。

这使得运行嵌入式Linux的芯片几乎成为一种商品化的产品:只要你的处理器勾选了正确的复选框,你的应用程序代码就不会知道它是在ST还是MicroChip部件上运行-即使其中一个是全新的双核Cortex-A7,另一个是旧的ARM9。您的I2C驱动程序、GPIO调用-甚至是基于V4L的图像处理代码-都将无缝工作。

至少,这是推销词。让一个角色开机是完全不同的考验-这就是我们要关注的。除了最后的一些较小的基准测试之外,一旦出现shell提示,我们将认为工作已经完成。

与我对微控制器的回顾不同的是,这一次我将重点放在硬件设计上:与我回顾的微控制器不同,这些芯片在PCB设计难度方面差异很大-我如果省略这一讨论将是错误的。为此,我为所审查的每个应用程序处理器从头设计了一个开发板。实际上,每个处理器都有许多开发板:总共大约有25种不同的设计。这让我可以尝试不同的DDR布局和电源管理策略,并在此过程中修复一些错误。

我故意从头开始设计这些线路板,而不是从别人的CAD文件开始。这帮助我发现每个CPU几乎没有什么“问题”,并且优化了成本和手工组装的设计。每一块电路板都是在一两天的时间内设计的,并使用了JLC的低成本4层PCB制造服务。

这些主板不会在功耗或EMC方面赢得任何奖项:为了简单起见,我经常通过将通常由电源供电(和排序!)的电源板组合在一起来作弊。分开的。此外,我将板载外围设备限制在引导所需的最低限度,因此这些板上没有音频编解码器、小I2C传感器或以太网PHY。

因此,我为这次复习搭建的板子类似于你高中历史课上的笔记,或者你为自己练习一段音乐以便以后学习的录音。因此,虽然我将发布电路板的图片和布局的屏幕截图来说明具体的观点,但这些并不是要用作参考设计或任何东西;整个评论的重点是让您找到一个您想要设计自己的小Linux电路板的地方。教人钓鱼,你知道吗?