91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

在IAR Embedded Workbench中程序連上仿真器調(diào)試時不正常的情況

工程師鄧生 ? 來源:IAR愛亞系統(tǒng) ? 作者:IAR愛亞系統(tǒng) ? 2022-09-02 11:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

上期我們介紹了在IAR Embedded Workbench中程序連上仿真器調(diào)試時正常但是斷開仿真器單獨運行時不正常的情況。

嵌入式軟件開發(fā)中,有時會遇到程序斷開仿真器單獨運行時正常,但是連上仿真器調(diào)試時不正常。本文主要介紹在IAR Embedded Workbench中程序斷開仿真器單獨運行時正常但是連上仿真器調(diào)試時不正常的情況。

程序仿真調(diào)試和單獨運行的區(qū)別

37495768-29de-11ed-ba43-dac502259ad0.png

原因分析及對應(yīng)策略

1. 程序連上仿真器調(diào)試時Flash loader及mac宏會設(shè)置對應(yīng)的寄存器和程序開始運行是通過軟復(fù)位(Software Reset),而斷開仿真器單獨運行時需要程序設(shè)置對應(yīng)的寄存器和程序開始運行是通過硬復(fù)位 (Hardware Reset)。由于程序斷開仿真器單獨運行時正常,連上仿真器調(diào)試的時候不需要像之前那樣不使用Flash loader,只需要在調(diào)試開始之前進行一次硬復(fù)位 (Hardware Reset)(硬復(fù)位讓程序在連上仿真器調(diào)試時的初始狀態(tài)與斷開仿真器單獨運行時硬復(fù)位之后的初始狀態(tài)時一致的)。

下面主要介紹如何在IAR Embedded Workbench中連上仿真器調(diào)試時進行硬復(fù)位 (Hardware Reset):

下載完成之后讓程序停在復(fù)位向量而不是main函數(shù)

在IAR Embedded Workbench工程選項Options > Debugger > Setup >Run to選項:默認情況下會選中Run to main,調(diào)試器下載完成之后,程序會停在main函數(shù)。如果不勾選Run to,調(diào)試器下載完成之后,程序會停在復(fù)位向量,這樣就可以從復(fù)位向量開始調(diào)試。

37730fd6-29de-11ed-ba43-dac502259ad0.png37aa4ea6-29de-11ed-ba43-dac502259ad0.png

下載完成之后通過調(diào)試器進行Hardware Reset

如果對應(yīng)的硬件仿真器支持Hardware Reset并且對應(yīng)的硬件仿真器的nRESET引腳連接到MCU的復(fù)位引腳nRESET, 將Reset類型改成Hardware,然后Reset(模擬程序單獨運行時硬復(fù)位,并從復(fù)位向量開始調(diào)試)。

37c47d12-29de-11ed-ba43-dac502259ad0.png

下載完成之后通過外部Reset進行Hardware Reset

如果對應(yīng)的硬件仿真器不支持Hardware Reset或者并且對應(yīng)的硬件仿真器的nRESET引腳沒有連接到MCU的復(fù)位引腳nRESET, 可以通過外部Reset對MCU進行Hardware Reset。但是外部Reset之后,程序需要停在復(fù)位向量,然后就可以通過調(diào)試器調(diào)試。 如果對應(yīng)的MCU和硬件仿真器支持CORERESET選項 (Options > I-jet > Breakpoints > Catch exceptions > CORERESET),勾選CORERESET之后,調(diào)試時如果有外部Reset, 程序會停在復(fù)位向量。

注:Vector catch是arm支持的調(diào)試特性,更多信息請參考arm相關(guān)文檔。

388bc4da-29de-11ed-ba43-dac502259ad0.png38b76900-29de-11ed-ba43-dac502259ad0.png

如果對應(yīng)的MCU或者硬件仿真器不支持CORERESET選項,則需要在復(fù)位向量打斷點,調(diào)試時如果有外部Reset, 程序會停在復(fù)位向量。

39359dca-29de-11ed-ba43-dac502259ad0.png

2. 如果Library low-level interface implementation是通過semihosting (Options > General Options > Library low-level interface implementation > Semihosted > Via semihosting)實現(xiàn):

3976d0a6-29de-11ed-ba43-dac502259ad0.png

而semihosting又是通過SVC指令來實現(xiàn)(非Cortex-M的32位arm內(nèi)核):

