哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Ozone調(diào)試基于nRF9160 Zephyr應(yīng)用程序

麥克泰技術(shù) ? 來源:麥克泰技術(shù) ? 2025-02-25 17:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Ozone是SEGGER免費的嵌入式軟件調(diào)試器。它是一個強大的工具,可以讓你深入了解嵌入式系統(tǒng)中發(fā)生的事情。它在調(diào)試nRF9160 Zephyr應(yīng)用程序時特別有用。整理多個線程和多映像構(gòu)建可能很困難,但這就是你想要的工具。

在我們之前的博文《采取下一步:在Zephyr上使用SEGGER Ozone和SystemView進行調(diào)試》中,Chris Gammell撰寫了有關(guān)如何設(shè)置SEGGER Ozone項目,以調(diào)試在i.MX RT1060評估套件上運行的Zephyr應(yīng)用程序。這是在Ozone中調(diào)試Zephyr應(yīng)用程序和分析RTOS運行時行為的一個很好的介紹。

當我嘗試設(shè)置一個類似的Ozone項目來調(diào)試Nordic nRF9160 SIP開發(fā)板時,我在此過程中遇到了一些困難。今天,我將分享我所學到的知識。

在本文中,我將介紹如何:

? 配置nRF9160 Zephyr應(yīng)用程序以進行線程感知調(diào)試。

? 使用新建項目向?qū)閚RF9160創(chuàng)建Ozone項目。

? 修改Ozone工程以支持調(diào)試nRF9160多映像構(gòu)建。

硬件配置

在下面的示例中,我將使用Nordic nRF9160 DK板。這款來自Nordic的開發(fā)套件在電路板中內(nèi)置了SEGGER J-Link OB調(diào)試器,因此不需要外部J-Link調(diào)試器來跟進示例(SEGGER Ozone需要J-Link支持)。

b0f4feb0-f325-11ef-9310-92fbcf53809c.png

Zephyr中的線程感知的支持

在使用Golioth Zephyr SDK構(gòu)建的典型Zephyr應(yīng)用程序中,將有多個線程。例如,一個用于應(yīng)用程序的主循環(huán),一個用于Golioth系統(tǒng)客戶端,其他用于UART shell、日志記錄子系統(tǒng)、網(wǎng)絡(luò)管理等。

SEGGER為Ozone提供了一個Zephyr RTOS插件,可以顯示每個線程的狀態(tài),但它要求Zephyr固件在構(gòu)建時支持線程感知調(diào)試。Zephyr提供了一個CONFIG_DEBUG_THREAD_INFO Kconfig符號,該符號指示內(nèi)核維護所有線程的列表,線程名稱在Ozone中可見。

雖然你可以簡單地將CONFIG_DEBUG_THREAD_INFO=y添加到應(yīng)用程序的prj.conf文件中,但你可能只想在構(gòu)建時啟用這些額外的調(diào)試信息。我們可以創(chuàng)建一個額外的debug.conf Kconfig文件,只有當我們將-DEXTRA_CONF_FILE=debug.conf參數(shù)傳遞給構(gòu)建系統(tǒng)時,該文件才會被合并。

由于本文是關(guān)于使用Ozone進行線程感知調(diào)試的,因此我們將使用nRF Connect SDK Zephyr存儲庫中的zephyr/samples/basic/threads/應(yīng)用程序作為本文的示例應(yīng)用程序。

如果這是你第一次構(gòu)建Zephyr示例應(yīng)用程序之一,請確保先完成nRF Connect SDK安裝,并確保你的開發(fā)環(huán)境設(shè)置正確。

如何啟用線程感知

首先創(chuàng)建一個zephyr/samples/basic/threads/debug.conf文件并添加以下命令行:

zephyr/samples/basic/threads/debug.conf

CONFIG_DEBUG_THREAD_INFO=y
# CONFIG_DEBUG_THREAD_INFO needs the heap memory pool to
# be defined for this app
CONFIG_HEAP_MEM_POOL_SIZE=256

接下來,構(gòu)建固件,指定需要的debug.conf文件并合并到構(gòu)建配置中:

cd /
west build -p -b nrf9160dk_nrf9160_ns zephyr/samples/basic/threads/ -- -
DEXTRA_CONF_FILE="debug.conf"

如果構(gòu)建成功完成,你將看到我們在Ozone中啟動調(diào)試會話所需的build/zephyr/zephyr.elf 文件

創(chuàng)建Ozone項目

現(xiàn)在我們已經(jīng)構(gòu)建了固件,可以啟動Ozone并使用New Project Wizard創(chuàng)建一個Ozone項目:

b18c1278-f325-11ef-9310-92fbcf53809c.png

選擇nRF9160_xxAA芯片。

b1a14698-f325-11ef-9310-92fbcf53809c.png

選擇使用J-Link仿真器。

b1bd57d4-f325-11ef-9310-92fbcf53809c.png

選擇build/zephyr/zephyr.elf該文件在前面討論中構(gòu)建生成。

b1c939be-f325-11ef-9310-92fbcf53809c.png

其他這些選擇缺省。

b1e6d38e-f325-11ef-9310-92fbcf53809c.png

單擊“Finish”后,您將看到Ozone項目窗口出現(xiàn)。在“Console”窗口中,運行以下命令以加載Zephyr RTOS插件:

Project.SetOSPlugin("ZephyrPlugin.js");

b20115f0-f325-11ef-9310-92fbcf53809c.png

現(xiàn)在,應(yīng)該在Ozone項目中看到一個新的“Zephyr”窗口(如果沒有,請單擊“View”→“Zephyr”以顯示該窗口):

b21d8622-f325-11ef-9310-92fbcf53809c.png

最后,保存項目文件,點擊“File”→“Save Project as…”:

b22c161a-f325-11ef-9310-92fbcf53809c.png

啟動調(diào)試會話

現(xiàn)在我們已經(jīng)配置了Ozone項目,我們可以啟動調(diào)試會話了。

點擊“Debug”→“Start Debug Session”→“Download& Reset Pro”

b2544478-f325-11ef-9310-92fbcf53809c.png

奇怪的是,當固件開始運行時,將看到一個彈出窗口,指示目標已停止在HardFault異常狀態(tài)!

b26836cc-f325-11ef-9310-92fbcf53809c.png

此時,您可能想知道這里發(fā)生了什么......

這里有一個提示:答案與多映像構(gòu)建有關(guān)。

缺少的步驟:

燒入合并的文件映像

你可能已經(jīng)注意到,我們傳遞給west build(nrf9160dk_nrf9160_ns)的board參數(shù)以_ns結(jié)尾。此后綴表示固件將使用Trusted Firmware-M(TF-M)構(gòu)建。這是ARMIoT安全框架的參考實現(xiàn),稱為平臺安全架構(gòu)(PSA)。

TF-M使用nRF9160的Cortex-M33 MCU的ARM TrustZone安全功能將MCU劃分為安全處理環(huán)境(SPE)和非安全處理環(huán)境(NSPE)。

簡而言之,引導過程的工作原理如下:

1. 當MCU啟動時,它開始在安全環(huán)境(SPE)中執(zhí)行。

2. 引導過程可以選擇從使用NSIB和/或MCUboot的安全引導加載程序鏈開始。

3. 如果使用,引導加載程序會啟動TF-M,這會將MCU內(nèi)存和外設(shè)的一部分配置為非安全。

4. TF-M啟動在非安全環(huán)境(NSPE)中運行的Zephyr應(yīng)用程序。

當我們針對_ns構(gòu)建目標進行構(gòu)建時,TF-M鏡像會自動構(gòu)建并與Zephyr應(yīng)用程序鏈接。如果查看build/zephyr/輸出目錄,您將看到一個名為merged.hex的文件,這是一個合并文件,其中包含MCUboot引導加載程序(可選)、TF-M安全映像和非安全Zephyr應(yīng)用程序。

修復(fù)Ozone項目文件

我們將直接在Ozone項目文件中進行一些更改,該文件可以通過單擊“File”→“Edit Project File”在Ozone中打開:

b29a3d3e-f325-11ef-9310-92fbcf53809c.png

燒寫合并的映像

導航到Ozone項目文件的TargetDownload部分并添加以下內(nèi)容,以將Ozone配置為刷寫合并的圖像(更改路徑以匹配項目中的合并映像文件):

/*********************************************************************
*
* TargetDownload
*
* Function description
* Replaces the default program download routine. Optional.
*
**********************************************************************
*/
void TargetDownload(void)
{
Exec.Download("$(ProjectDir)/build/zephyr/merged.hex");
}

修復(fù)矢量表和PC地址

導航到Ozone項目文件的_SetupTarget部分,然后進行以下更改:

1. 將vector table地址設(shè)置為0

2. 從vector表中讀取入口點程序計數(shù)器地址

