开源IoT操作系统Mynewt使用简介

开源IoT操作系统Mynewt介绍

最近,在Apache软件基金会(ASF, Apache Software Foundation)发起了一个开源的社区项目Mynewt,其最新的稳定版本1.0.0-b1刚刚发布。Mynewt是一个专注于物联网(IoT,Internet of Things)应用的实时操作系统,包括低功耗蓝牙(BLE4.2)无线传输协议栈NimBLE。

Mynewt支持丰富的实时操作系统特征,可以在不同的硬件平台上运行,包括ARM Cortex M0-M4微控制器,以及基于MIPS和RISC-V架构的处理器。有许多现有的微控制器开发板可以直接运行Mynewt,使得在其上进一步开发应用程序就非常容易。其完整的特性介绍和支持的开发板列表可以在Mynewt的网页上找到。

对于物联网应用的开发人员来说,使用Mynewt可以得到两个方面显而易见的好处。首先,应用开发变得很简单,那些复杂的和底层硬件打交道的工作都交给了实时操作系统。应用Mynewt的硬件抽象层(HAL, Hardware Abstraction Layer),开发板支持包(BSP, Board Support Packages),以及Mynewt操作系统的任务调度和管理系统,开发人员不需要像传统的嵌入式应用的开发那样去照顾应用程序的方方面面。特别是对于那些需要多个不同优先级任务的复杂应用程序,就可以很方便的进行开发。其次,应用开发变得很自由。由于是开放源代码系统,应用开发人员可以根据需要自由裁剪整个操作系统包括无线通信协议栈。这对于硬件资源有限的物联网应用来说非常重要,那些不需要的模块就可以在应用程序的编译中不包括,从而节省了宝贵的系统资源。


Mynewt使用入门

下面以Nordic的nRF52832开发板PCA10040为例来介绍如何开始使用Mynewt实时操作系统,并且如何在PCA10040上运行其开源的蓝牙低功耗协议栈NimBLE。NimBLE协议栈遵从于BLE 4.2标准,支持BLE 4.2的新特征如长数据包传输等。Mynewt使用入门介绍包括三个方面的内容:

  • 开发环境的设置
  • 在PCA10040开发板上运行Mynewt操作系统,并运行LED灯闪烁应用程序
  • 在PCA10040开发板上运行NimBLE低功耗蓝牙协议栈,并用LighBlue连接上

开发环境的设置

本节内容介绍开发环境的设置,包括硬件和软件方面的设置。

一台笔记本电脑,一个nRF52832开发板PCA10040,以及连接电脑和PCA0040开发板的USB连接线,这就是需要的全部硬件。下面以苹果电脑的macOS系统为例介绍软件开发环境的设置,Linux系统类似。

安装newt工具

按照如下步骤安装好newt工具:

1.安装macOS的套件管理器Homebrew。如果macOS系统没有安装好Homebrew,打开一个命令行终端控制台,使用如下命令进行安装。安装提示需要用户密码时,输入sudo密码

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install\
/master/install)"

例如,在命令行终端的安装输出结果如下

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew

Press RETURN to continue or any other key to abort
==> /usr/bin/sudo /bin/mkdir -p /Library/Caches/Homebrew
Password:
==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew
==> /usr/bin/sudo /usr/sbin/chown jiachengwang /Library/Caches/Homebrew
==> Downloading and installing Homebrew...
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
HEAD is now at b6f3399 Merge pull request #1930 from vitorgalvao
/set-permissions-sudo
==> Cleaning up /Library/Caches/Homebrew...
==> Migrating /Library/Caches/Homebrew to 
/Users/jiachengwang/Library/Caches/Homebrew...
==> Deleting /Library/Caches/Homebrew...
Already up-to-date.
==> Installation successful!

==> Homebrew has enabled anonymous aggregate user behaviour analytics.
Read the analytics documentation (and how to opt-out) here:
  https://git.io/brew-analytics

==> Next steps:
- Run `brew help` to get started
- Further documentation: 
https://git.io/brew-docs

当然,也可以用其它的方式进行安装,例如直接提取Homebrew的安装包(或者git clone),并拷贝到/usr/local目录。

2.安装Go编程语言。Go语言需要专门的目录作为其工作空间,其中包含有三个目录src,pkg 和bin。从其名字就可以知道,src目录是Go的源代码目录,在其中的一个子目录就是一个源代码包,pkg目录是源代码包相应的目标文件,bin目录中包含一些可执行的命令文件。环境变量GOPATH决定了工作目录,因此需要设置好GOPATH环境变量。为此,创建一个dev目录并在其中进一步创建go目录,并把GOPATH环境变量设置为这个目录。这样,就可以把newt工具的repo克隆到本地的这个目录。

$ cd $HOME
$ mkdir -p dev/go  
$ cd dev/go
$ export GOPATH=`pwd`

可以把环境变量GOPATH的设置加入到~/.bash_profile 文件中,这样就可以在以后启动一个新的命令行终端控制台时,自动应用环境变量GOPATH。

$ vi ~/.bash_profile
...
export GOPATH=~/dev/go
...
$ source ~/.bash_profile

现在,就可以应用brew安装Go了。安装好后,Go就为开发者提供了一个开发环境,编译Go代码,构建Go包,从github上载入Go代码。接下来,就可以应用Go命令把newt的repo载入到本地的Go开发环境中

$ brew install go
==> Downloading https://homebrew.bintray.com/bottles/go-1.7.5.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring go-1.7.5.sierra.bottle.tar.gz
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
export PATH=$PATH:/usr/local/opt/go/libexec/bin
==> Summary
/usr/local/Cellar/go/1.7.5: 6,440 files, 250.8M

当然,也可以直接从https://golang.org/dl/下载Go的安装包,并安装在/usr/local目录

3.创建本地的repo。应用Go命令把newt拷贝到本地,请耐心等待,需要花费几分钟。在等待过程中,可以检查安装的目录以确认安装在进行


                
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BACnet是一种开源物联网IoT)通信协议,全名为“建筑自动控制网络”。它是一种用于建筑自动化系统的通信协议,旨在促进建筑设备和系统之间的互操作性。 BACnet的开源性意味着它的技术规范和源代码对公众开放,可以由任何人自由使用、修改和分发。这使得用户和开发人员能够根据自己的需求进行自定义和集成。 BACnet作为一种开源协议,具有以下几个优点。 首先,开源性使得使用BACnet的设备和系统更容易互操作。这意味着不同品牌和类型的设备可以通过BACnet协议进行通信和协作,从而实现跨设备和系统的集成。这样,用户可以更灵活地组建自己的物联网系统,无论是用于建筑自动化还是其他行业。 其次,开源性使得BACnet的技术规范能够得到更广泛的审查和改进。通过公众对BACnet协议的研究和参与,可以发现和修复潜在的安全漏洞和技术问题,提高协议的可靠性和安全性。 最后,开源性使得BACnet更具成本效益。由于任何人都可以使用和分发BACnet的源代码,这意味着用户可以选择不同的供应商和产品,从中选择最适合自己需求和预算的解决方案。这促进了市场竞争,降低了用户的总体成本。 综上所述,BACnet作为一种开源物联网通信协议,提供了更大的灵活性、互操作性和成本效益。它为建筑自动化系统和其他行业的物联网应用带来了便利和优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值