wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4597|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

嵌入式技巧:ARM的三種中斷調(diào)試方法介紹

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:199435 發(fā)表于 2020-5-20 09:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
參照嵌入式軟件的開發(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)境中使用擴展名*.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)境中使用擴展名*.cs)。

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

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

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

中斷程序設(shè)計

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

具體方法是:嵌入式技巧:ARM的三種中斷調(diào)試方法介紹
嵌入式軟件開發(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)境中使用擴展名*.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)境中使用擴展名*.cs)。

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

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

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

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

進行中斷調(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)境中使用擴展名*.elf);調(diào)試。

下載程序前必須啟動命令腳本文件完成前述的一些特定的操作,命令腳本文件的啟動在連接仿真器時自動進行,其中存儲區(qū)映射應(yīng)與程序在SDRAM中運行時相同,保證整個系統(tǒng)的代碼正確定位于0x0起始處。下載程序的起始地址也為0x0,下載成功后便可進行調(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)用場合,強調(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中運行的目的。
嵌入式技巧:ARM的三種中斷調(diào)試方法介紹
嵌入式軟件開發(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)境中使用擴展名*.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)境中使用擴展名*.cs)。

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

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

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

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

進行中斷調(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)境中使用擴展名*.elf);調(diào)試。

下載程序前必須啟動命令腳本文件完成前述的一些特定的操作,命令腳本文件的啟動在連接仿真器時自動進行,其中存儲區(qū)映射應(yīng)與程序在SDRAM中運行時相同,保證整個系統(tǒng)的代碼正確定位于0x0起始處。下載程序的起始地址也為0x0,下載成功后便可進行調(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)用場合,強調(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空間中斷程序入口表

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

如:LDR PC, =HandleIRQ
  // HandleIRQ位于SDRAM空間中斷程序入口表


(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ù)指針進入用戶具體某中斷處理程序。

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

進行中斷調(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)境中使用擴展名*.elf);調(diào)試。

下載程序前必須啟動命令腳本文件完成前述的一些特定的操作,命令腳本文件的啟動在連接仿真器時自動進行,其中存儲區(qū)映射應(yīng)與程序在SDRAM中運行時相同,保證整個系統(tǒng)的代碼正確定位于0x0起始處。下載程序的起始地址也為0x0,下載成功后便可進行調(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)用場合,強調(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空間中斷程序入口表
第三步:工程編譯和鏈接。第四步:軟件的調(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)境中使用擴展名*.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)境中使用擴展名*.cs)。

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

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

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

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

進行中斷調(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)境中使用擴展名*.elf);調(diào)試。

