日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年08月02日(星期六)

2020年08月02日 | 嵌入式ARM如何中斷調試

發(fā)布者:數字航海家 來源: elecfans關鍵字:嵌入式  ARM  中斷調試 手機看文章 掃描二維碼
隨時隨地手機看文章

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

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


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

嵌入式ARM如何中斷調試

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

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

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

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

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

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


中斷程序設計

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


具體方法是:

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

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

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

如: SeTInterrupt(IIC_INT,IICWriteIsr);

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

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

void ISR_IrqHandler(void){ IntOffSet = (unsigned int)INTOFFSET; Clear_PendingBit(IntOffSet》》2) ;(*InterruptHandlers[IntOffSet》》2])();// 調用具體某中斷處理程序}

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

中斷調試

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

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

(1)程序在SDRAM中運行

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

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

(2)程序在FLASH中運行

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

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

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

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

調試過程分兩步:

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

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

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


如:LDR PC, =HandleIRQ

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

關鍵字:嵌入式  ARM  中斷調試 引用地址:嵌入式ARM如何中斷調試

上一篇:Keil MDK和IAR 兩款ARM開發(fā)工具對比
下一篇:基于ARM11的CES-EDU6410教學平臺

推薦閱讀

北京時間8月2日上午消息,特斯拉正在自己開發(fā)一個名叫“Hardware 3”的硬件,這將用在Model S、Model X以及Model 3上來實現自動駕駛功能。“我們私下里籌備這個事情已經有兩三年時間了,”馬斯克在今早的財報電話會議上說道。“我想是時候可以將消息公之于眾了。”至今為止,特斯拉一直依靠的是英偉達Drive平臺。那么現在為什么要進行調整呢?特斯拉表...
7月31日,會員電商云集的“華中智能倉”(一期)在湖北鄂州開倉,這也是云集首個自建的智能倉,從倉庫建設、管理維護到數據存儲,均實現自主掌握。該倉緊鄰湖北武漢,將服務于湖北、河南、湖南、江西等華中地區(qū)用戶。“華中智能倉”的啟用,標志著云集在進軍自動化、智能化、數字化倉儲物流的道路上,又邁出關鍵一步。據了解,“華中智能倉”(一期)是云...
AD轉換我們先看看R1和R2,R2是個可調電阻如果我們將R2變大RA1這個管腳上的電壓就越大。R2變小RA1這個管腳上的電壓就越小。那單片機是怎么知道電壓變化的。這就需要AD轉換。就是將模擬量轉換成數字量。PIC單片機如何表示電壓PIC用十位二進制位的數來表示電壓,也就是數值0~1023來表示電壓。那比如現在這個數值是400那這代表多少的電壓?這就要根據參考電壓...
8月2日,國軒高科消息稱,7月27日,國軒高科股份有限公司與晶科能源股份有限公司簽署戰(zhàn)略合作協(xié)議。根據協(xié)議,國軒高科將與晶科能源共同開展“光伏+儲能”系統(tǒng)的合作研發(fā)生產及銷售,聚焦光伏、儲能領域,為客戶提供一站式、綜合性解決方案。為應對未來市場環(huán)境的變化,積極把握全球碳中和帶來的清潔能源市場需求,根據協(xié)議,國軒高科將與晶科能源強強聯(lián)合...

史海拾趣

問答坊 | AI 解惑

多功能隨身電源設計

引言 現在,市場上可移動的電子設備越來越多,設備的電源容量和功耗卻遠遠不能滿足市場的要求,對日常生活,特別是戶外活動造成諸多不便。為此,本文設計了一種多功能、高效、低功耗、安全的隨身電源,以滿足戶外需求,將有很大的實用價值。 多功 ...…

查看全部問答∨

華為高速數字電路設計教材

華為高速數字電路設計教材,希望對大家有用…

查看全部問答∨

請問下24bit的lvds發(fā)送芯片用于點亮18bit的LCD屏

我用的是THC63LVDM83R和DS90C383相似, 要點亮一個18bit的LCD屏, RGB等信號怎么接法? 按照24bit的接法可以點亮18bit的屏嗎?…

查看全部問答∨

各位大蝦,利用VHDL語言編寫一數字時鐘的代碼

要求一定得有抗抖動的程序,不需要報時,但要有調節(jié)時分的功能,只有兩個按鍵,一個置位,另一個是調分且調時,謝謝了 ,郵箱809257115@qq.com…

查看全部問答∨

SMDK2440 官方BSP 移植過程

各位好 ! 我把 官方的 SMDK2440 bsp 移植到 YL2440 開發(fā)板上,現在 eboot , lcd  ,touch  cs8900 ,sd , usb host ,都移植好了,但是 我的 usb slave 也移植了,改變了管腳控制。但是 只要 我把 LCD 禁止輸出 s2440LCD->L ...…

查看全部問答∨

子線程中調用DeviceIoControl, ReadFile, Writefile的問題

請問     子線程中調用DeviceIoControl或者ReadFile,WriteFile會不會阻塞主線程     為什么呢     我在一個qq群上問過,有人說肯定會,原因是“因為這些函數都是同步函數(WinCE中),不是異步函數,在函數沒有執(zhí) ...…

查看全部問答∨

wince5.0中,GetServiceHandle函數的使用問題

為什么我在APP中用GetServiceHandle函數時,不能得到服務程序的句柄呢?返回值是0xffffffff. 在WINCE5.0下面,要怎么樣來獲得一個獨立服務程序的句柄啊?急啊,請高手指教啊,謝謝了.…

查看全部問答∨

【C8051F數字濕度計專題二】——點亮OLED顯示

功夫不負有心人,經過幾天的緊張焊接調試,今天,就在七夕的這個晚上,我和我的濕度計板子約會了,我耐心的焊接,仔細的尋找錯誤,小心的修正,終于,電路部分算是基本調通了,我讓小板子羞嗒嗒滴點亮了。。。。。   本來說是要“周末打個大 ...…

查看全部問答∨

Uncompressing Linux....... done, booting the kernel就不動了的一個可能原因

最近搞陽初2410的板子,做的U-BOOT1.2.0能從NAND FLASH啟動起來了,但是引導內核真是搞怪,前幾天還能引導的,這幾天又不能引導了,但是這些內核用VIVI都是能引導的,搞得頭痛死了,總是死在下面這個地方: Uncompressing Linux.................. ...…

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved