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

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

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

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

嵌入式Arm中斷調(diào)試方法

454398 ? 來源:alpha007 ? 作者:alpha007 ? 2022-12-08 15:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式軟件開發(fā)流程

參照嵌入式軟件的開發(fā)流程。第一步:工程建立和配置。第二步:編輯源文件。第三步:工程編譯和鏈接。第四步:軟件的調(diào)試。第五步:執(zhí)行文件的固化。

在整個流程中,用戶首先需要建立工程并對工程做初步的配置,包括配置處理器和配置調(diào)試設(shè)備。編輯工程文件,包括自己編寫的匯編和 C 語言源程序,還有工程編譯時需要編寫的鏈接腳本文件,調(diào)試過程中需要編寫存儲區(qū)映像文件和命令腳本文件,以及上電復(fù)位時的程序運行入口的啟動程序文件。

對后四種文件的理解很重要,其作用解釋如下。

(1) 鏈接腳本文件:在程序編譯時起作用。該文件描述代碼鏈接定位的有關(guān)信息,包括代碼段,數(shù)據(jù)段,地址段等,鏈接器必須使用該文件對整個系統(tǒng)的代碼做正確的定位。在 SDRAM 中調(diào)試程序、在 FLASH 中調(diào)試或固化后運行的鏈接腳本文件應(yīng)加以區(qū)分。(在 IDE 開發(fā)環(huán)境中使用擴(kuò)展名*.ld)

(2)命令腳本文件:在 SDRAM 中調(diào)試程序時起作用。在集成環(huán)境與目標(biāo)連接時、軟件調(diào)試過程中以及目標(biāo)板復(fù)位后,有時需要集成環(huán)境自動完成一些特定的操作,比如復(fù)位目標(biāo)板、清除看門狗、屏蔽中斷寄存器、存儲區(qū)映射等。這些操作可以通過執(zhí)行一組命令序列來完成,保存一組命令序列的文本文件稱為命令腳本文件(在 IDE 開發(fā)環(huán)境中使用擴(kuò)展名*.cs)。

(3)存儲區(qū)映像文件:在 SDRAM 中調(diào)試程序時起作用。在軟件調(diào)試過程中訪問非法存儲區(qū)在部分處理器和目標(biāo)板上會產(chǎn)生異常,如果異常沒有處理,則會導(dǎo)致軟件調(diào)試過程無法繼續(xù),為了防止以上問題并調(diào)整仿真器訪問速度以達(dá)到最合適的水平,提供這樣一種用于描述各個存儲區(qū)性質(zhì)的文件叫存儲區(qū)映像文件(在 IDE 開發(fā)環(huán)境中使用擴(kuò)展名*.map)。

在程序的調(diào)試過程中可以選擇使用存儲區(qū)映像文件*.map 和命令腳本文件*. cs 配合程序的調(diào)試。

(4) 啟動文件:它主要是完成一些和硬件相關(guān)的初始化的工作,為應(yīng)用程序做準(zhǔn)備。一般,啟動代碼的第一步是設(shè)置中斷和異常向量;第二步是完成系統(tǒng)啟動所必須的寄存器配置;第三步設(shè)置看門狗及用戶設(shè)計的部分外圍電路;第四步是配置系統(tǒng)所使用的存儲區(qū)分配地址空間;第五步是變量初始化;第六步是為處理器的每個工作模式設(shè)置棧指針;最后一步是進(jìn)入高級語言入口函數(shù)(Main 函數(shù))。

中斷程序設(shè)計

中斷調(diào)試方面可以采用類似矢量中斷動態(tài)處理方式,讓中斷對應(yīng)的確定地址代碼調(diào)轉(zhuǎn)到 RAM 的固定地址處,定義一個函數(shù)指針指向該固定地址,就可以隨時通過替換 RAM 固定地址處的代碼,實現(xiàn)動態(tài)改變中斷處理函數(shù)。

具體方法是:

(1)將中斷源函數(shù)指針定義在 RAM 中相對的固定地址,建立中斷矢量表;

void SetInterrupt (U32 vector, void (*handler)()){ InterruptHandlers[vector] = handler;}

(2)在程序中,調(diào)用具體某中斷源的中斷處理函數(shù);

如:SetInterrupt(IIC_INT,IICWriteIsr);

