姚茂群,葉漢能,趙武鋒,顏佳寧
(1.杭州師范大學(xué)錢江學(xué)院,浙江杭州310012;2.杭州師范大學(xué)信息科學(xué)與工程學(xué)院,浙江杭州310036;3.浙江大學(xué)信息與電子工程學(xué)系,浙江杭州310027;4.浙江醫(yī)學(xué)高等??茖W(xué)校圖書信息中心,浙江杭州310053)
基于外部RAM的ARM異常程序調(diào)試技術(shù)
姚茂群1,2,葉漢能2,趙武鋒3,顏佳寧4
(1.杭州師范大學(xué)錢江學(xué)院,浙江杭州310012;2.杭州師范大學(xué)信息科學(xué)與工程學(xué)院,浙江杭州310036;3.浙江大學(xué)信息與電子工程學(xué)系,浙江杭州310027;4.浙江醫(yī)學(xué)高等??茖W(xué)校圖書信息中心,浙江杭州310053)
在闡述ARM中異常處理的基本思想以及基于JTAG進(jìn)行調(diào)試的基本原理的基礎(chǔ)上,詳細(xì)分析了目前各種基于外部RAM的ARM異常程序調(diào)試技術(shù)的原理和特點(diǎn).通過(guò)對(duì)比各種調(diào)試技術(shù)的適用性和優(yōu)缺點(diǎn),結(jié)合目前嵌入式系統(tǒng)開發(fā)過(guò)程中常用的ARM芯片和集成開發(fā)工具,提出一種新的在外部RAM中調(diào)試含有異常處理代碼的ARM程序的調(diào)試技術(shù),并通過(guò)實(shí)驗(yàn)驗(yàn)證了其有效性.
異常處理;JTAG協(xié)議;外部RAM;ARM體系結(jié)構(gòu);調(diào)試技術(shù);嵌入式系統(tǒng)
嵌入式系統(tǒng)的開發(fā)一般可分為需求分析、設(shè)計(jì)、生成代碼和固化幾個(gè)階段[1].在生成代碼的過(guò)程中,調(diào)試是確保程序最終能在系統(tǒng)中順利運(yùn)作的關(guān)鍵.由于RAM(Random Access Memory)具有可讀寫、速度快等特點(diǎn),因此在RAM中調(diào)試程序是一種基本并有效的方法.ARM(Advanced RISC Machines)處理器作為嵌入式領(lǐng)域中運(yùn)用最多的處理器之一,占據(jù)了32位RISC(Reduced Instruction Set Computer)微處理器75%以上的市場(chǎng)份額,它的應(yīng)用深入到了各個(gè)領(lǐng)域[2].很多ARM集成開發(fā)工具在RAM中調(diào)試程序時(shí),可以方便地設(shè)置無(wú)限的軟斷點(diǎn),便于分析程序中存在的不足.ARM處理器一般內(nèi)置很少RAM,系統(tǒng)中需要外掛SDRAM(Synchronous Dynamic Random Access Memory)才能滿足應(yīng)用需求.而外部SDRAM正常使用的前提是配置好ARM處理器的相應(yīng)控制模塊,這個(gè)工作在調(diào)試時(shí)一般通過(guò)JTAG(Joint Test Action Group)來(lái)實(shí)現(xiàn),因此JTAG在調(diào)試過(guò)程中有著十分重要的作用.
異常響應(yīng)是嵌入式系統(tǒng)必須具備的一種程序處理模式,對(duì)于系統(tǒng)實(shí)時(shí)性和穩(wěn)定性至關(guān)重要[3].ARM處理器建立了一套完整的異常處理機(jī)制,在系統(tǒng)設(shè)計(jì)過(guò)程中可以根據(jù)每種異常的具體解決方法編寫相應(yīng)的異常處理代碼,當(dāng)異常產(chǎn)生時(shí),即可執(zhí)行對(duì)應(yīng)的代碼正確處理該異常,從而保證系統(tǒng)的正常運(yùn)作.
針對(duì)含異常處理代碼程序的調(diào)試,現(xiàn)有的一些方法通常需要涉及Flash燒寫、MMU(Memory Management Unit)重映射或在源程序中額外增加建立異常向量表的內(nèi)容[4-6],步驟較煩瑣,原理較復(fù)雜并增加了被調(diào)試程序本身的代碼量.本文根據(jù)ARM體系結(jié)構(gòu)和異常處理程序的一般特點(diǎn),充分利用JTAG在調(diào)試中的作用,提出一種新的在外部RAM中調(diào)試含異常處理代碼的ARM程序的方法.該方法原理簡(jiǎn)單、無(wú)需改動(dòng)被調(diào)試程序本身、操作方便,并在Samsung公司以ARM920T為內(nèi)核的S3C2440A芯片及Hynix公司的HY57V561620C SDRAM芯片組成的環(huán)境下進(jìn)行了驗(yàn)證.
在ARM系統(tǒng)開發(fā)過(guò)程中,調(diào)試的程序通常會(huì)包含異常處理部分,合理的異常處理是健壯的系統(tǒng)必需的.ARM7、ARM9處理器包含8種異常:復(fù)位、未定義指令、軟中斷、預(yù)取中止、數(shù)據(jù)中止、保留、外部中斷和快速中斷[3].
當(dāng)特定異常產(chǎn)生時(shí),CPU自動(dòng)到固定地址取指[7-8].因此常在對(duì)應(yīng)位置存放異常向量表,通過(guò)讀取異常向量表對(duì)應(yīng)的指令,跳轉(zhuǎn)到相應(yīng)的異常處理函數(shù).由于該地址通常不在外部RAM地址范圍內(nèi)[9],所以在外部RAM進(jìn)行異常調(diào)試時(shí)需要一種機(jī)制來(lái)保證異常向量表的正確讀取.以下3種基本方法可以達(dá)到正確讀取異常向量表的目的:1)在符合要求的位置放置異常向量表,通常對(duì)應(yīng)NOR Flash或內(nèi)部SRAM;2)將異常向量表放在外部RAM中,通過(guò)重映射機(jī)制,將異常向量表的位置映射到符合要求的地址;3)將異常向量表保留在外部RAM中,在異常發(fā)生時(shí)的固定取指位置放置跳轉(zhuǎn)表,通過(guò)相應(yīng)的跳轉(zhuǎn)指令跳轉(zhuǎn)到外部RAM中異常向量表的對(duì)應(yīng)位置.
JTAG調(diào)試作為最常用的一種調(diào)試方法[10-13],得到了各種ARM芯片的支持.作為測(cè)試訪問(wèn)端口和邊界掃描結(jié)構(gòu)標(biāo)準(zhǔn),JTAG主要用于芯片內(nèi)部測(cè)試.
2.1 測(cè)試訪問(wèn)端口(Test Access Port,TAP)
TAP是JTAG標(biāo)準(zhǔn)測(cè)試協(xié)議中的一個(gè)通用端口,通過(guò)它可以訪問(wèn)芯片的所有數(shù)據(jù)寄存器(DR)和指令寄存器(IR).它包括5個(gè)信號(hào)接口:時(shí)鐘(TCK)、狀態(tài)選擇(TMS)、數(shù)據(jù)輸入(TDI)、數(shù)據(jù)輸出(TDO)和復(fù)位(TRST).數(shù)據(jù)的訪問(wèn)過(guò)程按照如下步驟進(jìn)行:1)由指令寄存器指定數(shù)據(jù)寄存器;2)將指定的數(shù)據(jù)寄存器連接到TDI和TDO之間;3)在TCK的驅(qū)動(dòng)下,從TDI輸入數(shù)據(jù),將選定數(shù)據(jù)寄存器中的數(shù)據(jù)從TDO中輸出.訪問(wèn)過(guò)程通過(guò)TAP控制器的狀態(tài)機(jī)來(lái)實(shí)現(xiàn)[10].
2.2 邊界掃描結(jié)構(gòu)(Boundary-Scan Architecture)
邊界掃描結(jié)構(gòu)主要由掃描單元串聯(lián)形成的掃描鏈組成,每一個(gè)掃描單元分配給CPU核或芯片相應(yīng)引腳.
ARM芯片內(nèi)部設(shè)計(jì)多條長(zhǎng)度不同的掃描鏈,因此可以訪問(wèn)的寄存器等范圍也不同.通過(guò)這些掃描鏈,可以訪問(wèn)ARM內(nèi)核的外圍電路,包括數(shù)據(jù)總線,因此無(wú)論內(nèi)部寄存器還是外部RAM,都可以通過(guò)JTAG進(jìn)行訪問(wèn)[10].圖1為ARM處理器的掃描鏈分布示意圖.
基于JTAG調(diào)試可以以特定時(shí)序來(lái)實(shí)現(xiàn)對(duì)指令和數(shù)據(jù)的存取,從而實(shí)現(xiàn)調(diào)試、下載、Flash燒寫等功能.
圖1 ARM掃描鏈分布示意圖Fig.1 Distribution map of ARM scan chain
KEIL和IAR是目前ARM開發(fā)中常用的兩個(gè)集成開發(fā)工具[13],它們的基本開發(fā)流程一致.在RAM中進(jìn)行程序調(diào)試前,需搭建好軟硬件開發(fā)平臺(tái)、編譯鏈接源程序,其中鏈接文件需要根據(jù)外部RAM在系統(tǒng)中的位置以及采用的調(diào)試方法來(lái)設(shè)置.IAR的鏈接文件(v5版本的.icf文件)主要用來(lái)指導(dǎo)各段的鏈接操作,確定各段鏈接地址;接下來(lái)需要建立初始化腳本(.mac文件),它由IAR的內(nèi)置函數(shù)或命令組成,控制JTAG做下載被調(diào)試程序前的準(zhǔn)備工作.KEIL中初始化腳本為.ini文件.構(gòu)建好調(diào)試環(huán)境后,就可以進(jìn)行正常的調(diào)試工作了.圖2為簡(jiǎn)單的調(diào)試流程.
在圖2中,通過(guò)初始化腳本來(lái)構(gòu)建調(diào)試環(huán)境,其主要內(nèi)容包括:1)關(guān)閉看門狗、關(guān)中斷、初始化RAM控制器、初始化時(shí)鐘等,其中RAM控制器(ARM芯片中的Memory Controller)的初始化是為外部RAM的讀寫作準(zhǔn)備;2)下載程序;3)修改程序指針PC,使其指向調(diào)試程序入口.
ARM處理器遇到異常時(shí)將自動(dòng)修改PC值為特定的地址.以下以S3C2440A芯片為例,這個(gè)特定地址通常對(duì)應(yīng)地址空間前8個(gè)字的尋址位置[9].而在外部RAM調(diào)試時(shí),這8個(gè)字的位置上一般沒(méi)有指令或指令不正確,這就需要一種機(jī)制來(lái)保證在這些地方放置正確的跳轉(zhuǎn)指令.由于不同開發(fā)板上配置的存儲(chǔ)芯片情況不同,異常調(diào)試策略也有相應(yīng)的變化.以下是一些常見的調(diào)試辦法.
1)將異常向量表燒寫進(jìn)Flash[4-5].硬件系統(tǒng)通常配置有Flash,因此可將異常向量表事先燒寫進(jìn)Flash.如果Flash為NOR Flash,并且系統(tǒng)設(shè)置成從NOR Flash啟動(dòng),則系統(tǒng)尋址空間的起始部分對(duì)應(yīng)NOR Flash的存儲(chǔ)空間,由于程序可在NOR Flash中執(zhí)行,所以異常發(fā)生時(shí)可執(zhí)行其異常向量表的相應(yīng)指令;如果Flash為NAND Flash,并且系統(tǒng)設(shè)置成從NAND Flash啟動(dòng),那么ARM CPU在上電后自動(dòng)將NAND Flash中的前4 K代碼搬移到內(nèi)置的SRAM中,并且將SRAM的存儲(chǔ)空間映射到尋址空間的前4 K地址,異常發(fā)生時(shí)便執(zhí)行SRAM中異常向量表的相應(yīng)指令.
2)分散加載[4-5].系統(tǒng)上電后尋址空間的起始地址對(duì)應(yīng)SRAM存儲(chǔ)空間的情況下,可以通過(guò)鏈接腳本將主程序中的異常向量表鏈接到SRAM,而其它程序鏈接到RAM中,這樣調(diào)試時(shí)即可通過(guò)分散加載的辦法,使得異常向量表的位置滿足要求.
3)通過(guò)源程序在起始位置建立異常向量表[4-5].按照存儲(chǔ)空間起始位置對(duì)應(yīng)存儲(chǔ)器件的不同,如SRAM或者NOR Flash,通過(guò)在源程序中額外增加不同的寫操作從而在尋址空間的起始位置建立好異常向量表,之后異常產(chǎn)生時(shí)就可以按照這個(gè)新建的異常向量表操作.
4)利用MMU將部分RAM映射到起始地址[4-5].由于MMU存在,異常向量表并不必須放在尋址空間起始地址,可通過(guò)重映射,將外部RAM的部分地址映射到尋址空間起始位置.異常到來(lái)時(shí),CPU修改PC后實(shí)際對(duì)應(yīng)的是RAM中異常向量表的地址,從而讀取相應(yīng)指令.建立重映射的工作可在源程序中實(shí)現(xiàn),也可通過(guò)初始化腳本實(shí)現(xiàn).
在實(shí)際的調(diào)試過(guò)程中需要結(jié)合開發(fā)板的配置以及對(duì)實(shí)際調(diào)試各方面的要求來(lái)選擇特定的調(diào)試辦法.
圖2 調(diào)試操作流程Fig.2 Scheme of debugging process
基于ARM系統(tǒng)的調(diào)試機(jī)理以及常用ARM集成開發(fā)工具中各配置文件的作用,本文在由NAND Flash引導(dǎo)的硬件系統(tǒng)中,提出一種新的在外部RAM中進(jìn)行異常調(diào)試的方法.
在IAR的.mac文件以及KEIL的.ini文件中,可以利用一套特定的指令來(lái)實(shí)現(xiàn)對(duì)SRAM和SDRAM的讀寫[13],而這些讀寫操作正是基于JTAG進(jìn)行的,并且在被調(diào)試程序運(yùn)行前完成,在時(shí)間上能很好地保證對(duì)異常的調(diào)試.這些操作原理并不復(fù)雜,在KEIL和IAR的初始化腳本中很容易實(shí)現(xiàn).相對(duì)于通常的調(diào)試方法,這種方法有效地利用了JTAG的機(jī)理,并不需要在NAND Flash燒寫異常向量表,不必因?yàn)橥ㄟ^(guò)源程序在SRAM中建立異常向量表而增加程序的難度和大小,同時(shí)也不需要進(jìn)行分散加載和使用MMU等.
本文驗(yàn)證過(guò)程所基于實(shí)驗(yàn)平臺(tái)的相關(guān)配置為:處理器芯片為S3C2440A,其擴(kuò)展儲(chǔ)存的8個(gè)Bank中Bank6和Bank7外掛SDRAM,對(duì)應(yīng)存儲(chǔ)空間的起始地址為0x30000000;系統(tǒng)配有NAND Flash,并被設(shè)置成上電后從NAND Flash啟動(dòng),因此上電后系統(tǒng)尋址空間前4 K將對(duì)應(yīng)SRAM的存儲(chǔ)空間.
以下為ARM異常程序調(diào)試新方法的具體步驟:
1)做好調(diào)試前準(zhǔn)備.鏈接程序時(shí)參照外部RAM的地址進(jìn)行設(shè)定,并不需要分散加載.
2)構(gòu)建調(diào)試環(huán)境,建立初始化腳本.這部分是重點(diǎn).除了與其他方法相同的初始化硬件部分外,需要添加通過(guò)JTAG在SRAM中建立跳轉(zhuǎn)表的操作,然后下載程序,修改PC使其指向被調(diào)試程序的相應(yīng)位置.
建立跳轉(zhuǎn)表時(shí),由于外部RAM的位置從0x30000000開始,而跳轉(zhuǎn)指令“B”只能在32 M范圍內(nèi)跳轉(zhuǎn),“MOV”指令加載的立即數(shù)必須由8位數(shù)通過(guò)偶數(shù)次移位得到,因此都不能滿足要求.所以采用“LDR”偽指令加載立即數(shù)給PC,從而跳轉(zhuǎn)到外部RAM中異常向量表的位置.該過(guò)程中,“LDR”偽指令實(shí)際上是在固定的位置(4 K范圍內(nèi))以文字池的方式存放需要加載的立即數(shù),并從該文字池中取相應(yīng)的立即數(shù)給寄存器.根據(jù)這個(gè)原理,編譯器將“LDR”偽指令編譯成兩部分,一部分為存放在文字池中的立即數(shù),另一部分則是到文字池相應(yīng)位置讀取立即數(shù)的指令.因?yàn)橐ㄟ^(guò)JTAG加載異常向量表,需要使用“LDR”偽指令編譯后對(duì)應(yīng)的機(jī)器碼,這可以從編譯器編譯后的結(jié)果中得到.
以KEIL為例,在初始化腳本(.ini文件)里面實(shí)現(xiàn)跳轉(zhuǎn)表的代碼如下:
以上初始化代碼中,前8條中的“0xE59FF018”即為讀取文字池中的立即數(shù)給PC的指令對(duì)應(yīng)的機(jī)器碼,后8條中“0x30000000”、“0x30000004”、“0x30000008”等為文字池中的立即數(shù).例如“_WDWORD(0x00000000,0x E59FF018)”和“_WDWORD(0x00000020,0x30000000)”兩條指令對(duì)應(yīng)了“LDR PC,=0x30000000”指令.IAR由.mac文件實(shí)現(xiàn)以上功能,原理跟KEIL一致,用“__write Memory32”替代“_WDWORD”指令即可.
3)下載程序,進(jìn)行正常的程序調(diào)試操作.表1列出了本文提出的ARM異常程序調(diào)試新方法與常用調(diào)試方法所需的操作.
表1 不同調(diào)試方法所需操作比較Tab.1 Comparison of operations required by different debugging methods
由表1可知,方法1需要對(duì)Flash進(jìn)行燒寫,而Flash燒寫并不如RAM下載程序那么方便,具有費(fèi)時(shí)和降低Flash壽命的缺點(diǎn);方法2通過(guò)修改鏈接腳本達(dá)到分散加載的目的,但在完成調(diào)試之后需重新修改鏈接腳本;方法3需要在主程序中額外編寫一段程序以用于在特定位置建立異常向量表,特別在需要將異常向量表放在NOR Flash中時(shí),這段額外的程序比較大,實(shí)現(xiàn)也比較煩瑣,并且在調(diào)試完成后需要將其刪除;方法4需要修改MMU的相關(guān)設(shè)置,而如果需要調(diào)試的程序本身也要用到MMU的功能,那么就可能形成沖突而造成錯(cuò)誤.另外,以上所有的方法都需要編寫初始化腳本.而新方法只需要編寫初始化腳本,通過(guò)初始化腳本建立跳轉(zhuǎn)表,充分利用了JTAG的原理.該腳本的編寫非常簡(jiǎn)單,因此新方法相對(duì)以上4種方法來(lái)說(shuō),步驟少、實(shí)現(xiàn)方便、可操作性強(qiáng).
以下以外部中斷0(EINT0)觸發(fā)快速中斷FIQ為例對(duì)該方法在異常情況下的效果進(jìn)行驗(yàn)證,所用集成開發(fā)環(huán)境為KEIL和IAR.根據(jù)本實(shí)驗(yàn)開發(fā)板的電路設(shè)計(jì),EINT0對(duì)應(yīng)的引腳外接了按鍵,并且按鍵按下將使得對(duì)應(yīng)的引腳為低電平.配置EINT0為低電平觸發(fā),并且中斷模式設(shè)置為FIQ.通過(guò)鏈接腳本,將源程序鏈接到0x30000000處.整個(gè)過(guò)程按照?qǐng)D2所示順序進(jìn)行操作.
在主程序正常運(yùn)行過(guò)程中,按下EINT0對(duì)應(yīng)按鍵,系統(tǒng)進(jìn)入FIQ模式,并且PC指針自動(dòng)指向了地址0x1c處,反匯編顯示該處指令為“LDR pc,[pc,#0x18]”,對(duì)應(yīng)的機(jī)器碼為“0xe59ff018”.由于流水線的關(guān)系,系統(tǒng)在執(zhí)行上述指令時(shí),PC值為0x24,加上0x18后對(duì)應(yīng)地址0x3c,通過(guò)反匯編或集成開發(fā)工具的其他相應(yīng)功能模塊可看到該地址上的數(shù)據(jù)是0x3000001c,正是源程序異常向量表中FIQ對(duì)應(yīng)指令在外部RAM的位置.單步執(zhí)行,程序順利跳轉(zhuǎn)到0x3000001c處.繼續(xù)執(zhí)行,程序進(jìn)入了相應(yīng)異常處理函數(shù).
其他異常模式經(jīng)驗(yàn)證均簡(jiǎn)單有效.實(shí)驗(yàn)證明,本文提出的新方法在ARM異常程序調(diào)試中切實(shí)可行,且操作簡(jiǎn)單.
嵌入式系統(tǒng)開發(fā)過(guò)程中進(jìn)行異常調(diào)試是非常必要的,由于RAM具有便于讀寫的特點(diǎn),在RAM中進(jìn)行異常調(diào)試是常用的手段.本文結(jié)合ARM異常處理的機(jī)制、JTAG調(diào)試的機(jī)理,詳細(xì)分析和總結(jié)了在RAM中進(jìn)行ARM異常調(diào)試的常用技術(shù),提出了一種新的在外部RAM中進(jìn)行ARM異常調(diào)試的方法,該方法具有原理簡(jiǎn)單、不需要改動(dòng)調(diào)試程序本身、可操作性強(qiáng)等優(yōu)勢(shì).在基于S3C2440A、由NAND Flash引導(dǎo)的開發(fā)板上分別使用KEIL和IAR集成開發(fā)工具進(jìn)行了驗(yàn)證,結(jié)果表明該方法簡(jiǎn)便、有效.
[1]吳學(xué)智,戚玉華,林海濤,等.基于ARM的嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)[M].北京:人民郵電出版社,2007:18-65.
[2]尹旭峰,苑士華,胡紀(jì)濱.ARM微處理器中斷響應(yīng)時(shí)間的實(shí)驗(yàn)研究[J].計(jì)算機(jī)工程,2011,37(4):252-254.
[3]李莉,路而紅.ARM異常處理機(jī)制[J].燕山大學(xué)學(xué)報(bào),2006,30(4):313-316.
[4]王波.ARM的三種中斷調(diào)試方法的探討[J].微計(jì)算機(jī)信息,2006,22(2):130-131.
[5]周智俊.ARM調(diào)試系統(tǒng)的研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2008.
[6]楊東.ARM嵌入式系統(tǒng)異常調(diào)試的研究和實(shí)現(xiàn)[D].上海:上海交通大學(xué),2009.
[7]Advanced RISC Machines Ltd.ARM9TDMI technical reference manual[EB/OL].[2011-09-01].http://infocenter.arm.com/help/index.jsp.
[8]Advanced RISC Machines Ltd.ARM920T technical reference manual[EB/OL].[2011-09-01].http://infocenter.arm.com/help/index.jsp.
[9]Samsung Electronics Co Ltd.S3C2440A 32-Bit CMOS microcontroller user's manual[S/OL].[2011-09-01].http://www.samsungsemi.com.
[10]OPEN-JTAG開發(fā)小組.ARM JTAG調(diào)試原理[EB/OL].[2011-09-01].http://www.hjtag.com/download.html.
[11]陸晗,潘雪增,平玲娣.基于JTAG的ARM調(diào)試器實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2007,24(2):137-139.
[12]黃光紅,洪一,耿銳,等.多處理器陣列的JTAG調(diào)試系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程,2010,36(14):224-226.
[13]徐愛鈞.IAR EWARM V5嵌入式系統(tǒng)應(yīng)用編程與開發(fā)[M].北京:北京航空航天大學(xué)出版社,2009:310-383.
Debugging Technique for ARM Exception Programs Based on External RAM
YAO Mao-qun1,2,YE Han-neng2,ZHAO Wu-feng3,YAN Jia-ning4
(1.Qianjiang College,Hangzhou Normal University,Hangzhou 310012,China;2.College of Information Science and Engineering,Hangzhou Normal University,Hangzhou 310036,China;3.Deptment of Information Science and Electronic Engineering,Zhejiang University,Hangzhou 310027,China;4.Books Information Center,Zhejiang Medical College,Hangzhou 310053,China)
Based on the basic ideas of exception handling in ARM and the basic principles of debugging with JTAG,the principles and characteristics of different ARM program debugging techniques,which are based on exteranl RAM and for exception handling,were analysed in the paper.Comparing the applicability as well as merits and faults of various debugging techniques,with the commonly used ARM chips and integrated development tools in embedded system development,a new kind of debugging technique in the external RAM for ARM programs,which have exception handling codes,was proposed,and its effectiveness was verified by means of experiments.
exception handling;JTAG;external RAM;ARM;debugging technique;embedded system
TP391.4
A
1674-232X(2012)03-0275-05
10.3969/j.issn.1674-232X.2012.03.017
2011-11-22
姚茂群(1967-),女,教授,博士,主要從事數(shù)字集成電路設(shè)計(jì)、智能控制研究.E-Mail:yaomaoqun@163.com