/*********************************************************************
*
* _SetupTarget
*
* Function description
* Setup the target.
* Called by AfterTargetReset() and AfterTargetDownload().
*
* Auto-generated function. May be overridden by Ozone.
*
**********************************************************************
*/
void _SetupTarget(void) {
unsigned int SP;
unsigned int PC;
unsigned int VectorTableAddr;
VectorTableAddr = 0;
//
// Set up initial stack pointer
//
SP = Target.ReadU32(VectorTableAddr);
if (SP != 0xFFFFFFFF) {
Target.SetReg("SP", SP);
}
//
// Set up entry point PC
//
PC = Target.ReadU32(VectorTableAddr + 4);
if (PC != 0xFFFFFFFF) {
Target.SetReg("PC", PC);
} else {
Util.Error("Project script error: failed to set up entry point PC", 1);
}
}

保存項目文件時,您應(yīng)該會看到一個模式彈出窗口,詢問您是否要重新加載項目。

選擇“Yes”:

b2b5a236-f325-11ef-9310-92fbcf53809c.png

啟動調(diào)試會話

b2544478-f325-11ef-9310-92fbcf53809c.png

映像文件燒入到芯片后,你應(yīng)該可以看到調(diào)試器停在main位置:

b2dfa69e-f325-11ef-9310-92fbcf53809c.png

點擊“Debug”→“Continue”:

b2fd4ad2-f325-11ef-9310-92fbcf53809c.png

這次固件可以正常運行沒有出現(xiàn)異常。

總結(jié)

希望這可以幫助你開始使用Ozone調(diào)試nRF9160。nRF9160在Zephyr項目中獲得了完全支持,并在Golioth物聯(lián)網(wǎng)設(shè)備管理平臺中具有最高級別的支持。借助Golioth,你可以連接和保護設(shè)備、將傳感器數(shù)據(jù)發(fā)送到Web、無線更新固件,以及使用IoT云擴展你的覆蓋度。

麥克泰技術(shù)是SEGGER產(chǎn)品在中國的代理商,具有超過20年嵌入式實時操作系統(tǒng)和工具的市場、服務(wù)和培訓經(jīng)驗,已經(jīng)錄制許多SEGGER視頻課程撰寫博客文章,了解更多產(chǎn)品聯(lián)系麥克泰技術(shù)Info@bmrtech.com。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5208

    文章

    20620

    瀏覽量

    336660
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    653

    瀏覽量

    35862
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6398

    瀏覽量

    120431
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3346

    瀏覽量

    60402
  • Zephyr
    +關(guān)注

    關(guān)注

    1

    文章

    61

    瀏覽量

    6624

原文標題:使用Ozone調(diào)試基于nRF9160 Zephyr應(yīng)用程序

