Intel® Edison 板开发指南

Intel® Edison 是一款为物联网(IoT)应用设计的微型计算平台,它集成了 Intel® Atom™ 处理器和专为微控制器(MCU)设计的硬件。本文将指导如何使用 Intel® Edison 开发板和 MCU 软件开发工具包(SDK)来创建、构建和调试应用程序。

MCU SDK 简介

MCU SDK 是一个基于 Eclipse 的软件开发工具包,支持 Windows、Mac OS X 和 Linux 操作系统。它为 MCU 提供了脚本、工具和文档,以便开发者能够设置环境变量、下载程序二进制文件、监控 MCU 设备跟踪等。MCU SDK 与用于编程 Intel Atom 处理器的 Eclipse SDK 是分开的。

MCU 包括一个主机 CPU 和 MCU 本身。MCU 提供了简单的实时外设控制功能,例如 GPIO、UART 和 I2C 接口。对于Intel Edison设备,主机 CPU 是运行 Linux 的 Intel Atom 处理器,而 MCU 是运行 Viper*(一种 Wind River 实时操作系统)的 Minute Intel® 架构 CPU,它提供了基本的操作系统功能支持,包括线程调度、内存管理、中断调度等。

MCU 应用程序是在 Viper 内核之上运行的应用程序,独立控制连接到 MCU 的外设。例如,它可以管理 GPIO 端口、控制和收集传感器数据,以及与主机 Intel Atom 处理器通信。MCU 还可以通过让 Intel Atom 处理器处于睡眠状态并在需要时唤醒处理器来节省电力。

MCU 驱动程序提供了 IPC 协议支持,并允许将 MCU 应用程序下载到设备。

MCU 子系统

MCU 子系统是一个低功耗的 Minute Intel 架构(IA)486 基础 CPU 系统,具有 Intel® Pentium® 架构兼容性,I/O(IPC、I2C、GPIO、HSU、DMA)和 SRAM。MCU 子系统的特点包括:

  • Minute Intel 架构基于 486,并增加了 Pentium IA ISA 兼容性。
  • 在完全激活的 D0 设备电源状态下,CPU 频率为 100 MHz;在 S0ix “active idle” 睡眠状态下,CPU 频率降低到 38.4 MHz。
  • SRAM:192 KB SRAM 用于代码和数据。
  • IPC:MCU 提供了一个 IPC 机制,允许子系统控制以及 MCU 和 Intel 架构核心之间的基于线程的通信。
  • I2C:系统控制器单元(SCU)群集中的 I2C8 和 I2C9 被分配给 MCU 使用。
  • UART:MCU 可以访问 UART1 和 UART2,这些可能被用作 Linux 内核控制台。
  • GPIO:MCU 可以访问所有 GPIO 端口。
  • PWM:MCU 与主机 Intel 架构共享所有 PWM。
  • MCU 提供了微秒级(1 µs)高精度延迟 API。
  • MCU 提供了具有不同日志级别的跟踪功能,用于调试目的。

MCU SDK 使用

MCU SDK 是一个基于 Eclipse 的 SDK,允许用户在包括 Windows、Mac OS X 和 Linux 在内的多个操作系统上创建、构建、下载和调试 MCU 应用程序。

MCU SDK 包括 Java 运行时环境(JRE)、Cygwin(在 Windows 上运行 Linux 脚本)、工具链(用于 Intel® Edison Linux OS 的 gcc 交叉编译工具链)、启动器(MCU SDK 启动器用户界面)以及用于设置环境变量、下载二进制文件、从设备获取跟踪等的脚本和工具。

Intel Edison板上的 MCU 应用程序是在 Wind River 提供的实时操作系统 Viper 上运行的用户应用程序。MCU 应用程序的二进制文件存储在 Linux RootFS 上,并在 Linux 内核启动期间由 MCU 驱动程序下载。MCU 应用程序可以独立控制 GPIO 和 UART,收集和预处理传感器数据,并与主机 CPU(Intel Edison 板上的 Intel Atom 处理器)通信,该处理器可以在 MCU 仍在运行时进入低功耗状态。Intel 提供了 MCU SDK 和一组 API 来帮助开发 MCU 应用程序。

