免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ARM的三種中斷調(diào)試方法的探討[機電之家行業(yè)下載站]
摘  要:以典型ARM芯片S3C4510B為對象,結(jié)合應(yīng)用環(huán)境,介紹其技術(shù)特點和開發(fā)流程,重點闡述有關(guān)應(yīng)用程序的中斷調(diào)試中動態(tài)處理方法及其3種運行方式,即程序在SDRAM中運行、程序在FLASH中運行、程序從FLASH中調(diào)到SDRAM中運行的中斷調(diào)試方法。
關(guān)鍵詞:ARM  S3C4510B  中斷  動態(tài)  3種運行方式

 

1 概述
sung公司的S3C4510B是基于以太網(wǎng)應(yīng)用系統(tǒng)的高性價比16/32位RISC微控制器,內(nèi)含一個由ARM公司設(shè)計的16/32位ARM7TDMI RISC處理器核,ARM7TDMI為低功耗、高性能的16/32核,是目前應(yīng)用廣泛的一款A(yù)RM芯片。作者通過對這款典型芯片在網(wǎng)絡(luò)通訊應(yīng)用項目的開發(fā),掌握了ARM的技術(shù)特點和開發(fā)流程,并且在中斷調(diào)試方面獲得了一些高級技巧。
2 硬件特點
S3C4510B的主要特性描述如下:
    支持ROM/SRAM、FLASH、DRAM和外部I/O以8/16/32位的方式操作;
    100M/10Mbps IEEE802.3標(biāo)準(zhǔn)兼容、提供MII和7線制10Mbps接口Ethernet控制器;
    2個10Mbps HDLC (High-Level Data Link Control) 高層數(shù)據(jù)鏈路協(xié)議通道; 
    2個可工作于DMA方式或中斷方式的UART模塊,支持紅外發(fā)送和接收;
    IIC接口(主控模式);
    2個可編程32位定時器;18個可編程I/O口;2個DMA通道;
    21個中斷源,包括4個外部中斷源;
    外部時鐘可由片內(nèi)PLL倍頻;工作頻率最高為50MHz。發(fā)板800
3 調(diào)試環(huán)境
開發(fā)環(huán)境包括Embest IDE集成開發(fā)環(huán)境,Embest 仿真器,基于ARM(S3C4510B)的電路板。
參照嵌入式軟件的開發(fā)流程,如圖1所示。在整個流程中,用戶首先需要建立工程并對工程做初步的配置,包括配置處理器和配置調(diào)試設(shè)備。編輯工程文件,包括自己編寫的匯編和C語言源程序,還有工程編譯時需要編寫的鏈接腳本文件,調(diào)試過程中需要編寫存儲區(qū)映像文件和命令腳本文件,以及上電復(fù)位時的程序運行入口的啟動程序文件。 
 


圖1 開發(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ù))。4 中斷程序設(shè)計
S3C4510B支持21個中斷源,其中包括4個外部中斷源,基于優(yōu)先級的中斷處理,可以識別兩種類型的中斷:正常中斷請求(IRQ)和快速中斷請求(FIQ)。
S3C4510B的中斷處理模式是一種典型的中斷處理方法。當(dāng)系統(tǒng)產(chǎn)生中斷的時候,系統(tǒng)將中斷懸掛寄存器(Interrupt Pending Register)中對應(yīng)中斷的標(biāo)志位置位,然后跳轉(zhuǎn)到位于0x18處的IRQ或0x1C處的FIQ中斷處理函數(shù)中,該中斷函數(shù)通過讀取中斷懸掛寄存器來判斷中斷源,并根據(jù)優(yōu)先級關(guān)系再跳轉(zhuǎn)到對應(yīng)中斷源的處理代碼內(nèi)。
對此,一般采取的中斷處理方法是在0x18處的IRQ或0x1C處的FIQ中斷處理函數(shù)中進(jìn)行獲取中斷源、清除中斷掛起標(biāo)志、進(jìn)入用戶中斷函數(shù)的相關(guān)程序。顯然,在用戶程序復(fù)雜,中斷源較多的情況下,采用此法必須進(jìn)行中斷源的判斷和散轉(zhuǎn)處理,這樣會影響中斷處理的響應(yīng)時間和程序性能。
在我們的應(yīng)用開發(fā)過程中,在中斷調(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ù)。


5 中斷調(diào)試
歡迎訪問無由電子開發(fā)網(wǎng)技術(shù)文章 在線閱讀 在線商城
軟件調(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)用場合,強調(diào)程序運行速度的情況下,希望程序在SDRAM中運行,這樣就需要將FLASH中存儲的程序,在系統(tǒng)上電后搬運到SDRAM某空間
位置,然后自動運行。這種所謂的Bootloader技術(shù),在DSP系統(tǒng)中常被采用。
調(diào)試過程分兩步:
(1)首先將用戶程序在SDRAM中調(diào)試通過,然后將*.bin文件固化到FLASH某一非0扇區(qū)地址空間;
(2)將自己編寫的Bootloader搬運程序調(diào)試通過并將Bootloader.bin文件固化到FLASH的 0扇區(qū)地址空間,搬運程序在系統(tǒng)上電后,將(1)中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空間中斷程序入口表
在本項目開發(fā)過程中,由于系統(tǒng)實時性要求高,定時器中斷達(dá)到微秒級,程序在FLASH中運行時,速度不能達(dá)到系統(tǒng)要求,故采用把程序從FLASH中調(diào)到SDRAM中運行的方式,問題得到解決。


6 結(jié)束語
上述有關(guān)中斷動態(tài)處理方法及其3種運行方式,是基于S3C4510B系統(tǒng)調(diào)試的一點小結(jié),在ARM技術(shù)的實際應(yīng)用中具有典型性和代表性,讀者可根據(jù)自己的應(yīng)用場合及應(yīng)用目的參考指正。

參考文獻(xiàn)
1、ARM Limited. ARM7TDMI(Rev4) Technical Reference Manual
2、李駒光. ARM應(yīng)用系統(tǒng)開發(fā)詳解──基于S3C4510B的系統(tǒng)設(shè)計[M].北京:清華大學(xué)出版社,2003
3、馬忠梅. ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2003

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用GNU工具開發(fā)基于ARM的嵌入式系統(tǒng)
關(guān)于s3c2410開發(fā)板程序調(diào)試,下載總結(jié)
ARM如何讀寫Flash
ARM論壇 - ARM技術(shù)論
基于ARM-μCLinux嵌入式系統(tǒng)啟動引導(dǎo)的實現(xiàn)||ARM|
移植u-boot2009.08到OK2440V3開發(fā)板
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服