/* 聲明 IIC 中斷處理函數(shù),其中 IIC_INT 為 IIC 中斷源序號,IICWriteIsr 為 IIC 的寫中斷處理函數(shù) */

(3)在 0x18 處的 IRQ 或 0x1C 處的 FIQ 中斷入口函數(shù)中,獲取中斷源、清除中斷掛起標(biāo)志、通過已定義的中斷源函數(shù)指針進(jìn)入用戶具體某中斷處理程序。

void ISR_IrqHandler(void){ IntOffSet = (unsigned int)INTOFFSET; Clear_PendingBit(IntOffSet>>2) ;

(*InterruptHandlers[IntOffSet>>2])();// 調(diào)用具體某中斷處理程序}

采用動態(tài)的中斷處理方法,在中斷源較多的情況下,中斷響應(yīng)時間和程序性能得到優(yōu)化。另外,在調(diào)試方面,此處理方法具有便于跟蹤調(diào)試的優(yōu)點,并且根據(jù)需要,可以方便變換中斷處理函數(shù)。

中斷調(diào)試

軟件調(diào)試可以在 SDRAM 中或 FLASH 中進(jìn)行。在 SDRAM 中,讀寫方便,訪問速度快。一般軟件調(diào)試應(yīng)在 RAM 中完成,但當(dāng) RAM 空間小于 FLASH 程序空間,程序只能在 FLASH 運行和調(diào)試時,或者用戶希望了解程序在 FLASH 中實際運行情況時,就可以在 FLASH 中進(jìn)行程序調(diào)試。

進(jìn)行中斷調(diào)試時,應(yīng)注意中斷入口位于 SDRAM 中或 FLASH 中 0x18 或 0x1c 地址,鏈接腳本文件必須使整個系統(tǒng)的代碼正確定位于 0x0 起始處,但 SDRAM 或 FLASH 對應(yīng)的鏈接腳本文件及工程配置注意區(qū)別。

(1)程序在 SDRAM 中運行

在 SDRAM 中調(diào)試,使用 SDRAM 對應(yīng)的鏈接腳本文件。調(diào)試過程需要以下幾步:編譯、鏈接工程;連接仿真器和電路板;下載程序(在 IDE 開發(fā)環(huán)境中使用擴(kuò)展名*.elf);調(diào)試。

下載程序前必須啟動命令腳本文件完成前述的一些特定的操作,命令腳本文件的啟動在連接仿真器時自動進(jìn)行,其中存儲區(qū)映射應(yīng)與程序在 SDRAM 中運行時相同,保證整個系統(tǒng)的代碼正確定位于 0x0 起始處。下載程序的起始地址也為 0x0,下載成功后便可進(jìn)行調(diào)試工作。

(2)程序在 FLASH 中運行

在 FLASH 中調(diào)試,使用 FLASH 對應(yīng)的鏈接腳本文件。調(diào)試過程需要以下幾步:編譯、鏈接工程;連接仿真器和電路板;程序格式轉(zhuǎn)換(*.elf 轉(zhuǎn)換為*.bin);固化*.bin 程序;調(diào)試。

連接仿真器后不需要下載程序,存儲區(qū)映射由本身工程中啟動文件運行完成,不需要命令腳本文件。在本環(huán)境調(diào)試過程中,可以設(shè)置兩個硬件斷點。

(3)程序從 FLASH 中調(diào)到 SDRAM 中運行

在某些應(yīng)用場合,強(qiáng)調(diào)程序運行速度的情況下,希望程序在 SDRAM 中運行,這樣就需要將 FLASH 中存儲的程序,在系統(tǒng)上電后搬運到 SDRAM 某空間位置,然后自動運行。這種所謂的 Bootloader 技術(shù),在 DSP 系統(tǒng)中常被采用。

調(diào)試過程分兩步:

(a)首先將用戶程序在 SDRAM 中調(diào)試通過,然后將*.bin 文件固化到 FLASH 某一非 0 扇區(qū)地址空間;

(b) 將自己編寫的 Bootloader 搬運程序調(diào)試通過并將 Bootloader.bin 文件固化到 FLASH 的 0 扇區(qū)地址空間,搬運程序在系統(tǒng)上電后,將(a)中 FLASH 某一非 0 扇區(qū)地址空間存儲的程序,搬運到在 SDRAM 調(diào)試中同樣的空間位置,實現(xiàn)程序在 SDRAM 中運行的目的。

另外注意,因為用戶實際的程序中斷入口必須位于 FLASH 的 0x18 或 0x1c 地址,所以 Bootloader 搬運程序還應(yīng)具有中斷入口的跳轉(zhuǎn)功能,即把 PC 指針由此轉(zhuǎn)向處于 SDRAM 空間的中斷程序入口表,就是整個用戶程序被搬運到 SDRAM 的那一位置。

如:LDR PC, =HandleIRQ

// HandleIRQ 位于 SDRAM 空間中斷程序入口表

審核編輯黃昊宇

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

    關(guān)注

    5198

    文章

    20445

    瀏覽量

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

    關(guān)注

    7

    文章

    646

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    什么是嵌入式應(yīng)用開發(fā)?

    。 · ?醫(yī)療設(shè)備?:如心電圖儀、血壓計等。 開發(fā)工具和技術(shù) 嵌入式開發(fā)過程中常用的工具包括: · ?集成開發(fā)環(huán)境(IDE)?:用于編寫、編譯和調(diào)試代碼。 · ?編譯器?:將高級語言代碼轉(zhuǎn)換為機(jī)器語言
    發(fā)表于 01-12 16:13

    arm嵌入式主板優(yōu)缺點

    嵌入式主板是嵌入在設(shè)備里面做控制、數(shù)據(jù)處理使用的CPU板 ,常見的有兩類,即基于X86的嵌入式主板和基于RISC的ARM 嵌入式主板。今天我
    發(fā)表于 01-08 07:08

    中斷還是輪詢?嵌入式外設(shè)驅(qū)動的最佳實踐!

    老老實實輪詢,還是開個中斷來接收?項目調(diào)試時發(fā)現(xiàn),輪詢方式代碼好像更直觀,但CPU占用高得嚇人;而中斷看起來更“智能”,但又怕響應(yīng)不及時。這種困惑可以說是嵌入式開發(fā)的經(jīng)典問題。
    的頭像 發(fā)表于 01-04 09:15 ?374次閱讀
    <b class='flag-5'>中斷</b>還是輪詢?<b class='flag-5'>嵌入式</b>外設(shè)驅(qū)動的最佳實踐!

    分享一個嵌入式開發(fā)學(xué)習(xí)路線

    法,這些語法在嵌入式開發(fā)中至關(guān)重要。 2. 技能進(jìn)階期(2-3個月) 從51單片機(jī)過渡到主流的ARM Cortex-M系列(嵌入式就業(yè)核心平臺),學(xué)會使用STM32單片機(jī),掌握嵌入式
    發(fā)表于 12-04 11:01

    ARM嵌入式這樣學(xué)

    的內(nèi)核就是ARM內(nèi)核,它的主頻高很多,普通的都有幾百M。CPU緩存大,分有很多級的流水處理線,這樣大大提高了CPU利用率。這種IC的資源足以讓一個嵌入式操作系統(tǒng)正常跑起來,WINCE, LINUX
    發(fā)表于 12-04 07:48

    CW32嵌入式軟件開發(fā)的必備知識

    嵌入式系統(tǒng)中最常用的編程語言,因為它們提供了直接訪問硬件的能力,并且代碼執(zhí)行效率高。 了解匯編語言,用于編寫底層驅(qū)動、中斷處理程序以及性能要求極高的代碼段。 對其他編程語言如Python、Java等有
    發(fā)表于 11-28 07:48

    嵌入式需要掌握哪些核心技能?

    : 1)C語言與底層編程 核心地位:C語言是嵌入式開發(fā)的基石,需精通指針操作、內(nèi)存管理、位運算,直接操控硬件資源。 延伸技能:C++用于復(fù)雜項目架構(gòu)設(shè)計,匯編語言優(yōu)化底層性能(如啟動代碼、中斷處理
    發(fā)表于 10-21 16:25

    用是德MSO-X 3024T高效調(diào)試嵌入式系統(tǒng)的實戰(zhàn)指南

    嵌入式系統(tǒng)開發(fā)中,精準(zhǔn)調(diào)試是攻克技術(shù)難題的關(guān)鍵。是德科技MSO-X 3024T示波器憑借其創(chuàng)新的觸控交互與多功能集成設(shè)計,為嵌入式系統(tǒng)調(diào)試提供了全新解決方案,以下是基于該設(shè)備的
    的頭像 發(fā)表于 10-17 11:51 ?301次閱讀
    用是德MSO-X 3024T高效<b class='flag-5'>調(diào)試</b><b class='flag-5'>嵌入式</b>系統(tǒng)的實戰(zhàn)指南

    入行嵌入式應(yīng)該怎么準(zhǔn)備?

    、CAN和Ethernet等)以及它們的工作原理和使用方法是必不可少的。此外,對于無線通信協(xié)議(如Bluetooth、Wi-Fi和LoRa等)的了解也是有益的。 五、調(diào)試和故障排除能力嵌入式系統(tǒng)開發(fā)中經(jīng)
    發(fā)表于 08-06 10:34

    泰克示波器 MSO58 混合信號示波器在嵌入式系統(tǒng)調(diào)試中的核心技巧

    嵌入式系統(tǒng)的開發(fā)與調(diào)試中,泰克示波器 MSO58 混合信號示波器憑借其強(qiáng)大的功能和靈活的特性,成為工程師不可或缺的調(diào)試利器。掌握其核心調(diào)試技巧,能夠顯著提升
    的頭像 發(fā)表于 07-01 16:28 ?607次閱讀
    泰克示波器 MSO58 混合信號示波器在<b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>調(diào)試</b>中的核心技巧

    普源示波器MSO5074在嵌入式系統(tǒng)聯(lián)合調(diào)試中的高效實踐

    一、引言:嵌入式系統(tǒng)調(diào)試的挑戰(zhàn)與示波器的必要性 嵌入式系統(tǒng)作為核心控制單元廣泛應(yīng)用于汽車、醫(yī)療設(shè)備、工業(yè)自動化等領(lǐng)域,其開發(fā)涉及硬件設(shè)計、軟件編程及實時調(diào)試等多個環(huán)節(jié)。傳統(tǒng)的
    的頭像 發(fā)表于 06-20 13:45 ?738次閱讀
    普源示波器MSO5074在<b class='flag-5'>嵌入式</b>系統(tǒng)聯(lián)合<b class='flag-5'>調(diào)試</b>中的高效實踐

    嵌入式力矩電機(jī)的設(shè)計方法研究

    摘 要:介紹一種用于機(jī)床直驅(qū)部件的嵌入式力短電機(jī)的設(shè)計和電磁結(jié)構(gòu)優(yōu)化方法。為了使嵌入式力矩電機(jī)滿足機(jī)床內(nèi)部結(jié)構(gòu)緊湊的要求,必須具有較高的磁密。通過計算分析,得到不同長徑比、不同磁極對數(shù)、不同槽極比
    發(fā)表于 06-11 15:08

    嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式

    開發(fā)(設(shè)備驅(qū)動、內(nèi)核編譯) 4. 推薦的學(xué)習(xí)資源書籍:《嵌入式系統(tǒng)軟件設(shè)計基礎(chǔ)》《ARM Cortex-M系列嵌入式開發(fā)》在線課程:慕課網(wǎng)、B站嵌入式教學(xué)視頻實踐平臺:Arduino、
    發(fā)表于 05-15 09:29

    嵌入式適合自學(xué)嗎?

    構(gòu)、時鐘系統(tǒng)、電源管理、存儲映射等。 嵌入式必學(xué)技術(shù)點↓↓↓ 1硬件與軟件的結(jié)合 2實時性要求與資源限制 3跨領(lǐng)域知識整合 4調(diào)試與測試?yán)щy 二)缺乏專業(yè)指導(dǎo) 1)容易走彎路:自學(xué)嵌入式的過程中
    發(fā)表于 04-27 09:54

    泰克MDO32示波器在嵌入式系統(tǒng)調(diào)試中的關(guān)鍵技術(shù)分析

    隨著現(xiàn)代電子技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)在各個領(lǐng)域的應(yīng)用日益廣泛,從消費電子到工業(yè)控制,再到汽車電子和航空航天等。嵌入式系統(tǒng)的復(fù)雜性不斷增加,使得調(diào)試工作變得尤為重要。泰克MDO32示波器作為一款
    的頭像 發(fā)表于 03-19 13:51 ?899次閱讀
    泰克MDO32示波器在<b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>調(diào)試</b>中的關(guān)鍵技術(shù)分析