基于VSCode的nRF52840开发环境搭建

nRF52840是Nordic Semiconductor推出的一款功能强大的多协议SoC,广泛应用于物联网设备、可穿戴设备和低功耗蓝牙产品开发。本篇文章将详细介绍如何在VSCode中搭建完整的nRF52840开发环境,让您能够高效地进行嵌入式开发。

一、准备工作

  • VSCode:👉 Visual Studio Code - Code Editing. Redefined

  • 稳定的网络环境

  • nRF52840开发板

  • 安装J-Link 8.42版本

二、环境搭建

打开VSCode插件市场,搜索并安装"nRF Connect for VS Code Extension Pack"。这是由Nordic Semiconductor开发的扩展包,包含四款定制扩展和多个对nRF Connect SDK开发至关重要的工具:

扩展用法
nRF Connect开发、构建和测试 nRF Connect SDK 应用程序。
nRF DeviceTree以树状结构显示自定义硬件布局,并使用 Devicetree Visual Editor 进行编辑。
nRF Kconfig使用 Kconfig 图形界面查看和自定义配置选项。
nRF Terminal使用基于 UI 的接入点通过串行端口或 RTT 进行连接。

image

扩展包中还包括两个重要的插件,分别是:

  • C/C++: C/C++ 语言支持,包括 IntelliSense、调试和代码浏览功能
  • GNU Linker Map Files: 语法高亮和符号列表显示适用于 GNU 链接器.map 文件

三、设置SDK和工具链

1)设置SDK以及工具链的安装目录

首先,我们可以先设置一下SDK和工具链的安装目录(默认安装目录:c:\ncs​):

  1. 打开设置,搜索nRF Connect,找到 Nrf-Connect>Toolchain Manager:Install Directory

    image

  2. 输入目录即可。

  3. 重启VSCode。

ℹ️ 如果目录中已安装工具链和SDK,重启VSCode后nRF Connect插件将自动识别它们。如果您的网络情况不佳,可以直接下载成品包,解压到此目录即可。

2)安装工具链

  1. 打开nRF Connect扩展,点击“Install Toochain”按钮

    image

  2. 等待操作列表出现:

    image

  3. 我们选择最新版,点击安装即可。根据网络情况,下载安装时间可能会有所不同:

    image

    ⚠️ 注意:下载过程中请不要切换网络,否则会文件将重新下载并且最后会报错!(别问我怎么知道的…)

3)安装SDK

  1. 打开nRF Connect扩展,点击“Manage SDKs”

    image

  2. 等待操作列表出现,点击所需要的版本:

    image

  3. 设置下载安装目录:

    image

  4. 开始下载安装,根据网络情况,下载安装时间可能会有所不同:

    image

    ⚠️ 注意:下载过程中请不要切换网络,否则会文件将重新下载并且最后会报错!(别问我怎么知道的…)

四、创建工程

  1. 打开nRF Connect扩展,点击"Create a new application"

    image

  2. 在弹出的菜单中,选择以下选型之一:

    image

    • 创建空白应用:这将创建一个应用,其代码结构需要您从头开始填充。
    • 复制示例(推荐) :基于官方 SDK 示例快速启动开发。
    • 浏览 nRF Connect SDK 附加组件:这将基于nRF Connect SDK的外部参考应用创建应用程序。这些参考应用遵循独立版本管理方案并使用自定义west工作区配置。您可以在在线应用索引中查看可用参考应用列表。
  3. 输入工作目录,工程文件将被创建在这里。

    image

    ⚠️ 注意:在所选位置中不能已存在同名文件夹

  4. 完成后,VSCode将显示提示框,提供以下选项:

    • Open:在当前VSCode窗口打开工程
    • Open in New Window:在新VSCode窗口打开工程
    • Add to Workspace:将新工程添加到当前工作区(仅在应用程序视图中已存在其他应用程序时可用)

    ℹ️ 您可以通过配置nrf-connect.defaultOpenAction​设置来指定VSCode打开应用程序时的默认操作。

