wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区
標(biāo)題:
嵌入式技巧:ARM的三種中斷調(diào)試方法介紹
[打印本頁]
作者:
菜菜11
時間:
2020-5-20 09:59
標(biāo)題:
嵌入式技巧:ARM的三種中斷調(diào)試方法介紹
參照嵌入式軟件的開發(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ù)。
具體方法是:嵌入式技巧: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)境中使用擴(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中運行的目的。
嵌入式技巧: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)境中使用擴(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空間中斷程序入口表
另外注意,因為用戶實際的程序中斷入口必須位于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ù)指針進(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空間中斷程序入口表
第三步:工程編譯和鏈接。第四步:軟件的調(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空間中斷程序入口表
歡迎光臨 (http://m.izizhuan.cn/bbs/)
Powered by Discuz! X3.1
欧美13一14另类
|
sesexxxx
|
国产视频在线一区
|
日韩成人高清视频
|
中文字幕一区二区三区手机版
|
欧美日韩一区二区三区视频
|
一区二区三区在线播放
|
亚洲同性同志一二三专区
|
国产午夜精品久久久久久免费视
|
2021国产精品久久精品
|
国产偷v国产偷v亚洲高清
|
国产精品免费看片
|
一区二区三区免费观看
|
精品久久久久久久久久久久久
|
午夜精品一区二区三区电影天堂
|
日本综合久久
|
素人啪啪色综合
|
国产精品一区免费在线
|
成人免费直播在线
|
精品美女视频
|
亚洲精品1区2区
|
麻豆精品精品国产自在97香蕉
|
麻豆视频观看网址久久
|
波多野结衣在线aⅴ中文字幕不卡
|
91视频xxxx
|
亚洲美女免费在线
|
91久久线看在观草草青青
|
日韩午夜在线播放
|
夜夜嗨av色综合久久久综合网
|
日韩在线观看网址
|
欧美性视频在线
|
69堂成人精品视频免费
|
欧美一区二区三区精美影视
|
久久亚洲国产中v天仙www
|
尤物视频在线视频
|
好紧好硬好湿我太爽了
|
触手亚洲一区二区三区
|
国产免费拔擦拔擦8x在线播放
|
日本午夜精品久久久久
|
国产一区二区三区站长工具
|
日韩网站在线
|
丁香一区二区三区
|
亚洲精品成a人
|
7799精品视频
|
日韩视频免费在线观看
|
国产成人精品电影久久久
|
国内精品二区
|
日本在线xxx
|
欧美性受xxxx黒人xyx性爽
|
av电影在线不卡
|
怡红院av久久久久久久
|
天天干天天插天天操
|
日本丰满少妇裸体自慰
|
日韩av片在线免费观看
|
做爰无遮挡三级
|
欧美日韩亚洲色图
|
被下部羞羞漫画
|
精品欧美色视频网站在线观看
|
在线一区视频观看
|
欧美wwwww
|
国产精品主播直播
|
五月开心婷婷久久
|
亚洲电影免费观看高清
|
2019中文字幕在线免费观看
|
久久99国产精品99久久
|
欧美黄网站在线观看
|
a级在线免费观看
|
这里只有精品999
|
顶级欧美妇高清xxxxx
|
在线视频毛片
|
99欧美精品
|
欧美日本国产
|
久久精品无码一区二区三区
|
欧美视频精品在线观看
|
欧美另类69精品久久久久9999
|
91在线看网站
|
国产无套粉嫩白浆内谢的出处
|
日本性高潮视频
|
一级片在线观看视频
|
韩日在线播放
|
国产视频网址在线
|
亚洲电影一区
|
日韩成人精品在线观看
|
亚洲美女偷拍久久
|
国产亚洲精品日韩
|
亚洲综合大片69999
|
国产一区二区视频播放
|
娇小11一12╳yⅹ╳毛片
|
日本美女一级视频
|
国产对白在线正在播放
|
日韩精品一区二区三区av
|
欧美+亚洲+精品+三区
|
99亚偷拍自图区亚洲
|
欧美久久久一区
|
91av视频在线
|
日韩精品久久一区二区
|
秋霞网一区二区三区
|
手机看片一区二区
|
最近2018年手机中文在线
|
伦一区二区三区中文字幕v亚洲
|
日韩理论片av
|
国产女人18水真多18精品一级做
|
精品免费日韩av
|
国产精品久久久久免费a∨大胸
|
japanese在线播放
|
少妇视频一区二区
|
九九久久精品这里久久网
|
一广人看www在线观看免费视频
|
都市激情亚洲欧美
|
成人一区二区在线观看
|
日韩欧美不卡一区
|
91视频国产精品
|
亚洲综合av在线播放
|
国产亚洲欧美日韩高清
|
2019一级黄色毛片免费看网
|
福利一区视频
|
精品一区二区三区日韩
|
欧美视频中文字幕
|
国产剧情日韩欧美
|
免费网站在线观看黄
|
亚洲天堂中文字幕在线
|
最近中文字幕mv第三季歌词
|
亚洲91网站
|
99免费精品视频
|
亚洲精品一区二区三区影院
|
99蜜桃在线观看免费视频网站
|
欧美视频国产视频
|
国产视频在线免费观看
|
樱花在线免费观看
|
久久99国产精一区二区三区
|
91亚洲精华国产精华精华液
|
亚洲成人亚洲激情
|
久久久久久高清
|
成人片黄网站色大片免费毛片
|
欧美色图自拍
|
成人性生活av
|
国产精品综合av一区二区国产馆
|
欧美一级黄色录像
|
九色综合婷婷综合
|
精品熟妇无码av免费久久
|
国产精品免费视频一区二区三区
|
91在线超碰
|
日韩高清国产一区在线
|
欧美一卡2卡3卡4卡
|
国产高清一区二区三区
|
好吊日免费视频
|
久久精品国产屋
|
狼人综合视频
|
国产在线看一区
|
亚洲精品久久久久久久久久久久久
|
美女被啪啪一区二区
|
中文字幕第69页
|
黄瓜视频网站
|
好吊妞视频这里有精品
|
亚洲精品日日夜夜
|
国产精品99一区
|
欧亚乱熟女一区二区在线
|
精品一区二区三区五区六区
|
69堂精品视频在线播放
|
久久亚洲精品国产精品紫薇
|
欧美日韩999
|
在线观看免费的av
|
亚洲欧美日韩一区成人
|
日韩精品第一
|
久久精品一区四区
|
国内免费久久久久久久久久久
|
少妇愉情理伦片bd
|
国产成人羞羞电影网站在线观看
|
日韩激情欧美
|
一区二区三区在线免费
|
亚洲精品日产aⅴ
|
欧美日韩黄色网
|
中文字幕在线观
|
亚洲福利精品
|
日韩电影免费观看在线观看
|
成人免费性视频
|
欧美一级片免费
|
电影一区电影二区
|
中文字幕永久在线不卡
|
成人做爽爽免费视频
|
中文乱码字幕高清一区二区
|
午夜视频免费在线观看
|
欧美三级小说
|
亚洲国产成人在线视频
|
好吊妞无缓冲视频观看
|
无码精品视频一区二区三区
|
国产成人a视频高清在线观看
|
久久久国产精品午夜一区ai换脸
|
国产91在线播放九色快色
|
久久亚洲AV无码专区成人国产
|
成人影院在线观看视频
|
中文字幕亚洲精品乱码
|
精品乱码亚洲一区二区不卡
|
精品无码一区二区三区在线
|
美女福利视频一区二区
|
国产高清亚洲
|
精品久久久久久亚洲国产300
|
久久久久久国产精品mv
|
又色又爽又黄无遮挡的免费视频
|
免费影视亚洲
|
久久无码av三级
|
国产日韩欧美黄色
|
国产精品99精品
|
性欧美1819sex性高清大胸
|
成人激情小说乱人伦
|
国产成人极品视频
|
国产大片aaa
|
av网站大全在线
|
91美女视频网站
|
亚洲在线免费看
|
日本a级c片免费看三区
|
国产伦理精品
|
亚洲最新视频在线播放
|
色综合电影网
|
男人天堂电影网
|
日日天天久久
|
欧美一区二区三区婷婷月色
|
成人羞羞国产免费网站
|
九色视频在线观看
|
在线精品观看
|
久久久精品在线观看
|
白丝女仆被免费网站
|
男人的天堂在线免费视频
|
国产乱码一区二区三区
|
国产精品视频色
|
亚洲黄色免费观看
|
久久久成人av毛片免费观看
|
亚洲高清免费在线
|
欧美 日韩 国产精品
|
欧美日韩不卡中文字幕在线
|
青青草原综合久久大伊人精品
|
日韩电影在线观看中文字幕
|
www.黄色网
|
黄色av网站在线
|
91久色porny
|
欧美高清视频一区二区三区在线观看
|
成 人 黄 色 片 在线播放
|
91亚洲无吗
|
精品国一区二区三区
|
国产调教打屁股xxxx网站
|
国产网友自拍电影在线
|
成人动漫一区二区三区
|
99在线观看视频网站
|
国产成人精品无码高潮
|
亚洲人成网亚洲欧洲无码
|
日韩高清a**址
|
亚洲最大成人网站
|
菠萝菠萝蜜在线观看
|
亚洲精品久久久久久国产精华液
|
色呦呦免费观看
|
亚洲三级精品
|
亚洲欧美福利视频
|
亚洲永久精品ww.7491进入
|
瑟瑟视频在线
|
国产精品调教视频
|
亚洲成人999
|
欧美bbbbb性bbbbb视频
|
免费av不卡
|
亚洲综合视频在线
|
女人天堂av手机在线
|
成人黄网大全在线观看
|
国产精品99久久久久久久女警
|
eeuss一区二区三区
|
69av影院
|
国产日韩亚洲
|
国产精品美女呻吟
|
www.欧美国产
|
99精品视频在线
|
久久久久久久电影一区
|
日批视频免费在线观看
|
成人看片黄a免费看视频
|
在线性视频日韩欧美
|
免费中文字幕在线
|
78精品国产综合久久香蕉
|
精品免费视频一区二区
|
国产又粗又长又硬
|
成人午夜sm精品久久久久久久
|
91精品国产日韩91久久久久久
|
妖精视频一区二区
|
一色桃子av在线
|
欧美日韩综合色
|
亚州av综合色区无码一区
|
色呦呦在线视频
|
欧美区一区二区三区
|
稀缺小u女呦精品呦
|
色a资源在线
|
717成人午夜免费福利电影
|
亚洲一区二区乱码
|
成人美女大片
|
亚洲国产成人在线视频
|
亚洲国产美女视频
|
最新精品在线
|
欧美国产在线电影
|
夜夜躁很很躁日日躁麻豆
|
久久免费av
|
国产成人精品免高潮在线观看
|
国产尤物在线观看
|
欧美福利电影在线观看
|
国产欧美精品日韩精品
|
热99精品视频
|
麻豆91在线观看
|
亚洲欧洲久久
|
在线观看污污视频
|
亚洲一区二区三区在线播放
|
色一情一区二区
|
3344国产永久在线观看视频
|
亚洲成人精品视频
|
日本在线观看中文字幕
|
欧美丝袜丝交足nylons172
|
日本中文字幕久久看
|
中文字幕av免费
|
国产高清不卡一区
|
国产69精品久久久久999小说
|
欧美日本网站
|
欧美影院一区二区
|
黄色激情小视频
|
亚洲区小说区
|
国产精品视频公开费视频
|
国产性网软件大全
|
aaa欧美色吧激情视频
|
日韩精品一区在线视频
|
亚洲成人三级
|
欧美一级久久久
|
日韩女优在线观看
|
日本精品黄色
|
天天免费综合色
|
av在线网站观看
|
国产精品日本一区二区不卡视频
|
久久综合免费视频影院
|
国产精品爽爽久久
|
日韩国产欧美在线观看
|
中国一级黄色录像
|
91xxx在线观看
|
日韩精品中午字幕
|
国产成人在线播放视频
|
国产一区日韩欧美
|
欧美一区二区福利
|
九色视频在线观看免费播放
|
欧美精品一二三
|
欧美三级韩国三级日本三斤在线观看
|
自拍偷拍欧美专区
|
日本成人三级
|
国产在线视频网站
|
日韩美女一区二区三区四区
|
男人天堂2024
|
日本中文字幕一区二区视频
|
欧美色欧美色
|
国产亚洲欧美日韩在线一区
|
日本中文字幕在线不卡
|
国产精品视频一区视频二区
|
日韩av电影在线网
|
jizz免费视频
|
色婷婷av一区二区三区大白胸
|
中文字幕另类日韩欧美亚洲嫩草
|
亚洲国产精品91
|
天堂资源在线亚洲资源
|
中文字幕在线观看日本
|
亚洲欧洲日本专区
|
亚洲av成人精品毛片
|
久久影院午夜片一区
|
日本性生活一级片
|
中文字幕av一区二区三区人
|
91久久大香伊蕉在人线
|
色琪琪免费视频网站
|
欧美日本一区二区在线观看
|
日本熟女毛茸茸
|
乱一区二区av
|
少妇一级淫免费播放
|
日本免费一区二区视频
|
91久久综合亚洲鲁鲁五月天
|
伦理电影国产精品
|
欧美一级生活片
|
国产精品久久久久久久免费看
|
国产在线麻豆精品观看
|
色男人天堂av
|
亚洲宅男网av
|
欧美日韩系列
|
黄色网在线免费看
|
中文国产成人精品久久一
|
欧美极度另类videos高清
|
一级日本不卡的影视
|
日本网站在线免费观看
|
蜜臀av一区二区
|
无码人妻一区二区三区在线视频
|
大桥未久女教师av一区二区
|
韩国精品一区二区三区六区色诱
|
国产在线一在线二
|
精品精品国产国产自在线
|
91视频在线
|
欧美性大战久久久
|
亚洲字幕av一区二区三区四区
|
91丨porny丨户外露出
|
国产探花视频在线播放
|
亚洲精品日本
|
超碰在线播放91
|
久久精品国产亚洲5555
|
视频一区视频二区视频三区高
|
在线最新版中文在线
|
91精品国产综合久久久久久久久
|
亚洲热app
|