nRF Connect SDK在Ubuntu环境下的配置过程

nRF Connect SDK在Ubuntu环境下的配置过程

作者: Nordic观察者
分类: Software
创建时间: Apr 19, 2021 1:28 PM
参考: https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/gs_installing.html
更新时间: Jun 18, 2021 3:19 PM
标签: NCS, Ubuntu
版权声明: https://www.notion.so/Copyright-2021-NordicObserver-com-f109fad4bb434cad9a0943d3645d10fc
状态: 完成
评论: https://www.notion.so/bdd52636398a4321b119ace13a9f5fb2


扫码或点击https://www.nordicobserver.com访问Nordic观察者网站,查看本文更新内容,欢迎提供建议和留言讨论。
https://raw.githubusercontent.com/iotobserver/blog/main/img-NordicObserverQR.png


开发者可以根据习惯选择开发方式。有两种选择:

  1. 使用SEGGER Embedded Studio(SES)作为IDE进行开发。
  2. 使用任意编辑器(例如VS code)进行编辑,然后用命令行进行编译烧写。

本文将介绍怎样在Ubuntu系统上为nRF Connect SDK(NCS)配置两种开发环境。

手动安装NCS和SES开发环境

1.安装系统所需依赖

sudo apt install --no-install-recommends git cmake ninja-build gperf \
	ccache dfu-util device-tree-compiler wget \
	python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \
make gcc gcc-multilib g++-multilib libsdl2-dev

如需编译Project Connected Home over IP应用,还需要添加GN meta-build system。这个系统产生NCS可用的Ninja文件。安装步骤如下:

  1. 为GN工具创建文件 mkdir ${HOME}/gn && cd ${HOME}/gn
  2. 下载GN二进制文件,用以下命令解压缩:
wget -O gn.zip https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+/latest
unzip gn.zip
rm gn.zip
  1. 添加GN工具到系统路径。例如运行以下命令添加都bash:
echo 'export PATH=${HOME}/gn:"$PATH"' >> ${HOME}/.bashrc
source ${HOME}/.bashrc

2.安装west

pip3 install --user west
echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc
source ~/.bashrc

原教程仅有pip3 install --user west,使用west命令会报错,此处参考了Zephyr安装west的教程

3.获取nRF Connect SDK代码

 mkdir ${HOME}/ncs && cd ${HOME}/ncs
 west init -m https://github.com/nrfconnect/sdk-nrf --mr NCS_revision
 west update
 west zephyr-export

NCS_revision需要被替换为目标版本的标签,所有NCS版本的标签可以从Release notes找到。例如当前(2021四月) 最新版本为v1.5.1

4.安装Python依赖

pip3 install --user -r zephyr/scripts/requirements.txt
pip3 install --user -r nrf/scripts/requirements.txt
pip3 install --user -r bootloader/mcuboot/scripts/requirements.txt

pip3 install --user -r nrf/scripts/requirements.txt会产生以下报错:
ERROR: Double requirement given: west>=0.7.2 (from -r nrf/scripts/requirements-doc.txt (line 4)) (already in west>=0.9.0 (from -r nrf/scripts/requirements-base.txt (line 1)), name=‘west’)
删除要求较低的一个即可:

cat nrf/scripts/requirements-doc.txt
sed -i '$d' nrf/scripts/requirements-doc.txt
cat nrf/scripts/requirements-doc.txt

5.安装编译工具链

cd ${HOME}
wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
tar -xvf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
mv gcc-arm-none-eabi-10-2020-q4-major gnuarmemb 
rm gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
export ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb
export GNUARMEMB_TOOLCHAIN_PATH="~/gnuarmemb"

如果想要使用命令行开发环境而不是SEGGER Embedded Studio IDE, 可以跳转到手动安装NCS和命令行开发环境。

6.安装激活SEGGER Embedded Studio(SES) Nordic Edition

  1. 安装SES。
cd ${HOME}
wget https://www.segger.com/downloads/embedded-studio/embeddedstudio_arm_nordic_linux_x64
tar -xvf embeddedstudio_arm_nordic_linux_x64
rm embeddedstudio_arm_nordic_linux_x64
mv arm_segger_embedded_studio_* ses