为用户空间 Linux 应用程序与 MCU 侧通信定义并公开了 TTY 通道和几个 sysfs 节点。

  • TTY 接口:
    • /dev/ttymcu0:主机和 MCU 之间的消息/数据传输通道。主机应用程序可以通过此接口和 MCU 应用程序可以通过 host_send 和 host_receive API 与主机通信。
    • /dev/ttymcu1:此通道被定义为获取 MCU 日志消息的接口。
  • Sysfs 接口:
    • /sys/devices/platform/intel_mcu/control:一个只写控制节点,用于加载 MCU 应用程序。目前这个节点仅供内部使用。
    • /sys/devices/platform/intel_mcu/fw_version:用于构建 MCU 应用程序的 MCU SDK 版本。
    • /sys/devices/platform/intel_mcu/log_level:一个读写节点,用于设置和获取当前 MCU 应用程序日志级别。支持的输入字符串包括 fatal、error、warning、info 和 debug。

MCU SDK 主要功能

MCU SDK 包括一个 Eclipse 插件,用于 MCU 应用程序开发。它包括预构建的工具来构建、下载和调试 MCU 应用程序。包括模板源代码,并将在创建项目时部署。MCU SDK 的主要功能包括:

  • 创建 MCU 项目
  • 构建 MCU 应用程序
  • 将 MCU 应用程序下载到目标设备
  • 显示调试消息

已知限制

以下是关于 Intel® Edison 平台上 MCU 实施的已知限制:

  • CPU 和 MCU 之间的进程间通信最大消息大小目前限制为 255 字节。
  • 当前 Viper OS 版本不支持在加载后卸载 MCU 用户应用程序。用户必须重新启动设备以卸载下载的二进制文件。
  • MCU 应用程序更新需要 Linux 重新启动。
  • 当前 MCU 二进制文件大小限制为 120 KB。
  • 由于当前 Viper OS 版本的限制,MCU OS 时钟值是 10 ms。
  • 不能在路径名中包含空格的任何目录中安装 SDK(例如,不允许使用 Program Files 或 My Documents)。
  • MCU 中没有浮点支持(可以使用 MCU 构建浮点代码,但它将生成运行时异常)。
  • MCU 限制为 2xI2C。
  • MCU 应用程序限制为单线程使用。
  • 不能在不先启动 Linux 的情况下启动 MCU。
  • Intel Atom 处理器和 MCU 之间没有访问协调。两者都可以同时配置相同的 I/O。这可能会引起冲突,必须由用户管理。
  • MCU SDK(Eclipse)与用于 Intel Atom 处理器的 C/C++ Eclipse SDK 不同且分开。
  • MCU I/O API 与 Intel Atom 处理器的 API 不一致。必须重写代码以从 Intel Atom 处理器移动到 MCU。
  • MCU 没有看门狗定时器。
  • 当前不支持 MCU 的 SPI 功能。
  • 在某些网络配置下,由于 Eclipse 或 Cygwin 的限制,MCU SDK 在 Windows 上启动可能需要很长时间。
  • 在启动 MCU 之前,必须通过 Linux 接口完成引脚复用(Arduino 扩展板配置)。有关详细信息,请参见“设置 Intel® Edison 板以测试系统级芯片(SoC)GPIO”。
  • 为了访问此模块,必须从 Linux 侧禁用 PWM 运行时电源管理。有关详细信息,请参见“控制 PWM 端口”。
  • MCU 上没有可用的可编程定时器中断。

立即开始发明,使用 Intel® IoT 开发者计划,它提供了知识、工具、套件和专家社区,以快速轻松地将创新想法转化为物联网解决方案。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485