下載程序前必須啟動命令腳本文件完成前述的一些特定的操作,命令腳本文件的啟動在連接仿真器時自動進行,其中存儲區(qū)映射應(yīng)與程序在SDRAM中運行時相同,保證整個系統(tǒng)的代碼正確定位于0x0起始處。下載程序的起始地址也為0x0,下載成功后便可進行調(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)用場合,強調(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空間中斷程序入口表

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
日韩久久久久久久久久久| 欧美乱妇视频| 天堂在线中文在线| 国产亚洲欧美一区二区| 最近2019好看的中文字幕免费| 一区精品在线播放| 蜜桃久久av一区| 不卡中文字幕| 91亚洲视频| 成人av一区| eeuss影院www| 亚洲人成色777777精品音频| 久久久无码一区二区三区| 日韩欧美中文在线视频| 在线观看成人免费| 99在线热播| 性欧美亚洲xxxx乳在线观看| 亚洲电影av在线| 欧美视频裸体精品| 国产午夜亚洲精品理论片色戒| 日韩综合在线视频| 色呦哟—国产精品| 国产精品毛片无码| 国产精品-色哟哟| 国产毛片毛片毛片毛片毛片毛片| av7777777| 亚洲国产婷婷香蕉久久久久久99| 国产欧美日韩精品丝袜高跟鞋| 中文字幕精品视频| 日韩欧美国产1| 精品国产电影一区| 国产精品无人区| 国产成人精品影院| 日韩国产高清影视| 亚洲国产高清视频| 91欧美日韩| 亚洲品质自拍| 4438全国亚洲精品观看视频| 性欧美又大又长又硬| www亚洲人| 尤物视频免费在线观看| 88av看到爽| 又长又粗又大又爽| 明星国产一级毛片范冰冰视频 | 在线国产日本| 免费黄色av| 一级毛片美女欧洲| 精品免费视频一卡2卡三卡4卡不卡 | 成人少妇影院yyyy| 日韩精品欧美精品| 亚洲作爱视频| 精品二区久久| 天天揉久久久久亚洲精品| 欧美理论电影在线精品| 91精品啪在线观看国产爱臀| 亚洲福利影视| www欧美在线观看| 欧洲亚洲精品| 2020国产精品小视频| 成人黄色免费短视频| 美女扒开腿让男人桶爽久久软| 在线看三级电影| av在线官网| 在线看一级片| 日本不卡免费高清视频在线| 久草在线视频福利| 欧美xxxx视频| av免费不卡| 日本黄色免费在线| 性欧美1819sex性高清| 9i看片成人免费高清| 成人爱爱网址| 国产成人精品一区二区三区视频| 欧美成a人片免费观看久久五月天| 韩国成人在线| 日韩精品视频中文字幕| 91亚洲无吗| 婷婷成人影院| 国产精品国内免费一区二区三区| 九草视频在线观看| 玖玖在线免费视频| 黄色影院在线播放| 成人看av片| av资源中文在线天堂| 最近高清中文在线字幕在线观看1| 最近高清中文在线字幕在线观看1| 日韩精品专区| 综合中文字幕| 天天做天天爱天天综合网| 欧美啪啪一区| 老牛影视一区二区三区| 国产最新精品精品你懂的| 丁香六月久久综合狠狠色| 99r精品视频| 中文字幕一区日韩精品欧美| 亚洲国产欧美日韩另类综合 | 国产不卡视频一区二区三区| av一二三不卡影片| 国产精品青草久久| 黄色成人在线免费| 日韩精品一区二区三区在线观看 | av中文在线| 好久没做在线观看| 精品久久在线| 精品国产乱码久久久久久1区2匹| 国产精品成人a在线观看| 蘑菇福利视频一区播放| 懂色av一区二区三区蜜臀| 国产精品天天看| 色又黄又爽网站www久久| 日韩欧美中文字幕一区| www.xxxx精品| 国产欧美最新羞羞视频在线观看| 久久综合一区| 免费在线观看的av网站| 色哟哟无码精品一区二区三区| 五月天婷婷丁香网| 国产尤物av一区二区三区| www插插插无码免费视频网站| 免费看涩涩视频| 亚洲一级二级片| 国产露脸国语对白在线| 国产浪潮av性色av小说| 在线视频您懂的| 天堂网在线最新版www中文网| 成午夜精品一区二区三区软件| 欧美aⅴ99久久黑人专区| 国产成人综合亚洲网站| 亚洲高清免费一级二级三级| 日韩av在线免费观看| 91精品国产高清久久久久久久久 | 免费欧美激情| 青青国产91久久久久久| 中文字幕日韩一区| 5858s免费视频成人| 欧美成年人视频| 国产自产精品| 一区二区三区 日韩| 欧美黑人精品一区二区不卡| 污污网站免费在线观看| 国内在线高清免费视频| 欧美日韩国产观看视频| 天天做天天爱天天综合网| 丰满亚洲少妇av| 欧美自拍偷拍一区| 久久久久久久电影一区| 先锋影音日韩| 欧美在线一级片| www.综合色| 三级黄色网址| 欧美天堂在线| 日本女优在线视频一区二区| 天天综合色天天综合色h| 北条麻妃久久精品| 日本成人三级电影网站| 在线看黄色的网站| 国产高清视频免费观看| 日韩男人天堂| 国产精品美女久久久久| 国产高清中文字幕在线| 伊甸园亚洲一区| 99久久国产综合精品麻豆| 欧美一区二区三区在| 国产精品久久久久影院日本| 日韩欧美精品在线观看视频| 国产女同在线观看| jizzwww| 欧美日韩在线精品一区二区三区激情综合 | 午夜成人在线视频| 欧美成人午夜视频| www.黄色网址.com| 中文字幕资源站| 国产毛片av| 第一av在线| 亚洲精华国产欧美| 午夜精品久久久久久久蜜桃app | 国产精品久久久免费观看| 99在线精品视频免费观看20| 2020中文字幕在线播放| 视频一区国产| 高清国产一区二区| 亚洲第一av网| 欧美一级日本a级v片| 亚洲区免费视频| 一本大道久久精品| 欧美性爽视频| 亚洲免费影院| 欧美中文字幕不卡| 91久久精品国产91久久| 日韩av影视大全| 丰满少妇一级片| av在线资源网| 午夜久久影院| 色拍拍在线精品视频8848| 国产精品久久久久高潮| 99热这里只有精品2| 日本韩国在线观看| 黄a在线观看| 一本久久综合| 欧美日韩精品三区| 成人午夜电影免费在线观看| 美国黄色a级片| jizzjizz国产| japansex久久高清精品| 91免费在线播放| 欧美精品免费播放| 欧美性猛交xxx乱久交| www.色日本| 三级网站视频在在线播放| 三级一区在线视频先锋| 精品国产一二三| 在线电影看在线一区二区三区| 国产精品16p| 亚洲成人套图| 最新国产精品| 欧美久久久久久久久久| 欧美另类一区| 91精品国产乱码久久久张津瑜 | 成人免费大片黄在线播放| 日本一级片在线播放| 国产精选在线观看| 天堂va欧美ⅴa亚洲va一国产| 国产欧美视频在线观看| 久久久爽爽爽美女图片| 欧美大片久久久| 牛人国产偷窥女洗浴在线观看| 国产综合色激情| av成人在线播放| 国产成人高清在线| 久久精品99国产精品酒店日本 | 国产又黄又大又粗的视频| 蜜桃成人在线视频| 99精品久久久| 亚洲精品一线二线三线无人区| 亚洲在线色站| 在线观看日批视频| 欧美一卡二卡| 不卡视频一二三四| 欧美高清第一页| 苍井空张开腿实干12次| 一个人看的www视频免费观看| 超碰地址久久| 色婷婷久久久综合中文字幕 | 日韩激情在线| 欧美日免费三级在线| 亚洲午夜精品久久| 国产乱码精品一区二三区蜜臂| av资源在线播放| 国产精品欧美久久久久无广告| 91精品国产自产在线观看永久| 日韩精品一区二区亚洲av性色| 在线观看视频网站你懂得| 亚洲一区二区动漫| 国产亚洲欧美一区| 在线一区二区不卡| 黑料不打烊so导航| 国产精品国产三级国产在线观看 | 亚洲欧美日韩久久| 狠狠色伊人亚洲综合网站色| 天天干天天操天天爱| h片在线观看视频免费免费| 久久久久国产精品麻豆ai换脸| 国产成人精品免费久久久久 | 夜色资源站国产www在线视频| 亚洲综合精品四区| 欧美美女15p| 国产精品密蕾丝袜| 一区二区三区四区在线免费视频 | 久久精品在线视频| 亚洲欧洲日韩综合| 波多野吉衣av| 欧美专区在线| 欧美寡妇偷汉性猛交| 中文字幕在线1| 搞黄视频免费在线观看| 成人美女视频在线观看18| 91精品久久久久久久久不口人 | 高清免费电影在线观看| xfplay精品久久| 91美女片黄在线观看游戏| 精品美女久久久久| 日韩电影免费观| 亚洲国产美国国产综合一区二区| 亚洲 国产 欧美一区| 日本年轻的继坶中文字幕| 日韩福利视频一区| 亚洲电影中文字幕| 成人亚洲免费视频| 色网址在线观看| 国产不卡在线播放| 国产成人av一区二区三区| 国产伦精品一区二区三区免.费| 亚洲精品无播放器在线播放| 精品视频在线免费看| 欧美成aaa人片在线观看蜜臀| 在线精品一区二区三区| av福利精品| 国产精品麻豆一区二区| 亚洲成人蜜桃| 91社区视频| 免费国产亚洲视频| 91系列在线播放| 刘亦菲毛片一区二区三区| 精品成av人一区二区三区| 中文字幕久精品免费视频| 成人性视频免费看| 免费h在线看| 欧美日韩二区三区| 精品无码av一区二区三区| 在线观看h片| 亚洲最新在线观看| 欧美牲交a欧美牲交aⅴ免费下载| eeuss鲁片一区| 成人动漫一区二区在线| 日本不卡一区二区三区在线观看| 欧美黑人乱大交ⅹxxxxx| 一区二区精品| 91在线视频九色| 少妇高潮一区二区三区69| 一区二区三区毛片免费| 欧美在线xxx| www.久久伊人| 亚洲五月综合| 国产精品久久久久不卡| 天堂网在线播放| 亚洲美女一区| 91九色极品视频| 久久久久久国产视频| 久久电影国产免费久久电影| 久久伦理网站| 黄色动漫免费网站| 91蝌蚪porny| 亚洲人成无码网站久久99热国产| 特黄特色特刺激视频免费播放| 国产欧美中文在线| 欧美日韩性生活片| 三级理论午夜在线观看| 樱桃国产成人精品视频| 日本精品一区在线| 大黄网站在线观看| 精品精品国产高清a毛片牛牛 | 国产精品久久久久aaaa| 国产精品动漫网站| 欧美色综合一区二区三区| 亚洲第一综合色| 久久久久亚洲av片无码v| 欧美色图天堂| 欧美精品一区二区三区久久久| 亚洲国产精品免费在线观看| 玖玖精品一区| 欧美成人久久久| 精品国产无码一区二区| 国产情侣一区| 青青成人在线| 91短视频在线观看| 亚洲6080在线| 日韩人妻无码一区二区三区| 成人在线黄色| 另类美女黄大片| 亚洲AV无码成人片在线观看| 国产日韩欧美一区在线| 欧美高清视频一区| 啊啊啊啊啊好爽| 婷婷夜色潮精品综合在线| 日本一卡二卡在线| 亚洲爽爆av| 欧美激情xxxxx| 中文字幕三区| 99视频在线观看一区三区| 99精品视频在线看| 午夜小视频福利在线观看| 日韩成人在线视频| 最新中文字幕免费| 国产精品日韩久久久| 亚洲精品高清国产一线久久| 日本福利在线观看| 3atv一区二区三区| 波多野结衣国产| 激情久久久久久| 亚洲午夜精品久久| 欧美一区二区三区| 日韩精品在线看| 超碰在线观看av| 岛国精品在线观看| 另类小说色综合| 欧美日韩尤物久久| 久久亚洲影视婷婷| 两性午夜免费视频| 国产一区二区三区| 国产精品精品视频一区二区三区| 青青青视频在线| 亚洲国产精品人人做人人爽| 在线观看免费黄色网址| 国产精品免费99久久久| 国产成人精品日本亚洲11| 天天噜天天色| 欧美一级日韩一级| 这里只有精品免费视频| 久久国产精品色| www.日本xxxx|