文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    恩智浦分享Zephyr調(diào)試技巧

    前面幾期中,我們著重給大家介紹了如何搭建Zephyr開發(fā)環(huán)境,以及如何添加自己的應(yīng)用代碼。今天讓我們開始一個新的篇章:Zephyr調(diào)試技巧以及介紹Ozone進行
    的頭像 發(fā)表于 03-13 09:05 ?2602次閱讀

    Nordic nRF9160 SiP LTE-M/NB-IoT模塊成功通過一系列主要資格和認證

    Nordic Semiconductor宣布其nRF9160 SiP LTE-M/NB-IoT和GPS蜂窩IoT模塊已成功地通過了一系列主要資格和認證。
    發(fā)表于 07-05 16:20 ?6137次閱讀

    9160 gps 定位需要多長時間呢?

    nRF9160 在 GNSS(GPS)聯(lián)網(wǎng)獲取定位時,所需時間主要取決于“首次定位時間”(Time To First Fix, TTFF)。在典型的冷啟動(無輔助數(shù)據(jù)、無歷史信息)下,nRF9160
    發(fā)表于 05-27 23:02

    Nordic的91thingy里芯片是nRF9160還是nRF9151呢

    簡單來說: Nordic Thingy:91 (初代)用的是 nRF9160 SiP Nordic Thingy:91 X (2025年新出的升級版)用的是 nRF9151 SiP ? 具體區(qū)別
    發(fā)表于 01-30 20:08

    NRF9160低功耗蜂窩IOT方案

    nRF9160 整合應(yīng)用 MCU、全 LTE 數(shù)據(jù)機、接收器前端 (RF) 和電源管理,以 10 mm x 16 mm x 1 mm 的封裝,為行動 IoT (cIoT) 提供小型解決方案。此元件
    發(fā)表于 01-23 15:56

    SEGGER Ozone調(diào)試器使用攻略!

    )設(shè)置PC和堆棧指針的初始值如何獲取,可以從文件中獲取或者手動指定。如無特殊要求,保持默認選擇即可。(5)燒錄文件并進入調(diào)試工作窗口。點擊左上角的綠色圖標,下載并復(fù)位應(yīng)用程序。圖標右側(cè)的箭頭為常規(guī)的全速
    發(fā)表于 08-11 17:10

    你們有使用過Nordic的NRF9160來做遠距離通訊嗎?

    針對出口到歐美的手表,需要GPS+LTE-M傳輸數(shù)據(jù),手表尺寸要小,而且足夠省電,是否有合適的模塊呢? 大家看看NRF9160是否可以符合使用呢?Nordic Semiconductor宣布推出
    發(fā)表于 05-14 15:11

    如何在Eclipse中配置K64F Zephyr/項目的調(diào)試?

    Target 說:zephyr/zephyr.elf。我的方法是復(fù)制本機項目的調(diào)試配置,而不是更改條目以使其適合 Zephyr 構(gòu)建的應(yīng)用程序
    發(fā)表于 03-29 08:58

    如何使用ozone調(diào)試雙核應(yīng)用?

    在第二個core的ozone中, 點擊開始調(diào)試, 就不正常了
    發(fā)表于 05-26 08:11

    Nordic nRF9160 SiP提供了強大的數(shù)據(jù)處理能力 并能透過云端進行分析

    Nordic Semiconductor宣布總部位于日本東京的能源解決方案企業(yè)West Group,選擇具有整合式LTE-M/NB-IoT調(diào)制解調(diào)器和GPS的nRF9160低功耗系統(tǒng)級封裝(SiP
    的頭像 發(fā)表于 03-10 14:55 ?5133次閱讀

    nRF9160 SiP認證世界最大型NB-IoT網(wǎng)絡(luò)

    nRF9160 SiP認證可讓物聯(lián)網(wǎng)產(chǎn)品開發(fā)人員受惠于世界最大型NB-IoT網(wǎng)絡(luò)。 *我們屢獲殊榮并且集成了LTE-M/NB-IoT調(diào)制解調(diào)器和GPS的nRF9160低功耗系統(tǒng)級封裝(SiP)產(chǎn)品
    的頭像 發(fā)表于 10-19 10:12 ?4153次閱讀

    如何開發(fā)你的第一個NCS(Zephyr)應(yīng)用程序

    ,那么推薦使用nRF5 SDK 如果你選擇的是Nordic最新產(chǎn)品系列,比如nRF53或者nRF9160,那么請選擇NCS SDK 還有一種特殊情況,雖然你選擇的是nRF52芯片,但需
    的頭像 發(fā)表于 12-29 09:47 ?1.1w次閱讀
    如何開發(fā)你的第一個NCS(<b class='flag-5'>Zephyr</b>)<b class='flag-5'>應(yīng)用程序</b>

    Nordic Semiconductor宣布推出nRF 云定位服務(wù)

    服務(wù)”,這項云產(chǎn)品使得客戶能夠為自身的基于nRF9160系統(tǒng)級封裝(SiP)的蜂窩物聯(lián)網(wǎng)設(shè)備獲取更豐富、快速和準確的商業(yè)定位服務(wù)。 nRF 云定位服務(wù)建立在Nordic多功能蜂窩物聯(lián)網(wǎng)連接使能器
    的頭像 發(fā)表于 08-16 15:22 ?3183次閱讀

    如何使用Ozone調(diào)試功能

    Ozone是用于J-link和J-Trace的多平臺調(diào)試,分析工具。獨立的圖形化界面,可加載IAR,Keil,Gcc,Clang/LLVM等工具鏈生成的Elf/Dwarf可執(zhí)行文件,進行C/C++
    的頭像 發(fā)表于 09-06 11:26 ?7634次閱讀

    Nordic超低功耗窄帶蜂窩nRF9160的典型應(yīng)用

    nRF9160 在緊湊的 10x16x1.04 mm 的 SIP 封裝中集成了 ArmCortex-M33 應(yīng)用處理器、集成 RF 前端(RFFE)的多模式 LTE-M/NB-IoT 調(diào)制解調(diào)器、GPS 和電源管理。
    發(fā)表于 10-13 14:30 ?1672次閱讀
    南充市| 龙川县| 眉山市| 灵台县| 安塞县| 武定县| 浏阳市| 会昌县| 呼伦贝尔市| 兴业县| 肇庆市| 杨浦区| 屏边| 洪雅县| 曲阜市| 四子王旗| 满洲里市| 江川县| 霍邱县| 裕民县| 南召县| 化隆| 桂阳县| 丰宁| 烟台市| 甘泉县| 南阳市| 紫云| 芜湖县| 大关县| 搜索| 亳州市| 剑河县| 手机| 上犹县| 息烽县| 大港区| 固镇县| 齐河县| 柳州市| 永胜县|