3b205cf6-29de-11ed-ba43-dac502259ad0.png

如果程序里面也使用了SVC,那么連上仿真器調(diào)試的時候程序會停在SVC Handler:

3b4be4b6-29de-11ed-ba43-dac502259ad0.png

可以通過將Library low-level interface implementation 設(shè)置為None (Options > General Options > Library low-level interface implementation > None):

3b65b3aa-29de-11ed-ba43-dac502259ad0.png

3. 為了提高系統(tǒng)的健壯性,越來越多的MCU內(nèi)部集成了Watchdog, 可以讓MCU在軟件出錯的時候復(fù)位MCU。MCU內(nèi)部Watchdog控制寄存器一般會有選項可以配置Watchdog在調(diào)試模式是否使能:

3bdf2c08-29de-11ed-ba43-dac502259ad0.png3c07805e-29de-11ed-ba43-dac502259ad0.png

當Watchdog配置為調(diào)試模式不使能時,Watchdog在調(diào)試模式暫停時會停止,不會導(dǎo)致MCU復(fù)位。反之,當Watchdog配置為調(diào)試模式使能時,Watchdog在調(diào)試模式暫停時會繼續(xù)運行,從而可能會導(dǎo)致MCU復(fù)位(因為暫停的時候Watchdog得不到正常的刷新)。在單獨運行時,當軟件運行正常時,Watchdog會正常的刷新,所以不會復(fù)位。

將MCU內(nèi)部Watchdog配置成在調(diào)試模式不使能,這樣在調(diào)試時,暫停的時候Watchdog會停止,不會復(fù)位MCU。

總結(jié)

本文主要介紹了在IAR Embedded Workbench中程序斷開仿真器單獨運行時正常但是連上仿真器調(diào)試時不正常的情況。通過分析可能的原因及對應(yīng)的策略,可以解決斷開仿真器單獨運行時正常正常但是連上仿真器調(diào)試時不正常的問題。


審核編輯:劉清

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

    關(guān)注

    31

    文章

    5609

    瀏覽量

    130054
  • 仿真器
    +關(guān)注

    關(guān)注

    14

    文章

    1051

    瀏覽量

    87433
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    412

    瀏覽量

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

    關(guān)注

    1

    文章

    329

    瀏覽量

    25106

原文標題:程序單獨運行正常但是仿真調(diào)試不正常

