WSL构建nRF5 SDK + ARM GCC开发环境

陈拓 2022/07/19-2022/07/22

1. 概述

nRF5 SDK开发环境有下面4种:

  • Keil µVision IDE
  • IAR Embedded Workbench
  • SES SEGGER Embedded Studio
  • GCC ARM Embedded

我选择GCC ARM Embedded,它是开源跨平台交叉工具链,可以选择Windows、Linux或者macOS环境进行开发。

2. 开发环境

我的开发环境是Windows Liunx子系统WSL,详细说明见:

《Win10启用Linux子系统安装Ubuntu》

https://zhuanlan.zhihu.com/p/341394468

https://blog.csdn.net/chentuo2000/article/details/112131624?spm=1001.2014.3001.5502

3. 在WSL上安装 GCC ARM Embedded

https://launchpad.net/gcc-arm-embedded

https://developer.arm.com/open-source/gnu-toolchain/gnu-rm

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads

asc不用下载。

x86_64 Linux hosted cross toolchains是64位Linux系统的交叉编译工具链。

AArch32 bare-metal target (arm-none-eabi) 是目标运行环境,32位的ARM芯片,编译的是裸机(bare-metal)程序。

nRF52832的内核是64 MHz的32位ARM Cortex™ M4F CPU,所以我们下载这个工具链。

wget shttps://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi.tar.xz

  • 解压

tar -xvf gcc-arm-none-eabi-5_4-2016q3-20160926-mac.tar.bz2

  • 查看版本

cd gcc-arm-11.2-2022.02-x86_64-arm-none-eabi

./bin/arm-none-eabi-gcc --version

4. 安装 nRF5 SDK

nRF5 SDK用来开发nRF51/52系列产品。nRF5 SDK是一个zip压缩包。

  • 下载

因为原来的代码是在nRF5 SDK 14.2下开发的,我们就下载这个版本。

https://www.nordicsemi.com/Products/Development-software/nRF5-SDK/Download#infotabs

下载nRF5 SDK 14.2

只需要下载SDK就可以了。

DeviceDownload.zip

  • 解压

unzip DeviceDownload.zip

ls -l nRF5_SDK_14.2.0_17b948a

设置环境变量

修改 Makefile.posix文件,配置成前面安装GCC ARM Embedded的路径:

find . -name Makefile.posix

nano /home/ccdc/nrf/nRF5_SDK_14.2.0_17b948a/components/toolchain/gcc/Makefile.posix

修改这一行:

GNU_INSTALL_ROOT := /home/ccdc/nrf/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/

5. 编译一个例程测试

测试一个LED闪烁例程。官方例程是针对官方开发板的,我们用pca10040的例程,原装的pca10040很贵。我们在项目硬件板子上测试。

  • 修改代码

在VSCode中打开项目目录。

gpio的引脚定义位于

~/nrf/nRF5_SDK_14.2.0_17b948a/components/boards/pca10040.h

文件中。

nrf52832的gpio为p0.0-p0.31。

pca10040板子上有4个LED,其中LED2是在GPIO 18上:

在我们的板子上有一个LED连在P0.28上:

用我们的LED代替LED2:

  • 编译

cd ~/nrf/nRF5_SDK_14.2.0_17b948a/examples/peripheral/blinky/pca10040/blank/armgcc/

make

 

hex文件包含地址信息,可以直接烧录。

bin文件没有包含地址信息,所以在下载bin文件时需要选择内存的起始地址。

6. 连接下载器

  • ARM仿真器

  • 接口

我们用SWD接口,接线图如下:

ARM仿真器 --- nRF52832

VTref   ---   3.3V

SWDIO   ---   SWDIO

SWCLK   ---   SWDCLK

GND     ---   GND

7. 安装nrfjprog

我们用nrfjprog烧录前面编译好的hex文件。

因为WSL本身并不支持连接USB设备,虽然可以通过安装开源的usbipd-win项目连接USB设备,见:

https://docs.microsoft.com/zh-cn/windows/wsl/connect-usb

为了减少麻烦,我们在Windows环境中用nrfjprog烧录hex文件。在Windows中可以方便的访问WSL目录,所以这种方法也很实用。

  • 下载nrfjprog

nordic官网

http://www.nordicsemi.com/

搜索下载Command Line Tools

https://www.nordicsemi.com/Products/Development-tools/nRF-Command-Line-Tools/Download

选择Windows平台版本下载:

  • 安装

双击nrf-command-line-tools-10.16.0-x86.exe进行安装。

根据你的系统情况,可能还会安装VC++库:

安装nrf-command-line-tools:

一路Next,完成安装。

  • 测试nrfjprog

nrfjprog -v

出错,这是因为还需安装J-Link。

8. 安装J-Link驱动软件

我的PC是Win10系统。

  • 下载

https://www.segger.com/downloads/jlink/

  • 安装

双击JLink_Windows_V768_x86_64.exe

默认安装。

插上ARM仿真器,在PC上在设备管理器中查看:

  • 测试

运行J-Link Commander V7.68

  • 查看连接状态

q退出。

  • 再测试nrfjprog

nrfjprog -v

9. 用nrfjprog烧录hex文件

  • 准备工作

要烧录我们前面编译好的nrf52832_xxaa.hex,为方便操作,我在D盘创建了一个临时目录nrfhex。

之前我们的编译好的hex文件在目录:

\\wsl$\Ubuntu-20.04\home\ccdc\nrf\nRF5_SDK_14.2.0_17b948a\examples\peripheral\blinky\pca10040\blank\armgcc\_build

把它拖到D:\nrfhex中

进入目录D:\nrfhex:

cd D:\nrfhex

  • 清除memory

nrfjprog -f NRF52 --eraseall

  • 下载烧录hex文件

nrfjprog -f nrf52 --program nrf52832_xxaa.hex -sectorerase --verify

  • 重启nRF52832

nrfjprog -f nrf52 --reset

板子上的LED开始闪烁了。

参考文档

  1. 快速构建 nRF5 SDK + ARM GCC 开发环境
    https://zhuanlan.zhihu.com/p/24604398

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨之清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值