/nrf52-armgcc-env

搭建nrf52的armgcc开发环境

Creative Commons Zero v1.0 UniversalCC0-1.0

使用armgcc进行nRF5x的芯片开发

本文主要介绍如何搭建nRF5xarmgcc开发环境

物料准备

步骤

  1. 安装nrf5 SDKnRF Command Line Tools
  2. 安装GNU make
  3. 安装ARMGCC
  4. 安装JLink
  5. 配置编辑器插件

安装

安装各项工具后,请将工具内可执行文件的路径添加到系统的环境变量中,以确保后续操作能够正常执行。

编译

完成1-3步之后,应当可以执行编译工作。可以按如下方式进行测试。

首先,打开<SDK root>\example目录下的一个工程,此处以<SDK root>\examples\ble_peripheral\ble_app_uart为例。进入\examples\ble_peripheral\ble_app_uart\pca10040\s132\armgcc目录,在此目录打开命令行,并执行make命令。

......

以上为windows系统上使用powershell正常编译的输出。

烧录

因为nRF Command Line Tools带有nrfjprog烧录工具,而SDK中的armgcc默认烧录方式就是使用nrfjprog,所以如果你正确安装了nrfjprog并配置好了环境变量,则此时使用JLink正确连接到目标板后,使用命令make flash_softdevicemake flash就可以分别烧录协议栈和应用程序了。

如图为正常烧录协议栈时的输出。

调试

安装完JLink后,在VS Code中安装好上述插件。

需要配置Cortex-debugarmToolchainPathJLinkGDBServerPath两个属性。其中,前者是你arm gcc工具链的二进制文件目录,一般为<GNU Tools ARM Embedded [version]>\bin\,而后者是JLinkGDBServer.exe的路径。注意,前者是目录,而后者是可执行文件。

armToolchainPrefix默认为arm-none-eabi,一般不用修改。

接下来,使用VS Code打开项目文件夹,进入调试界面,新建一个配置文件,如下配置:

	"configurations": [
		{
			"cwd": "${workspaceRoot}",
			"executable": "./pca10040/s132/armgcc/_build/nrf52832_xxaa.out",
			"name": "Local GDB server",
			"request": "attach",
			"type": "cortex-debug",
			"servertype": "jlink",
			"gdbTarget": "127.0.0.1:2331",
			"device": "nRF52832_xxAA",
			"svdFile": "./nrf52.svd"
		}
	]

其中,svd文件为SDK中包含,此处已经将其拷贝到项目中。如果没有指定,则调试时无法显示内核的寄存器状态。

如果配置无误,且已经给目标板正确烧录了协议栈和应用程序,点击调试按钮即可正常进入调试。

已知问题:调试中,光标在某些时候可能没有正确刷新位置,比如使用reset后,光标位置没有变化,而实际已经重置,需要单步之后才会来到正确位置。