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观察者网站,查看本文更新内容,欢迎提供建议和留言讨论。
开发者可以根据习惯选择开发方式。有两种选择:
- 使用SEGGER Embedded Studio(SES)作为IDE进行开发。
- 使用任意编辑器(例如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文件。安装步骤如下:
- 为GN工具创建文件
mkdir ${HOME}/gn && cd ${HOME}/gn
- 下载GN二进制文件,用以下命令解压缩:
wget -O gn.zip https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+/latest
unzip gn.zip
rm gn.zip
- 添加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
- 安装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
- 运行SES
cd ${HOME}
./ses/bin/emStudio
- 第一次运行将提醒设置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.配置命令行环境变量
- 创建~/.zephyrrc。
cd ${HOME}
sudo touch .zephyrrc
- 添加环境变量到.zephyrrc 并保存。
echo 'export ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb' >> .zephyrrc
echo 'export GNUARMEMB_TOOLCHAIN_PATH="~/gnuarmemb"' >> .zephyrrc
- 载入变量设置,检查是否设置正确。
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解决。