解压后将会得到一个名为arm_segger_embedded_studio_v534a_linux_x64_nordic的文件夹,为方便后续操作将其重命名为ses。版本号可能随时间更新。

Segger为北欧半导体的设备提供了免费的商用授权,填写表格可以获取。将通过邮箱获取到的注册码填入Tool->License Manager->Activate SEGGER Embedded Studio即可完成商用授权激活。

7.配置SES

  1. 运行SES
cd ${HOME}
./ses/bin/emStudio
  1. 第一次运行将提醒设置GNU ARM Embedded Toolchain Directory,将其设为gnuarmemb的位置。选择Tool->Options->nRF Connect,检查GNU ARM Embedded Toolchain Directory,将Zephyr Base 设置为ncs/zephyr。

手动安装NCS和命令行开发环境

前五步和手动安装NCS和SES开发环境完全相同,可参考上一章节内容。

6.安装nRF命令行工具,主要用于程序烧写。

cd ${HOME}
wget https://www.nordicsemi.com/-/media/Software-and-other-downloads/Desktop-software/nRF-command-line-tools/sw/Versions-10-x-x/10-12-1/nRFCommandLineTools10121Linuxamd64.tar.gz
mkdir nrfjprog
tar -xvf nRFCommandLineTools10121Linuxamd64.tar.gz -C nrfjprog
cd nrfjprog
sudo dpkg -i --force-overwrite JLink_Linux_V688a_x86_64.deb
sudo apt-get install jlink
sudo dpkg -i --force-overwrite nRF-Command-Line-Tools_10_12_1_Linux-amd64.deb
cd ..
rm -r nrfjprog
rm nRFCommandLineTools10121Linuxamd64.tar.gz

7.配置命令行环境变量

  1. 创建~/.zephyrrc。
cd ${HOME}
sudo touch .zephyrrc
  1. 添加环境变量到.zephyrrc 并保存。
 echo 'export ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb' >> .zephyrrc
 echo 'export GNUARMEMB_TOOLCHAIN_PATH="~/gnuarmemb"' >> .zephyrrc
  1. 载入变量设置,检查是否设置正确。
 xxx@ubuntu:~$ cd ${HOME}
 xxx@ubuntu:~$ source ncs/zephyr/zephyr-env.sh
 xxx@ubuntu:~$ echo "$ZEPHYR_TOOLCHAIN_VARIANT"
 gnuarmemb
 xxx@ubuntu:~$ echo "$GNUARMEMB_TOOLCHAIN_PATH"
 ~/gnuarmemb
 xxx@ubuntu:~$ echo "$ZEPHYR_BASE"
 /home/xxx/ncs/zephyr
 xxx@ubuntu:~$ echo "$PATH" /home/xxx/ncs/zephyr/scripts:/home/xxx/.local/bin:/home/xxx/gn:/home/xxx/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

每次打开新的命令行工具必须运行source ~/ncs/zephyr/zephyr-env.sh 完成命令行环境变量的部署。或者运行添加source ~/ncs/zephyr/zephyr-env.sh~/.bashrc

 cat ~/.bashrc
 echo 'source ~/ncs/zephyr/zephyr-env.sh' >> ~/.bashrc
 cat ~/.bashrc

脚本安装NCS和命令行开发环境

ncs_ubuntu_Installation.sh
手动安装NCS和命令行开发环境可以直接用下面脚本实现,遇到问题请定位到具体的步骤去查找。复制脚本到Ubuntu 20.04 LTS, 运行下列命令。

chmod +x ncs_ubuntu_Installation.sh
./ncs_ubuntu_Installation.sh

问题和解决方法

  • 无法烧写,提示JLinkARM DLL reported an error.
    报错内容如下:
ERROR: JLinkARM DLL reported an error. Try again. If error condition
ERROR: persists, run the same command again with argument --log, contact Nordic
ERROR: Semiconductor and provide the generated log.log file to them.
FATAL ERROR: command exited with status 33: nrfjprog --program /workdir/ncs/zephyr/samples/hello_world/build/zephyr/zephyr.hex --sectoranduicrerase -f NRF52 --snr 960021755

可以通过sudo apt-get install jlink安装最新的Jlink解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值