Apache Mynewt 是一个适用于微型嵌入式设备的开源操作系统。其目标是简化针对功耗和成本为驱动因素的微控制器环境的应用程序开发。
目前支持以下硬件平台:
- Nordic Semiconductor 的 nRF52 DK (Cortex-M4)
- RuuviTag 传感器信标平台(基于 Nordic nRF52832)
- Nordic Semiconductor 的 nRF51 DK (Cortex-M0)
- 来自 VNG IoT 实验室的 VBLUno51(基于 Nordic nRF51822 SoC)
- 来自 VNG IoT 实验室的 VBLUno52(基于 Nordic nRF52832 SoC,Cortex-M4)
- RedBear 的 BLE Nano(基于 Nordic nRF51822 SoC)
- RedBear 的 BLE Nano2 和 Blend2(基于 Nordic nRF52832 SoC)
- Rigado 的 BMD-300-EVAL-ES (Cortex-M4)
- Rigado 的 BMD-200 (Cortex-M0)
- Adafruit 羽毛 nRF52 Pro
- ST Micro 的 STM32F4DISCOVERY (Cortex-M4)
- Olimex 的 STM32-E407 (Cortex-M4)
- Arduino 零 (Cortex-M0)
- Arduino Zero Pro (Cortex-M0)
- Arduino M0 Pro (Cortex-M0)
- Arduino MKR1000 (Cortex-M0)
- Arduino Primo NRF52 (Cortex-M4)
- NUCLEO-F401RE(皮质-M4)
- NUCLEO-F767ZI(皮质-M7)
- STM32F7 系列 (Cortex-M7) 探索套件
- NXP 的 FRDM-K64F (Cortex-M4)
- BBC micro:bit(北欧 nrf51822;Cortex-M0)
- SiFive HiFive1(RISC-V指令集架构)
- u-blox 的 NINA-B1 BLE 模块 (Cortex-M4)
- MikroElectronika 的 6LoWPAN 应答器(PIC32MX470 微控制器)
- chipKIT Wi-FIRE(PIC32MZ 微控制器)
- Creator Ci40模块(双MIPS interAptiv CPU)
- EE-02 板,配备 Telenor 的 Semtech Sx1276 芯片 (Cortex-M4)
- Dialog Semiconductor 的 DA1469x Pro DK (Cortex-M33)
- Nordic Semiconductor 的 nRF5340 DK (Cortex-M33)
Apache Mynewt 使用 Newt构建和包管理系统,它允许您构建操作系统并仅选择您需要的组件。
该存储库包含 Apache Mynewt 操作系统的核心包,包括:
- 抢占式实时操作系统内核
- 开源蓝牙 5.0 堆栈(主机和控制器)NimBLE,完全取代 Nordic 芯片组上的专有 SoftDevice。
注意NimBLE 源已移至单独的存储库。
- 支持 251 字节数据包大小
- 同时支持所有 4 个角色 - 广播者、观察者、外设和中央
- 支持最多 32 个同时连接。
- 传统和 SC(安全连接)SMP 支持(配对和绑定)。
- 广告扩展。
- 闪存文件系统 NFFS,专为小型 (128KB->16MB) 闪存而设计。
- 脂肪文件系统
- 闪存循环缓冲区
- JSON 和 CBOR 编码
- 引导加载程序支持
- 远程软件升级
- HAL 和 BSP 基础设施旨在抽象微控制器细节
- Shell 和控制台支持
- 统计和记录基础设施
- OIC 客户端和服务器
有关 Mynewt 操作系统的更多信息,请访问我们的网站。如果您想开始使用,请访问快速入门指南。
如果您正在浏览源代码树,并且想要查看一些主要的功能块,这里有一些提示:
-
kernel:包含 RTOS 的核心 ( kernel/os )
-
sys:包含许多用于构建应用程序的帮助程序库。包括控制台( sys/console ))、外壳( sys/shell ))
-
mgmt:包含newtmgr mgmt/newtmgr )的管理库,支持软件升级以及远程获取日志和统计信息。
-
net:包含网络包。 net 目录的亮点是 NimBLE 和 IP 包。 Nimble 是一个完整的蓝牙主机和控制器实现,是为 Apache Mynewt 操作系统从头开始编写的(由于代码移至单独的存储库,此文件夹仅包含兼容性包文件)。 ip是 LWIP 的一个端口,是完整的 IPv4 和 IPv6 实现。
-
hw:包含特定于硬件的支持包。板级支持包位于hw/bsp中,它们所依赖的 MCU 特定定义位于 hw/mcu中。尽管各种 HAL 的实现存储在 MCU 特定定义中,但hw/hal中存储了一个 HAL(硬件抽象层) 。最后,可以在hw/drivers中找到驱动程序。驱动程序为硬件提供比 HAL 更高级别的接口,并且可能需要 Mynewt 操作系统才能运行。
-
fs:包含 FS 包 ( fs/fs ),它是高级 Apache Mynewt 文件系统 API。该 FS 的具体实现是 NFFS(Newtron 闪存文件系统)。Newtron 文件系统是在 Apache Mynewt 中从头开始构建的 FS,旨在针对小型 (64KB-32MB) 闪存进行优化。 fs 目录还包含fcb,一个闪存循环缓冲区实现。
除了一些核心包之外,还有一些示例应用程序展示了如何实例化 Apache Mynewt 系统。这些示例应用程序位于该apps/目录中。他们包括:
- slinky:一个稍微复杂的项目,包括控制台和 shell 库。
- bleuart:实现一个简单的 BLE 外设,支持 Nordic UART / 串行端口仿真服务 ( https://developer.nordicsemi.com/nRF5_SDK/nRF51_SDK_v8.xx/doc/8.0.0/s110/html/a00072.html )。
如果您在使用 Apache Mynewt 或为 Apache Mynewt 做出贡献时遇到问题,或者只是想与人讨论您正在从事的工作,您可以通过 开发人员邮件列表与我们联系。
虽然不是正式频道,但您也可以在 Freenode 上的#mynewt 频道上找到一些核心开发人员。
另外,请务必先查看常见问题解答 ,以获取一些故障排除帮助。
任何使用 Apache Mynewt 的人都可以成为开发和部署它的社区的贡献成员。发布微控制器操作系统的过程从未结束:我们欢迎您为此做出贡献。
更多信息可以在 Apache Mynewt 网站的社区部分找到,位于此处。
Apache Mynewt 欢迎通过 Github 发起拉取请求。讨论在 Github 上进行,但根据主题,也可以转发到官方 Apache Mynewt 开发人员邮件列表[email protected]。
如果您建议新功能,请直接向开发人员列表发送电子邮件,并附上您计划开发的功能的描述。
我们不会直接在 Github 上合并拉取请求,所有 PR 都将通过https://git.apache.org/拉取和推送。
可以在 Apache Mynewt Issues上提交错误。请将问题标记为“Bug”。
如果可能,请附上一个独立的复制盒!
功能请求还应在 Apache Mynewt Bug Tracker上提交。请根据范围将问题标记为“功能”或“增强”。
我们喜欢进行蝾螈测试! Apache Mynewt 是一项艰巨的任务,提高代码覆盖率对于每个 Apache Mynewt 用户来说都是一场胜利。
贡献文档(除了编写测试之外)是参与 Apache Mynewt 项目的好方法。
Mynewt 核心操作系统文档位于/docs中。
此存储库中的代码全部采用 Apache 2 许可证或与 Apache 2 许可证兼容的许可证。有关详细信息,请参阅许可证文件。
该发行版包括加密软件。您当前居住的国家/地区可能对加密软件的进口、拥有、使用和/或再出口到另一个国家/地区有限制。在使用任何加密软件之前,请检查您所在国家/地区有关进口、拥有或使用以及再出口加密软件的法律、法规和政策,以了解是否允许这样做。请参阅http://www.wassenaar.org/了解更多信息。
美国政府商务部工业与安全局 (BIS) 已将此软件分类为出口商品控制编号 (ECCN) 5D002.C.1,其中包括使用非对称算法或执行加密功能的信息安全软件。此 Apache Software Foundation 发行版的形式和方式使其符合目标代码和源代码的许可例外 ENC 技术软件无限制 (TSU) 例外(请参阅 BIS 出口管理条例第 740.13 节)的出口资格。
以下提供了有关随附加密软件的更多详细信息: https://tls.mbed.org/supported-ssl-ciphersuites。