文章出處:【微信號:IAR愛亞系統(tǒng),微信公眾號:IAR愛亞系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Renesas E1/E20 仿真器使用指南:從基礎(chǔ)到實戰(zhàn)

    Renesas E1/E20 仿真器使用指南:從基礎(chǔ)到實戰(zhàn) 嵌入式開發(fā)領(lǐng)域,一款高效可靠的仿真器對于調(diào)試程序、優(yōu)化性能至關(guān)重要。Renesas 的 E1/E20
    的頭像 發(fā)表于 03-02 15:10 ?154次閱讀

    Renesas E1/E20 仿真器:設(shè)計與調(diào)試的全方位指南

    Renesas E1/E20 仿真器:設(shè)計與調(diào)試的全方位指南 電子設(shè)計領(lǐng)域,仿真器調(diào)試和驗證微控制
    的頭像 發(fā)表于 02-28 15:45 ?175次閱讀

    Renesas E1/E20仿真器:全面解析與應(yīng)用指南

    Renesas E1/E20 仿真器:全面解析與應(yīng)用指南 引言 嵌入式系統(tǒng)開發(fā)領(lǐng)域,仿真器是不可或缺的工具之一。Renesas的E1/E20仿真器憑借其強大的功能和廣泛的適用性,
    的頭像 發(fā)表于 02-28 11:30 ?340次閱讀

    瑞薩E1/E20仿真器:設(shè)計、調(diào)試與使用全解析

    瑞薩E1/E20仿真器:設(shè)計、調(diào)試與使用全解析 嵌入式系統(tǒng)開發(fā)中,仿真器是不可或缺的工具,它能幫助工程師高效地進行硬件調(diào)試
    的頭像 發(fā)表于 02-11 17:05 ?616次閱讀

    Renesas E1/E20 仿真器:設(shè)計與調(diào)試全解析

    Renesas E1/E20 仿真器:設(shè)計與調(diào)試全解析 嵌入式系統(tǒng)開發(fā)的廣闊領(lǐng)域中,仿真器扮演著至關(guān)重要的角色,它是工程師們調(diào)試和優(yōu)化代碼
    的頭像 發(fā)表于 02-09 10:30 ?441次閱讀

    關(guān)于CW32 互補PWM 程序調(diào)試的疑問求解

    調(diào)試CW32 輸出互補PWM 的程序時,發(fā)現(xiàn)在線調(diào)試時波形輸出正常,但是當把程序在下到CW32
    發(fā)表于 12-08 07:02

    單片機系統(tǒng)硬件的調(diào)試方法

    損壞集成塊,加電之后.對各個插件上引腳的電位進行檢查.檢查VCC和GND的電位.一般情況下電位為5-4.8V。如果屬于高壓通電,則要調(diào)試聯(lián)機仿真器.經(jīng)檢查
    發(fā)表于 12-03 06:10

    如何使用CMSIS DAP仿真器調(diào)試,通過NucleiStudio調(diào)試蜂鳥SOC

    如標題所示,我們分享如何使用CMSIS DAP仿真器調(diào)試,通過NucleiStudio調(diào)試蜂鳥SOC 我們先介紹一下CMSIS DAP仿真器: 他的功能如下: 可以看到,它支持JT
    發(fā)表于 10-21 12:05

    如何在 IAR Embedded Workbench for ARM 開發(fā)環(huán)境中啟用可配置數(shù)據(jù)閃存并設(shè)置大?。?/a>

    如何在 IAR Embedded Workbench for ARM 開發(fā)環(huán)境中啟用可配置數(shù)據(jù)閃存并設(shè)置大???
    發(fā)表于 08-26 07:49

    請問如何在 IAR Embedded Workbench for ARM 開發(fā)環(huán)境中啟用可配置數(shù)據(jù)閃存并設(shè)置大?。?/a>

    如何在 IAR Embedded Workbench for ARM 開發(fā)環(huán)境中啟用可配置數(shù)據(jù)閃存并設(shè)置大???
    發(fā)表于 08-20 06:23

    「芯生態(tài)」杰發(fā)科技AC7870攜手IAR開發(fā)工具鏈,助推汽車電子全棧全域智能化落地

    IAR Embedded Workbench for Arm已全面支持杰發(fā)科技AutoChips車規(guī)級MCU AC7870,為其提供涵蓋開發(fā)、調(diào)試、優(yōu)化等一站式服務(wù)
    的頭像 發(fā)表于 07-22 12:06 ?704次閱讀
    「芯生態(tài)」杰發(fā)科技AC7870攜手<b class='flag-5'>IAR</b>開發(fā)工具鏈,助推汽車電子全棧全域智能化落地

    第三章 仿真器介紹

    本篇文章我們介紹了W55MH32板載的WIZ-Link仿真器的使用方法,讓我們一起插上USB線開始下載、調(diào)試程序吧!
    的頭像 發(fā)表于 05-21 11:54 ?933次閱讀
    第三章 <b class='flag-5'>仿真器</b>介紹

    FMD仿真器燒錄說明

    FMD仿真器燒錄,離線燒錄說明
    發(fā)表于 04-30 17:27 ?2次下載

    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件函數(shù)與變量內(nèi)存布局優(yōu)化精控方法

    嵌入式軟件開發(fā)領(lǐng)域,MCU芯片軟件的架構(gòu)設(shè)計與內(nèi)存布局的精細規(guī)劃對系統(tǒng)性能和穩(wěn)定性起著關(guān)鍵作用。本文檔聚焦于IAR Embedded Workbench環(huán)境下,為自研MCU芯片軟件提
    的頭像 發(fā)表于 04-30 16:38 ?775次閱讀
    基于 <b class='flag-5'>IAR</b> <b class='flag-5'>Embedded</b> <b class='flag-5'>Workbench</b> 的自研 MCU 芯片軟件函數(shù)與變量內(nèi)存布局優(yōu)化精控方法

    i.MX RT 1176上正常運行代碼時與使用IAR調(diào)試代碼時存在一些奇怪的差異,為什么?

    重置處理時似乎將其重置向量中找到的值插入堆棧指針,這確認了一般的 ARM 架構(gòu),但在這種情況下會導(dǎo)致行為差異,因為它不在預(yù)期的位置 - 它與調(diào)試器一起
    發(fā)表于 03-17 07:26