五、构建、编译程序

工程创建完成后,接下来就是构建它了:

  1. 打开nRF Connect扩展,展开“APPLICATIONS”这一栏,点击“Add build configuation”:

    image

  2. 此时右边会弹出“Add Build Configuration”页面:

    image

  3. 在Board target中选择“nrf52840dk/nrf52840”:

    image

  4. 可选操作:添加Kconfig片段和Devicetree覆盖文件。若未指定基础文件,构建系统将自动选择。

    image

    ℹ️ 对于第一个项目,我们可以什么也不做,等后面再熟悉。

  5. 可选操作:添加代码片段或CMake参数。有关CMake参数语法的详细信息,请参阅文档 Adding files and configuring CMake

  6. 优化级别(大小、速度或调试) 中,选择使用项目默认值

    image

    ⚠️ 注意:如果您需要调试,需要选择Optimize for debugging (-Og)

  7. 然后我们点击最下面的“Generate and Build”按钮:

    image

    ℹ️ 这一过程可能需要一些时间,您可以在通知中或者终端里查看其进度。

image

构建完成后将显示操作界面,您可在此执行以下操作:

  • 重新触发构建流程
  • 烧录已生成的示例程序
  • 启动调试会话
  • 生成内存分析报告

构建文件将显示在以应用程序命名的详细信息视图中。

image

六、烧录和调试

image

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90253.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GStreamer开发笔记(九):gst-rtcp-server安装和部署实现简单的rtsp-server服务器推流Demo

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/149054288 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、O…

C++ namespace机制以及同时使用多个namespace可能存在的问题

在一个 .cpp 文件中使用了多个 using namespace 会怎么样? 核心答案是:可能会导致“命名冲突(Name Collision)”和“二义性(Ambiguity)”,从而引发编译错误。 当你使用 using namespace SomeNam…

基于R语言的分位数回归技术应用

回归是科研中最常见的统计学研究方法之一,在研究变量间关系方面有着极其广泛的应用。由于其基本假设的限制,包括线性回归及广义线性回归在内的各种常见的回归方法都有三个重大缺陷:(1)对于异常值非常敏感,极少量的异常值可能导致结…

网络I/O模型详解-一次了解全部(面试经常会问到相关知识)

前言 网络I/O模型的五种类型,其实在我们开发程序、设计程序、实现程序的方方面面都一直存在着,本文从实现原理、使用场景、优缺点、详细的流程图等方面进行深入的解释,帮助大家更好的理解常用的五种网络io模型,助力大家在工作、面…

面试150 合并K个升序链表

思路 对链表元素进行获取,然后进行sort()排序,最后通过空节点建立链表法重新建立一个有序的链表,返回头节点即可。 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val …

BitDistiller:通过自蒸馏释放 Sub-4-Bit 大语言模型的潜力

温馨提示: 本篇文章已同步至"AI专题精讲" BitDistiller:通过自蒸馏释放 Sub-4-Bit 大语言模型的潜力 摘要 大语言模型(LLMs)的规模不断扩大,在自然语言处理方面取得了令人瞩目的进展,但这也带来…

JavaScript 的 `querySelector` 方法详解

querySelector 是 JavaScript 中用于选择 DOM 元素的最强大方法之一,它允许你使用 CSS 选择器语法来查找元素。 基本语法 // 返回文档中第一个匹配指定 CSS 选择器的元素 element document.querySelector(selectors);// 从指定元素后代中查找 element parentEle…

第九讲:C++中的list与forward_list

目录 1、list的介绍及使用 1.1、构造及赋值重载 1.2、迭代器 1.3、空间 1.4、访问 1.5、修改 1.6、操作 2、迭代器失效 3、list的模拟实现 4、forward_list介绍与使用 4.1、构造及赋值重载 4.2、迭代器 4.3、容量 4.4、访问 4.5、修改 4.6、操作 5、迭代器的分…

