nRF5 应用开发的方式有挺多的,官方文档介绍的就有:
- Keil µVision IDE,
- IAR Embedded Workbench,
- GCC ARM Embedded.
前两种方式优点是比较简单,很多事情 IDE 可以帮你一下搞定,但劣势也比较明显,这两个都是收费软件(如果你说可以和谐啊,那就当我没说啰...),还有就是只能在 Windows 系统下使用,跨平台基本没戏。
GCC ARM Embedded 是开源的交叉工具链,虽然配置稍微复杂一点点,但人家免费而且可以跨平台开发,无论你是使用 macOS,Windows,还是 Linux 进行开发,都完全无压力。这也是我个人非常推崇的一种方式,强烈建议大家都到这条跑道上来。
一开始我本来打算写个脚本,一条命令下去,屏幕“唰唰唰”蹦出一些“莫名其妙”的字符,最后跳出一句 “Completed successfully!”,一切轻松搞定,Perfect。这不是正好符合PM们说的“把你的用户当傻瓜”的理念吗?后来细想,我面对的人不是傻瓜,他们是比我不知道聪明多少倍的开发者,他们知道自己在干什么,这些小伎俩对他们来说简直就跟喝水一样。所以我还是老老实实还原整个构建过程,需要自动化构建的工作就留给他们,他们经常干这事的。
安装 GCC ARM Embedded
下载 GCC ARM Embedded,可以尝试最新版本,可能会出现不兼容问题,我当前使用的版本是 gcc-arm-none-eabi-5_4-2016q3
。
解压到你自己指定的目录,并验证是否能够工作:
# 解压到指定目录
$ cd your_toolchain_path/
$ tar -xvf gcc-arm-none-eabi-5_4-2016q3-20160926-mac.tar.bz2
# 验证版本
$ cd your_toolchain_path/gcc-arm-none-eabi-5_4-2016q3/bin/
$ ./arm-none-eabi-gcc --version
针对 Windows
Windows 对开发者来说是个比较麻烦的平台,不能原生支持一些开发工具,如我们将需要用到的两个命令行工具:make
和 rm
。还好这个世界上有一些非常可爱的人,他们“创造了一个东西,然后分享出来,让大家都能用 ”,这就是我们将需要用到的开源项目 GNU ARM Eclipse Windows Build Tools 。
下载并安装最新版本 GNU ARM Eclipse Windows Build Tools Release ,这个开源工具将会安装 make
和 rm
等命令行工具。
一路 Next
,安装完毕,为其添加环境变量:
# 验证是否配置正确
> make --version
安装 nRF5 SDK
下载最新版本 nRF5 SDK,nRF5 SDK 版本更新比较频繁,功能在不断扩展和改善中,可能会出现新旧 API 不兼容问题,小打小闹无所谓,搞大工程的小伙伴慎重更新。我目前使用的版本是 nRF5_SDK_12.2.0_f012efa
。
解压到你自己指定的目录:
# 解压到指定目录
$ tar -xvf nRF5_SDK_12.2.0_f012efa.zip -C ./your_sdk_path/
修改 Makefile.posix
(在 Windows 下对应的是Makefile.windows
) 文件,配置成前面 GCC ARM Embedded 的路径:
# macOS & Linux 对应 Makefile.posix 文件;Windows 对应 Makefile.windows 文件
GNU_INSTALL_ROOT := your_toolchain_path/gcc-arm-none-eabi/gcc-arm-none-eabi-5_4-2016q3
GNU_VERSION := 5.4.1
GNU_PREFIX := arm-none-eabi
可以编译官方的示例验证是否正常工作:
$ cd nRF5_SDK_12.2.0_f012efa/examples/peripheral/blinky/pca10040/blank/armgcc/
$ make
安装 pyOCD
pyOCD 是 mbed 社区为 ARM Cortex-M 系列 MCU 所提供的编程和调试服务工具。它主要基于 CMSIS DAP 接口,能为不同的厂商提供了统一的调试接口。该工具能够与 DAPLink 仿真器完美配合,低成本实现市场上价格不菲的仿真器的主要功能。
pyOCD 基于 Python,需要先安装 Python 2.7 和 pip:
安装最新稳定版本的 pyOCD:
# 如果安装失败,可以安装高版本的 Python 2.7.x 试试
$ pip install --pre -U pyocd
实战开发
如果你已经拿到 YS-Beacon HDK,一切准备就绪,可以进入实战开发了。第一个示例我已经 push 到 GitHub,可供参考:
$ git clone https://github.com/YS-Beacon/ys-beacon-blinky.git
$ cd ys-beacon-blinky
# 将 YS-Beacon 连接到 PC
$ make flash
一切顺利的话,板子上的 RGB LED 将按照一定规律闪烁: