此文章翻译自ThirtyThreeForty的Mastering Embedded Linux, Part 2: Hardware。
在上一章中,我们讨论了嵌入式Linux中的一些核心概念。我们的目标是让你能够自行构建一个低价的嵌入式Linux系统。
本章,我们将介绍一些可以用于学习的Linux设备。当然也会讨论一些可以用于自行构建Linux系统的元件。
我也会建议你购买一些开发用的设备(都很便宜),这些设备将贯穿我们整个教程,也将贯穿你整个嵌入式开发的过程。
最后,我也会提供一个购物清单,这些设备将在下一章中用到,是本教程的核心设备。我们将在这个设备上运行Linux。
你有以下选择:
- 购买成品设备:非常方便的选项
- 修改已有设备:很多设备都运行着Linux,例如路由器或网络摄像头。重新烧写这些设备一般来说难度都不大。
- 自己构建设备:可以在功能和外形上达到最好的平衡,也能锻炼你的硬件和软件开发技巧
对于我来说,Linux硬件很有趣,因其可以实现各种各样的功能。但有一点需要注意:你陷入的越深,你就越有可能需要在海外订购那些没有文档的硬件。你需要投入一定的时间去思考和学习这些硬件系统。
现在,让我们开始介绍各个选项吧。
购买成品设备——单板电脑
提到嵌入式Linux设备就不能不提这些单板电脑(SBC)。这些设备有很多种类,而且还在不断的增长。
树莓派无疑是目前最好的选择。它带有存储、内存、以及许多连接器。如果你是一个新手并且想跟着这个教程来做的话,我建议买一块树莓派。不过,树莓派相比起其他XX派来说,还是有些贵了。树莓派的性能对于我们这个教程也有些过剩。如果你想选择这个方案,就必须注意SD卡的问题。SD卡经常会出现问题,并不是那么稳定。
树莓派Zero(树莓派0)是入门级别的树莓派,其具有512MB的内存,仅售$5。树莓派ZeroW添加了Wifi功能,售价是$10。这两款型号的体积都很小,并且带有USB OTG功能,可以作为虚拟网卡或存储设备使用。
由于其具有以上的优点,在树莓派系列中,我们将使用树莓派ZeroW作为这个教程的示例硬件。
当然,其他公司的SBC也很受欢迎。OrangePi(香橙派)有一系列的SBC产品,它们有些有着树莓派4都没有的功能——例如4G LTE、PCIe、mSATA接口等。它们中的大多数也具有内置eMMC存储,相较于SD卡来说更加稳定。高端的OrangePi的价格和树莓派相当,但是它们也有低至$10的设备!
最后,Hackerboards上面有一个SBC的数据库,你可以去翻翻看看有没有想要的硬件。如果你想知道有哪些新硬件发布了,可以到 Linux Gizmos 或是 CNXSoftware 网站上看看,这两个网站会在新产品发布的时候提供一些新闻。
修改已有设备
很多消费电子——特别是路由器和网络摄像头——是运行着Linux的。OpenWRT项目就是为这些设备提供支持。但这些设备通常难以修改——它们通常体积不小、价格也不便宜,最重要的是缺少外部接口。很多设备就只有一个以太网接口,并且内部甚至没有一个方便的调试接口供你烧写。
这些设备通常都有一个共同的结构。这不是因为工程师懒得修改,而是因为这种结构工作稳定,额外硬件需求也较少。这个结构通常如下:
- 鲜为人知的CPU,通常是MIPS或ARM架构
- 较小的NAND或NOR Flash,存储着 Bootloader、内核和跟文件系统
- 一两个很“酷”的外设,例如Wi-Fi、某个传感器或者一个相机
- 在Linux的基础上运行着自定义的软件
这是我的一个 Reolink 网络摄像头。它运行着Linux,有PoE功能,带有一个4K摄像头。让我们把它拆开看看。
这个摄像头有多个PCB板。摄像头是在一个额外的PCB板上,使用排线与主PCB链接。这种结构是非常标准的结构。
让我们来看看主PCB的正面。这整个PCB要比我们之前的名片项目要小。你可以看到这个主Soc:联咏 NT9851x。这是一款MIPS架构的CPU,由中国联咏生产,然而你不可能在零售市场上买到这个芯片。你可以看到这里还预留了一个SD卡槽位。我的摄像头是防水型号,所以没有支持这个功能。但我可以焊接上SD卡座,CPU应该可以正常的认到这个SD卡。这项功能可以让我在系统运行的时候动态的加载更多的工具。
这个是PCB的背面。你可以很容易的看到这里有个NOR闪存。我们可以在修改的时候很方便的将其焊下并备份其中的固件。备份固件是修改前的第一项工作,这可以防止我们将这个设备刷砖。
这里还有一些没有焊接的调试接口。硬件逆向工程的第一步就是查找看看是否有UART接口可以与命令行交互。我将会使用示波器查看这些接口的波形以查找调试接口。
返回来看我们之前提到的结构:
- 鲜为人知的CPU:联咏
- 一个小型的NOR闪存
- 酷外设:摄像头
- 运行在Linux上的自定义程序
(剧透:这个摄像头有时候很恼人,所以我之后打算做更深入的逆向工程)
自行构建设备
如果你只是想了解怎么从0开始编译Linux,那么买个树莓派并跳过这一节就好了。但如果你想要自己构建能够运行Linux的硬件,那这一章将会帮助到你。
下面的所有选择都是基于“便宜”这一核心理念的。一般来说,每个选项应该都不会超过$20。我们当然有很多昂贵的选择,但这些设备偏离了这一系列文章的主旨。
核心板
核心板(System on a module, SoM)将所有复杂的硬件部分打包到一个模块中,你可以很方便的在你的项目中使用它。你依然需要画一块底板PCB,并将核心板焊接上去。但相对于其他选项来说,这已经足够方便了。
我将这个选项从单板电脑上分开的原因是,这类设备并没有提供任何可以使用的外部接口。并且这类设备通常非常小,设计上就是为了嵌入到其他设备中的。核心板为爱好者们提供了一个选项——不需要很多的钱,也不需要布很复杂的线,就可以自己构建一个硬件。这些核心板通常会低于$20。
我个人比较喜欢的是 Onion Omega2S。这是一块基于MT7688(MIPS)CPU的核心板,内置了Wifi功能,拥有64M内存和16M储存。这款核心板甚至可以在Mouser上买到(译者:虽然对于中国大陆玩家来说并没有什么用)。
核心板的选项很多,你可以随意谷歌或者淘宝来搜索它们。核心板对于某些公司而言也是非常受欢迎的,因为模块可以走量销售。对于我来说,我通常都会使用核心板构建产品。在做产品原型的时候,购买核心板要比购买少量单个元件便宜的多。
从处理器构建
如果你正在构建一些尺寸有限制的设备,或者纯粹就是想挑战自己,那么你就没有办法使用核心板了。我在这可以提供一些器件上的建议。
下面的这些器件被推荐的原因上因为它们可以在没有专业工厂设备的情况下焊接——例如QFN或者QFP封装。下面的器件不需要外部的RAM以及很多外围器件。因为上面的原因,人们通常称它们为“系统级封装 (System in Package, SiP)”。
- 新塘 NUC980 系列:新塘有着一整个ARM9处理器产品线。虽然ARM9相对于现代CPU来说已经有有些过时了,但是这一系列的产品有着极为丰富的外设和文档。依据产品的内存大小不同,这一系列的CPU的引脚数目也有不同——从QFP64到QFP216都有。他们还提供了名为Numaker Tomato的芯片开发板。
- 全志 V3s:全智是一家中国半导体公司,生产中低端芯片。这些芯片通常用于平板电脑或者行车记录仪上。V3s是一个非常好用的芯片,拥有内置的64MB RAM,以QFP形式封装。当然现在这个产品似乎已经停产了,但对于爱好者来说并不是问题。这个芯片现在依然可以在淘宝等平台随意买到。但需要注意的是,全智对开源社区并不是非常友好。它们的许多外设的开源驱动都是通过逆向工程得来的。但如果你想要一个又好又便宜的设备,这点困难是可以忽略的。
- 全志 F1C100s:另一个全智旗下的芯片,价格低到难以置信。它有一个ARM9核,带有32MB的RAM,使用QFN封装。这块芯片有很多外设,甚至显示驱动,虽然这些驱动现在都已经是SoC的标配了。这块芯片的Linux支持还有限,但对于我的名片项目来说已经足够了。在淘宝上,这块芯片售价甚至低于10元,这种价格还要什么自行车。
- 凌阳 SP7021: 似乎是一款近期出的芯片(2019年12月)。它是香蕉派BPI-F2S的CPU。这个芯片似乎有128M或512M的内存,4个ARM核,一大堆外设,QFP封装。但其价格在$20左右,有些贵,但相对性能和外设来说是值得的。我可能在之后的工程中使用这个芯片。
- 君正 X1830: 它是一个MIPS核心的芯片,带有128M的内置RAM。它是BGA封装的,球距是0.65mm,对于手工焊接来说可能有些困难。似乎支持Linux,如果你用过这款芯片,请告诉我详细信息。
在之后的文章中,我会详细说明如何自行构建这样的硬件。
建议的工具
要使用UART控制台,你就必须要有相应的工具。我个人还推荐购买SPI Flash的编程器,这样可以烧写你的SPI Flash。
FTDI 模块
FT2232H模块是一个不错的选择,它既可以用作 USB 转 UART,也可以用来烧写Flash。FT2232有两个通道,一个可以用来做串口通信,而另一个则可以搭配以下软件实现对应的功能:
- flashrom: 用于烧写 SPI Flash
- OpenOCD:用于JTAG调试
- Sigrok:用作低速逻辑分析仪
- aehparta/ftddi-bitbang: 可以使用命令行单独控制每个IO口
因为有这么多功能,这个模块可以称为我们嵌入式设备开发中的“瑞士军刀”了。
SOP8 测试夹
如果你使用的是树莓派则可以跳过这一工具,因为树莓派不需要SPI FLASH。
这个工具可以在不取下SPI Flash的情况下直接对其进行烧写。
其他工具
下面这些东西虽然很小很不起眼,但是一旦你要用的时候没有就很恼人。
- 2.54mm的排针和杜邦线
- 电烙铁(还有焊锡)
- USB线
- 一些小容量的SD卡
下一章……
我们在下一章中会使用Buildroot编译我们的第一个镜像。Buildroot对于树莓派来说非常友好,所以我们选择树莓派作为示例硬件。下一章提到的Buildroot的基础知识将在后面我们聊高级的软件和硬件话题时用到。
下一章中的所有操作都是在Linux系统上完成的。如果你还没有安装Linux系统的话,可以到虚拟机里面装一个。虚拟机中的Linux系统虽然可以运行,但可能会出现某些警告。
所需硬件
如果你只是想体验软件的话,可以不买任何硬件。但如果你想要接着在硬件上运行的话,我建议购买以下硬件:
- 树莓派Zero W,切记买带有排针的,不然没法连接到UART接口
- MicroSD卡;并且记得买个读卡器
- FT2232H模块;虽然有很多款式,但随便买一个就可以了。我个人喜欢紫色的那款,上面写着CJMCU。
- 杜邦线:用于连接UART接口
你可能已经有一些类似的设备了,那么就不必再去购买它们了。如果你拥有树莓派Zero(不带W),就不用专门去买个W版本。
当你准备好了,就可以开始第三章了。
0 条评论