基于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
英文地址,請注明出處:http://en.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的成長之路,敬請關注!議題簡要:在競爭激烈、需求多變的…