BeagleBone Black 能让嵌入式 Linux 拥有 Arduino 风格的简易连接功能

作者:European Editors

投稿人:DigiKey 欧洲编辑


Raspberry Pi 自发布以来已为电子行业做出了巨大贡献, 其初始定位是一台低成本教学用电脑,但被专业工程师用来进行原型开发和评估平台后,很快引起了主流电子市场的广泛关注。 除了用于计算机教学外,Pi 还吸引了一大批电子爱好者,这种情况已经好久没有出现了。 如果说由 Pi 引发这一“热潮”,那么这显然是一件所未有的事情。 然而象 Arduino 这样的板已出现很长时间,并且拥有巨大的用户群以及一个基于网络编程资源的强大社区提供开发帮助。 这两种板当然存在本质上的不同。 Arduino 采用一个 8 位 Atmel AVR 微控制器 ,除了极其简单易用的集成开发环境 (IDE) 外还提供丰富的 IO 用于连接实际应用。 Arduino 是一个理想的基础学习平台,不仅能通过使用象 C 语言这一类的语言学习嵌入式微控制器编程,还能学习电子学基础知识。 相比之下,Pi 采用基于 32 位 ARM® 的 SoC,更多的是注重在学校及其他更高级别的教育机构教授高级计算语言基础知识以及如 Linux 等操作系统。 现已有太多的嵌入式开发板支持 Linux,且支持能力在许多方面优于性能较弱的 8 位板。 此外,还支持在多个运行程序和任务间共享处理器。 BeagleBoard-XM便是一个基于 Linux 的例子,它是一块具有 Texas Instruments 支持的真正开源开发板。 不过,这是来自 Texas Instruments 的最新 Linux 开发板,正逐渐激发起人们极大的兴趣。 BeagleBone Black于 2013 年 4 月发布,被视作 Raspberry Pi 的强劲对手。 该板是一个理想的学习平台,不仅能用于学习 Linux 计算,还能通过连接实际应用并与之互动来学习电子学基础知识。 BeagleBone 格式于 2011 年末初次发布,不仅设法将 BeagleBoard-XM 的绝大多数功能集中在一个小型信用卡大小的封装内,而且还构建了两个具有标准基底面双排 46 引脚连接器,用于连接一系列称作“Capes”的子板扩展模块。 类似于配合 Arduino 使用的“Shield”,这些扩展模块可用于各式各样的插件板,以添加更多的高级 I/O。

CircuitCo BeagleBone Black

图 1:BeagleBone Black – 主要元件的布局

BeagleBone Black 采用 TI 的 Sitara™ AM3359 ARM Cortex™-A8 微处理器,运行速度为 1 GHz (2000 DMIPS),远超 Raspberry Pi 板上的 720 MHz 器件。 最值得注意的是,除了 400 MHz 的 512 MB DDR3 外 Black 还配备了 2 GB 板载闪存。 板上还有一个 D 型 HDMI 微型连接器、以太网和 USB 端口,采用 5 VDC 单电源。 电流消耗仅 250 mA,因此还可采用 USB 供电。

在软件方面,Black 预装了众多软件,随时可以启动。 仅需连接电源、HDMI、以太网和 USB 键盘/鼠标,该板即能引导 Angstrom Linux 发行版,为您呈现 Gnome 桌面。 4 个用户 LED (USR0 - 3) 在引导过程中会闪烁,用于指示活动状态。 从随附的 Chromium、Firefox 和 Epiphany 浏览器中选定一个后,您在数秒后就可体验网上冲浪。 该板与 Raspberry Pi 不同,在初次运行前不需要添加 SD 闪存卡,也不需要象杂耍似得下载 Linux 发行版。 对于大多数开发人员和爱好者来说,尽管 Angstrom Linux 适合他们,但基于 Cortex-A8 的设备采用了 ARM v7 架构,因此 Black 也可运行 Ubuntu 或者 Android 系统。 Linux 在开发板上的另一个用途是通过以太网接口实现的更多连接功能。 因此,除了能连接 Black 的专用网络服务器外,使用 FTP、SSH、Telnet 和其他远程访问服务还提高了连接灵活性。

CircuitCo BeagleBone Black 的方框图

图 2:CircuitCo BeagleBone Black 的方框图

Black 在开发工具方面也配备齐全。 板上已经安装了 Python 解析器和 C/C++ 编译器以及经过预配置的 Cloud9 IDE 本地副本,以便运行 Node.js。 另外还包括基于 Node.js 的 Bonescript 库,以提供大量类似 Arduino 的功能用于连接硬件。 熟悉 Arduino digitalWrite 功能的读者见到这一功能和 Bonescript 库中的其他类似功能,会有一见如故的感觉。 此外,beagleboard.org 社区资源还能为您提供多种服务,如有用的项目实例库、有帮助的论坛、软硬件说明文档。

CircuitCo BeagleBone Black GPIO 引脚布局

图 3:BeagleBone Black GPIO 的引脚布局。