华为云数据库 GaussDB的 nvarchar2隐式类型转换的坑

bigint 与 nvarchar2比较时发生隐式类型转换的坑 1. 案例分析 假设: table1有下面两个字段:id:bigint, source_id nvarchar2(50)数据库中id 的值一定大于 int4 的最大值,例如存在一条单据: id1947854462980792321&…

spring boot 集成netty,及其一些基本概念

一、基本概念 1、channel:通道,入站或者出站数据的载体 2、ChannelHandler:通道处理器,业务逻辑写在这里面,netty 5版本将入战和出站合并成了ChannelHandler 3、ChannelPipeline:通道里的管道,是一个或者多…

7月23日华为机考真题第一题100分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 bishipass.com 01. 创业投资收益优化 问题描述 K小姐刚刚大学毕业,手头有 m m m 元资金想要进行创业投资。她发现了 k k

HTML5 跨文档通信机制:postMessage API 详解与应用

postMessage 是 HTML5 规范中定义的跨文档通信(Cross-Document Messaging)API,其设计目的是解决不同源(协议、域名、端口任一存在差异)的窗口(如 iframe 嵌入的文档、window.open 创建的新窗口)…

Kafka——Kafka中的位移提交

引言:为什么位移提交至关重要?在Kafka的分布式消息系统中,消费者组(Consumer Group)通过分区分配机制实现负载均衡和容错,但如何准确记录每个消费者的消费进度,是保证消息不丢失、不重复的关键。…

java设计模式 -【装饰器模式】

装饰器模式的定义 装饰器模式(Decorator Pattern)是一种结构型设计模式,允许向一个现有对象动态添加新功能,同时不改变其结构。它通过创建包装对象(装饰器)来包裹原始对象,并在保持原始对象方法…

手写字体生成器:一键模拟真实笔迹

软件介绍 在自媒体创作领域,手写体文案因其独特的艺术感而备受青睐。然而,真实的手写往往效率低下且效果难以保证。今天为大家推荐一款专业的手写模拟软件,能够一键生成逼真的手写字体效果,完美解决创作效率与质量的双重需求。…

【Android】用 ViewPager2 + Fragment + TabLayout 实现标签页切换

文章目录【Android】用 ViewPager2 Fragment TabLayout 实现标签页切换一、引入:什么是 ViewPager2 ?二、ViewPager2 的基础使用1. 在布局文件 (activity_main.xml)中添加 ViewPager22. 制作一个 Fragment2.1 创建一个布局文件2.2 创建一个 Fragment 类…

嵌入式学习-土堆目标检测(4)-day28

Pytorch中加载自定义数据集 - VOC其中需要pip install xmltodict#voc_dataset.pyimport os import torch import xmltodict from PIL import Image from torch.utils.data import Dataset import torchvision.transforms as transformsclass VOCDataset(Dataset): def __init_…

Spring MVC上下文容器在Web容器中是如何启动的(源码深入剖析)?

文章目录一、双容器架构:MVC容器与根容器的关系二、启动全流程解析1. 启动流程全景图2. 初始化根容器(Root WebApplicationContext)2.1 Tomcat 中启动入口源码解析2.2 Spring 根上下文启动源码解析3. 初始化 MVC 容器(DispatcherS…

【iOS】编译和链接、动静态库及dyld的简单学习

文章目录编译和链接1️⃣核心结论:一句话区分2️⃣编译过程:从源代码到目标文件(.o)2.1 预处理(Preprocessing):“替换变量复制粘贴”2.2 编译(Compilation):…

金山办公WPS项目产品总监陈智新受邀为第十四届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会珠海金山办公软件有限公司WPS项目产品总监 陈智新先生 受邀为“PMO评论”主办的2025第十四届中国PMO大会演讲嘉宾,演讲议题为:中小团队PMO的成长之路,敬请关注!议题简要:在竞争激烈、需求多变的…