BeagleBone Black赋予嵌入式Linux简洁的Arduino样式连接能力由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“8嵌入式linux学习心得”。
Raspberry Pi 自从2012年推出後,为电子产业带来重大贡献。原本的定位是教育用途的低成本电脑,但其吸引力迅速拓展到主流电子市场,成为专业工程师的原型开发与评估平台。除了用於教学运算外,Pi 也拥有广大的电子热衷族群与业余喜好者,这是许久未见的荣景。在 Pi 所引起的「回响」下,很容易认为以往都没有类似的产品。然而,Arduino 等板件其实早就存在,也拥有众多使用者,更有热门的网路编程资源社群能辅助开发。当然,这两种板件在基础层面上也有一些不同。Arduino 采用 8 位元 Atmel AVR 微控制器,并提供足够的 IO,能连接实际应用。此外,也具有超容易使用的整合式开发环境(IDE)。Arduino 提供理想的基础,不仅能学习透过类 C 程式语言针对嵌入式微控制器进行编程,亦可了解基本电子知识。相较之下,Raspberry 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 引脚连接器的标准覆盖区,可用於一系列名为「扩充罩(Cape)」的子板扩充模组。如同 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 元件。最值得注意的是,Black 除了 400 MHz 的 512 MB DDR3 记忆体外,还具有 2 GB 板载快闪记忆体。此板件具有 micro D 型 HDMI 连接器、乙太网路和 USB 连接埠,并由单一 5 VDC 电源供电。此板件最多仅消耗 250 mA,因此亦可透过 USB 供电。
在软体层面上,Black 预载一整套软体并且随时能开机。仅需连接电源、HDMI、乙太网路以及 USB 键盘/滑鼠,此板件就能启动 Angstrom Linux 发行版本,接着进入 Gnome 桌面。在开机期间,四个一组的使用者 LED 灯(USR0 至 3)会闪烁指示活动状态。可自行选择随附的三种浏览器:Chromium、Firefox 和 Epiphany,迅速浏览网际网路。初次运作 Raspberry Pi 时,无需新增 SD 快闪记忆卡,也不用担心要下载系统发行版本。对於多数开发人员和热衷者来说,Angstrom Linux 已经足够,但 Black 采用的 ARM v7 架构(用於 Cortex-A8 架构装置),亦可执行 Ubuntu 或 Android 系统。在开发板上采用 Linux 的另一项考量在於乙太网路介面可提供额外的连线能力。因此即可使用 FTP、SSH、Telnet 以及其他远端存取服务所带来的连线灵活性,并且能连线到 Black 自己的网路伺服器。
CircuitCo BeagleBone Black 方块图
图 2: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 引脚配置。
Black 具备这些工具并可使用丰富的 GPIO,因此成为 IT 教育与基础电子学习的理想平台。BeagleBone Black 透过两个双列排针座 P8 和 P9 提供总共 92 个可使用引脚。这些排针座提供远比 Arduino 或 Raspberry Pi 更多的 GPIO,亦可连接扩充罩。这些引脚能提供多种不同的功能,包括 IO 控制、感测器读取、继电器操作到 LED 驱动等。在众多第三方供应商支援下,这些扩充罩提供多种配置,包括简易的面包板区域、LCD 萤幕,以及能用来控制水中车辆专案的完善扩充罩。BeagleBone Black 制造商 CircuitCo 提供的 beagebonecapes.com 社群网站,含有经过测试且完全符合规范的相容扩充罩清单。技术上来说,只要 GPIO 使用上没有冲突,每个扩充罩上方可堆叠最多四个扩充罩。此外请注意,GPIO 具有多种设定和多工方法。不同的作业系统可能会以不同的模式操作 GPIO。Angstrom Linux 的预设多工模式为模式 7。Linux 针对特定引脚的讯号名称与板件所标示的引脚编号并不相同。
目前最简易的 GPIO 实验方式就是使用 Cloud9 IDE。Cloud9 会在开机时自动启动,并可透过 Black 自己的网路伺服器进行存取。Epiphany 浏览器会在启动时自动寻找 IDE,但任何浏览器皆可指定到 BeagleBone Black 的 IP 位址埠号 3000。使用方式与 Arduino 的 IDE 相似,差别在於无需将程式码上传到板件;程式码自动储存在档案系统内。Black 自己的网路伺服器提供便利的页面组合,能让使用者存取 Cloud9 IDE 以及一些简易的 Bonescript 程式码范例,以便与板件进行互动。
Cloud9 整合式开发环境
图 4:Cloud9 整合式开发环境。
如同多数嵌入式应用的传统 IDE,Cloud9 也具有工作区可进行程式码编辑、验证、侦错以及测试。写入程式码是一项涵盖变数与语法检查的互动流程,在输入时就会进行。侦错流程比 Arduino 更复杂,完整使用断点、观察变数以及单步骤执行。Cloud9 在 node.js JaveScript 中写入多种简易范例,并且纳入 Bonescript 函式库。「blinkd.js」程式码范例(参阅图 5)能针对使用者 LED 灯(USR3)进行控制。此范例可延伸到 GPIO 引脚的使用,将 LED 和上拉/限流电阻接至所需的 GPIO 引脚,并将 ledPin 的配置变更成相关 GPIO,例如 bone.P8_3。Cloud9 属於入门级 IDE,能快速简便地撰写简短程式码专案,然後执行并侦错。虽然开/关 LED 看似直觉的任务,但却是重要的首要步骤,有助於建立自信并熟悉板件,对首次尝试介接实际应用的软体开发人员而言更是如此。
「blinked.js」程式码范例
图 5:「blinked.js」程式码范例。
使用 node.js JavaScript 是编程 BeagleBone Black 的偏好方式。对於不熟悉编程或高阶程式语言的人而言,这是较简单的入门方法,也是快速建立原型的方式。但对於有编程经验且需要进行更复杂设计的人员来说,也支援 Python 和 C 语言。Bonescript 也在 node.js 中加入 Arduino 样式的数位与类比 IO 命令,而 Python 开发人员亦可使用称为 PyBBIO 的函式库。
GPIO 亦可在 Linux 作业系统中直接定址。可直接在板件上,或透过 SSH 远端连线即可完成。首先,须使用指定 GPIO 引脚识别正确的 Linux 讯号名称,接着要具备 Linux 命令列层面的操作知识。每个 GPIO 引脚在使用期间,会在 /sys/cla 主目录下具有以 Linux 讯号名称为名的目录名称。因此在使用一或多个扩充罩时,就可判别可能的讯号/GPIO 冲突。连接器 P8-引脚 16 会判别成 GPIO46(参阅图 6)。您可在画面截图中看见,gpio46 目录并不存在,因此讯号可供使用。驱动接至引脚的 LED 时,写入一个 1-to-Linux 值档案,即可用 0 将其开启或关闭。使用後,不要忘记「解除汇出」目录,以便清除引脚的使用。这些壳层命令亦可纳入到 Python 指令中。
范例命令可透过 SSH 控制 GPIO 引脚
图 6:范例命令透过 SSH 控制 GPIO 引脚。
无论您是想要透过说明完善且开放式原始码的平台加速新专案的资深嵌入式开发人员,或是想要找点乐趣的电子热衷者,BeagleBone Black 皆是奠定设计基础的绝佳选择。