凭借这些工具以及使用众多 GPIO 的能力,Black 毫无疑问成为了 IT 教学和电子学基础知识学习中理想平台。 BeagleBone Black 通过两个双排针座(P8、P9)提供了共计 92 个可访问引脚。 远超 Arduino 或者 Raspberry Pi 板上的 GPIO,这些针座还可构成连接 capes 子板扩展模块的接口。 这些引脚功能各异,可控制 I/O、读取传感器数据、操作继电器、驱动 LED 等。 cape 子板扩展模块可来自不同的第三方供应商,从简单的试验板试验区域、LCD 屏,到用于控制水下运载工具项目的综合型 cape 子板扩展模块,几乎能提供我们所需的一切。 BeagleBone Black 的制造商 CircuitCo 在其社区  beagebonecapes.com 网站上列出了通过测试、完全合规的兼容性 capes 子板扩展模块。 从技术上讲,只要 GPIO 在使用时不发生冲突,最多能上下堆叠 4 块 cape 子板扩展模块 应当指出的是,GPIO 还有多种安装或者复用方式。 不同的操作系统可以运行采用不同模式的 GPIO。 使用 Angstrom Linux 的默认复用模式为模式 7。 引脚上的具体 Linux 信号名称与板上标明的引脚编号不同。

使用 Cloud9 IDE 是迄今为止通过这种 GPIO 进行体验的最简单途径。 Cloud9 在引导时间自启动,并可通过 Black 的专用网络服务器对其访问。 Epiphany 浏览器在启动时似乎能自动发现 IDE,但任何浏览器都能被指向 BeagleBone Black IP 地址中的端口 3000。 虽然与 Arduino 的 IDE 用法相似,但不需要向该板上传代码,且代码会自动保存在文件系统中。 Black 的专用网络服务器会提供一组方便快捷的页面,也能让您访问 Cloud9 IDE 和一些能与该板进行交互操作的简单 Bonescript 代码示例。

Cloud9 的集成开发环境

图 4:Cloud9 的集成开发环境。

与大多数用于嵌入式应用的传统 IDE 一样,Cloud9 也有代码编辑、验证、调试和测试工作区。 代码写入是一个交互过程,并在输入时进行变量和语法检查。 调试过程远比 Arduino 复杂,能充分利用断点、变量观察和单步执行功能。 Cloud9 提供了大量用 node.js JavaScript 编写且合并了 Bonescript 库的简单示例。 例如用于切换某一个用户 LED (USR3) 的 “blinked.js”代码示例(见图 5)。 这项功能也可扩展至使用某一个 GPIO 引脚,具体做法是将一个 LED、一个上拉/限流电阻器与所需的 GPIO 引脚连接并改变相关 GPIO 的 ledPin 赋值,如 bone.P8_3。 Cloud9 作为入门级 IDE,为写入短代码项目以及随后的运行和调试提供了一条捷径。 虽然点亮/熄灭 LED 似乎是一个再简单不过的任务,但这是获得自信,逐渐熟悉这块板的重要的第一步,对于那些首次尝试连接现实世界的程序开发人员来讲尤其如此。

“blinked.js”编码示例

图 5:“blinked.js”代码示例。

使用 node.js JavaScript 语言进行 BeagleBone Black 编程看起来是一种首选方法。 对于那些不熟悉编程或者更高级语言的人来说,这无疑是一种更简单的说明,或者只是一种把快速原型产品整合在一起的方法。 对于那些编程经验丰富且需要更复杂设计的人员,Python 和 C 语言则有着强有力的支持。 同样,Bonescript 将 Arduino 风格的数字和模拟 IO 命令添加到 node.js 中,为 Python 开发人员提供了一种称作 PyBBIO 的库。

从 Linux 操作系统内部也可直接为 GPIO 寻址。 这个操作可直接在板上完成,或者在 SSH 上通过远程连接完成。 首先,需要采用能通过具体 GPIO 引脚识别的正确 Linux 信号名称;其次,需要有在 Linux 命令行级别下工作所需的适当知识。 每个 GPIO 引脚在使用时将会在 /sys/class 父子结构中拥有一个以 Linux 信号名称命名的目录。 当采用一个或多个 cape 子板扩展模块时,便可通过这种方法找出潜在的信号/GPIO 冲突。 连接器 P8 - 引脚 16 被识别为 GPIO46(见图 6) 在绿色截屏中,我们发现 gpio46 目录不存在,因此可用使用该信号。 当驱动一个与该引脚连接的 LED 时,将 1 - Linux 值文件便可将其点亮,或者用 0 值文件将其熄灭。 使用结束后,牢记“unexport”该目录,清除该引脚使用状态。 这些 shell 命令也可并入 Python 指令中。

通过 SSH 控制 GPIO 引脚的命令示例

图 6:通过 SSH 控制 GPIO 引脚的命令示例。

无论您是经验丰富的嵌入式开发人员希望通过资料齐全的开源平台加速新项目开发,还是电子爱好者希望享受其中的乐趣,BeagleBone Black 都将是您的理想选择,您的设计基石。
 

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此作者

European Editors

关于此出版商

DigiKey 欧洲编辑