版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
精品文檔-下載后可編輯基于EmJTAG的ARM嵌入式系統(tǒng)調(diào)試工具-基礎(chǔ)電子摘要設(shè)計實現(xiàn)一個適用于基于EmJTAG的ARM嵌入式系統(tǒng)調(diào)試工具。它首先定義了一個輕量級的遠程調(diào)試協(xié)議EmRDI,用于PC機與基于EmJTAG的ARM目標板之間的交互過程;然后描述了用意法半導體公司(ST)的ST72651芯片實現(xiàn)一個協(xié)議轉(zhuǎn)換器EmJTAG的技術(shù)細節(jié)。EmJTAG的功能就是將PC機的調(diào)試命令轉(zhuǎn)換成目標板的JTAG時序信號,以達到控制PC機和調(diào)試目標板的目的。關(guān)鍵詞EmRDIEmJTAG邊界掃描遠程調(diào)試協(xié)議轉(zhuǎn)換器
引言ARM嵌入式系統(tǒng)的大致開發(fā)流程是:先在PC機上編寫程序源代碼;由ARM的交叉編譯器編譯、鏈接生成一個目標文件;然后將目標文件轉(zhuǎn)化成可以到目標機運行的二進制代碼,在目標機上調(diào)試運行;終將調(diào)試成功的二進制文件固化在目標機中。這一系列過程中,關(guān)鍵的步驟就是在PC機上調(diào)試在目標機上運行的程序。這就需要采用遠程調(diào)試的方式,即在PC機上運行調(diào)試器軟件,被調(diào)試程序在目標機上運行。本文描述了這樣一個遠程調(diào)試系統(tǒng):利用USB批量傳輸?shù)目煽啃?,將遠程調(diào)試協(xié)議EmRDI的報文封裝在USB數(shù)據(jù)包中;協(xié)議轉(zhuǎn)換器EmJTAG再根據(jù)接收到的USB數(shù)據(jù)包中的協(xié)議信息,轉(zhuǎn)換成適當?shù)腏TAG信號來控制和調(diào)試ARM核。協(xié)議轉(zhuǎn)換器EmJTAG由ST公司的ST72651芯片外加一片接口驅(qū)動芯片74LVC244來實現(xiàn)。ST72651內(nèi)部集成了USB模塊和數(shù)據(jù)傳輸協(xié)處理器部件(DTC),通過對DTC的編程來產(chǎn)生控制ARM核的邊界掃描序列,以產(chǎn)生相應(yīng)的JTAG信號。文章終實現(xiàn)了PC機對ARM核的目標機的調(diào)試功能:PC機的調(diào)試器軟件可以程序至目標機,實時控制目標機上代碼的單步/全速運行或停止,以及設(shè)置斷點和觀察點、讀寫寄存器/存儲器等。1系統(tǒng)組成及原理如圖1所示,整個調(diào)試系統(tǒng)包括三部分:PC機(調(diào)試器)、協(xié)議轉(zhuǎn)換器(EmJTAG)以及目標板(基于ARM核)。調(diào)試的目的是實現(xiàn)在PC機上控制目標板單步或全速運行,并可以實時地察看或修改寄存器及存儲器的值。系統(tǒng)設(shè)計實現(xiàn)了一個遠程調(diào)試協(xié)議EmRDI,它采用點對點的連接方式,以請求響應(yīng)的方式進行交互。調(diào)試請求由PC機上的調(diào)試器軟件發(fā)出,經(jīng)由USB總線傳輸至協(xié)議轉(zhuǎn)換器EmJTAG;EmJTAG解讀該協(xié)議請求,在執(zhí)行相應(yīng)的操作之后,以USB數(shù)據(jù)包的形式發(fā)送回PC機(即響應(yīng)過程)。EmRDI協(xié)議定義了如下一些調(diào)試請求:讀/寫核寄存器、讀/寫存儲器、設(shè)置/清除硬件斷點、設(shè)置/清除軟件斷點、設(shè)置/清除數(shù)據(jù)觀察點、復位、停止運行、全速/單步運行和返回處理器狀態(tài)/設(shè)備標識符。經(jīng)驗證,這些請求的組合,可以實現(xiàn)PC機對目標機上ARM核的調(diào)試和控制功能。EmRDI協(xié)議請求格式(16字節(jié))如下:命令前導字節(jié)
(2字節(jié))主命令號(1字節(jié))次命令號
(1字節(jié))地址字段或者保留
字段(12字節(jié))0xAAAAEmRDI協(xié)議響應(yīng)格式(8字節(jié))如下:響應(yīng)前導字節(jié)(2字節(jié))主命令號
(1字節(jié))次命令號
(1字節(jié))保留位
(2字節(jié))錯誤碼
(2字節(jié))0x1111ARM核的芯片基本上都遵循JTAG規(guī)范,并帶有邊界掃描功能,此類芯片內(nèi)集成了一個JTAG電路結(jié)構(gòu)。JTAG電路由TAP(測試訪問端口)、TAP控制器、指令寄存器、測試數(shù)據(jù)寄存器組成。另外,ARM7TDMI核還包含了一個提供在線調(diào)試支持的EmbeddedICE宏單元。圖1系統(tǒng)框圖EmJTAG和PC機通過USB總線連接,與目標板則遵循JTAG調(diào)試接口標準。JTAG規(guī)范中,使用稱為“邊界掃描單元”的基本結(jié)構(gòu)。邊界掃描單元將JTAG電路與處理器邏輯電路聯(lián)系起來,通過它可以將一個輸入信號加載到處理器邏輯中而不影響邏輯的其他電路,也可以將處理器邏輯的輸出信號采樣到邊界掃描單元中。若干個邊界掃描單元構(gòu)成邊界掃描寄存器(BSR),也稱為“邊界掃描鏈”。邊界掃描寄存器的數(shù)據(jù)通過JTAG接口的TDI引腳和TDO引腳串行移進移出。PC機上需要實現(xiàn):EmJTAG的USB驅(qū)動程序和調(diào)試器軟件。EmJTAG上需要實現(xiàn):USB固件程序和用于產(chǎn)生JTAG信號的邊界掃描程序。2硬件設(shè)計和實現(xiàn)系統(tǒng)的硬件部分主要是指協(xié)議轉(zhuǎn)換器EmJTAG的實現(xiàn)。協(xié)議轉(zhuǎn)換器的功能,就是接收PC機上調(diào)試器軟件發(fā)送的遠程調(diào)試協(xié)議信息,將它轉(zhuǎn)換成JTAG時序信號發(fā)送到目標板,然后把目標板的反饋信息或者數(shù)據(jù)返回給PC機的調(diào)試器軟件。EmJTAG使用意法半導體(ST)公司的ST72651芯片,原理框圖如圖2所示。它集成了1個全速(12Mbps)USB接口模塊,1個時鐘頻率為24MHz的數(shù)據(jù)傳輸協(xié)處理器(DTC),32KB程序存儲空間,5KBRAM,硬件I2C和SPI接口,多達47個可編程I/O口;工作電壓為2.7~5.5V,由USB直接供電。圖2EmJTAG原理框圖與PC機通信方面,USB接口部分只需要將DP腳上拉一個電阻,使PC機識別到USB設(shè)備。DTC模塊產(chǎn)生4個時鐘信號作為JTAG時鐘信號(TDI、TDO、TMS和TCK),由I/O口引出,外部再加一個接口驅(qū)動芯片74LVC244,將這4個信號連接到標準的JTAG接口上。TAP控制器復位信號nTRST和系統(tǒng)復位信號nSRST通過I/O邏輯直接控制。EmJTAG采用USB供電方式,同時在TCK引腳上連接一個指示燈BUSY,顯示系統(tǒng)是否處于忙狀態(tài)。接口驅(qū)動芯片74LVC244由內(nèi)部集成的電壓校準器產(chǎn)生3.3V來提供電壓。3軟件設(shè)計和實現(xiàn)軟件部分主要包括:PC機上的調(diào)試器軟件,EmJTAG協(xié)議轉(zhuǎn)換器的PC端驅(qū)動程序以及EmJTAG中的固件程序。3.1PC機上的調(diào)試器軟件采用VC++6.0MFC。其主要功能是與EmJTAG的PC端驅(qū)動程序通信,將調(diào)試命令通過USB總線發(fā)送至EmJTAG。3.2EmJTAG的PC端驅(qū)動程序使用Driverstudio3.1開發(fā)Windows下的USB驅(qū)動程序,使EmJTAG和PC機的應(yīng)用程序可以進行數(shù)據(jù)交互。3.3EmJTAG中的固件程序固件程序使用意法半導體(ST)開發(fā)工具STVD7forInDARTSTX進行開發(fā)。這一部分也是調(diào)試系統(tǒng)重要的部分,即如何產(chǎn)生JTAG時序信號控制ARM核。EmJTAG中的固件分成以下多個模塊實現(xiàn)。3.3.1DTC軟件插件程序模塊圖3DTC功能框圖DTC功能框圖如圖3所示。DTC是ST72651內(nèi)部集成的數(shù)據(jù)傳輸協(xié)處理器,也是一個通用的串行/并行通信接口。通過改變其內(nèi)運行的插件程序,DTC可以方便地完成不同的高速數(shù)據(jù)傳輸操作。插件程序(為256字節(jié))開始時存放在ST72651的Flash中,芯片運行的程序會將插件程序加載到DTCSWRAM中,然后控制DTC運行這段插件程序。ST7核也可以讀寫DTC的數(shù)據(jù)傳輸緩沖區(qū),因此需要有一個仲裁電路用于防止ST7核和DTC訪問該緩沖區(qū)時發(fā)生沖突。DTC有一套簡單的指令集。ST7核通過DTC控制寄存器DTCCR控制DTC的操作,通過DTC狀態(tài)寄存器DTCSR查詢DTC的狀態(tài),通過DTC指針寄存器DTCPR改變DTC的操作指針。DTC有4種操作狀態(tài):空閑狀態(tài)(IDLE),加載插件程序狀態(tài)(RAMLOAD),運行狀態(tài)(RUNNING)和改變操作指針狀態(tài)(POINTERCHANGE)。通過改變DTCCR寄存器的RUN、INIT和LOAD位可以實現(xiàn)4種狀態(tài)間的轉(zhuǎn)換。將插件程序加載到DTCSWRAM中的步驟如下:◆清除DTCCR寄存器的RUN位,使DTC進入IDLE狀態(tài),停止DTC;◆設(shè)置DTCCR寄存器的LOAD位,使DTC進入RAMLOAD狀態(tài),以允許寫DTCRAM;◆將插件程序復制到DTCSWRAM中;◆清除DTCCR寄存器的LOAD位,使DTC返回到IDLE狀態(tài),恢復DTCRAM寫保護。使DTC運行其RAM(即DTCSWRAM)中的插件程序的步驟如下:◆清除DTCCR寄存器的RUN位,使DTC進入IDLE狀態(tài),停止DTC◆將插件程序的起始地址填入DTCPR寄存器中;◆設(shè)置DTCCR寄存器的INIT位,使DTC進入POINTERCHANGE狀態(tài),將DTCPR寄存器中的值復制到DTC中;◆清除DTCCR寄存器的INIT位,使DTC返回到IDLE狀態(tài);◆設(shè)置DTCCR寄存器的RUN位,使DTC進入RUNNING狀態(tài),開始運行。DTC運行的插件程序?qū)崿F(xiàn)的功能是:將數(shù)據(jù)傳輸緩沖區(qū)內(nèi)的數(shù)據(jù)快速移出I/O口,或者從I/O快速移入數(shù)據(jù)到數(shù)據(jù)傳輸緩沖區(qū)中。DTC操作的I/O口作為4個JTAG信號:TCK、TMS、TDI和TDO。TCK作為移入/移出數(shù)據(jù)的觸發(fā)時鐘;TDI作為移出數(shù)據(jù)出口;TDO作為移入數(shù)據(jù)進口;TMS作為輸入信號,與TCK一起決定TAP控制器狀態(tài)的轉(zhuǎn)移過程。插件程序用DTC匯編指令編寫,然后通過ST公司提供的一個簡單匯編器將匯編源代碼轉(zhuǎn)化成DTC機器指令,燒寫到ST72651的Flash存儲器中。3.3.2掃描鏈操作模塊掃描鏈操作模塊調(diào)用DTC軟件插件程序,完成初始化TAP控制器、掃描鏈1操作和掃描鏈2操作。
(1)初始化TAP控制器TAP控制器的基本功能是產(chǎn)生時鐘信號和控制信號。它包括一個帶有16個狀態(tài)的有限狀態(tài)機:TestLogicReset狀態(tài)、RunTest/Idle狀態(tài)、SelectDRScan狀態(tài)、SelectIRScan狀態(tài)、CaptureDR狀態(tài)、ShiftDR狀態(tài)、Exit1DR狀態(tài)、PauseDR狀態(tài)、Exit2DR狀態(tài)、UpdateDR狀態(tài)、CaptureIR狀態(tài)、ShiftIR狀態(tài)、Exit1IR狀態(tài)、PauseIR狀態(tài)、Exit2IR狀態(tài)和UpdateIR狀態(tài)。初始化TAP控制器的目的是使TAP控制器進入SelectDRScan狀態(tài)。無論當前TAP控制器處于什么狀態(tài),只要在TMS為1時產(chǎn)生5個TCK信號,TAP控制器就進入TestLogicReset狀態(tài)。因此,使TAP控制器進入SelectDRScan狀態(tài)的步驟為:首先使TMS為1,產(chǎn)生5個TCK信號,使TAP控制器進入TestLogicReset狀態(tài);然后使TMS為0,產(chǎn)生1個TCK信號,使TAP控制器進入RunTest/Idle狀態(tài);使TMS為1,產(chǎn)生1個TCK信號,使TAP控制器進入SelectDRScan狀態(tài)。(2)掃描鏈1操作掃描鏈1是JTAG電路中的一種測試數(shù)據(jù)寄存器,主要用于內(nèi)核測試和調(diào)試過程。掃描鏈1有33位,按掃描先后順序依次為:BREAKPT位(輸入),D31~D0(輸入/輸出)。掃描鏈1操作的目的是移入BREAKPT位,同時向/從數(shù)據(jù)總線移入/移出32位數(shù)據(jù)。操作步驟如下:◆初始化TAP控制器,使TAP控制器進入SelectDRScan狀態(tài);◆使TMS為1,產(chǎn)生1個TCK信號,使TAP控制器進入SelectIRScan狀態(tài);◆使TMS為0,產(chǎn)生2個TCK信號,使TAP控制器進入ShiftIR狀態(tài);◆往TAP控制器的指令寄存器移入JTAG指令SCAN_N(b0010);◆使TAP控制器退出ShiftIR狀態(tài),進入ShiftDR狀態(tài);◆往掃描鏈選擇寄存器移入b0001,選擇掃描鏈1;◆使TAP控制器退出ShiftDR狀態(tài),進入ShiftIR狀態(tài);◆往TAP控制器的指令寄存器移入JTAG指令I(lǐng)NTEST(b1100);◆使TAP控制器退出ShiftIR狀態(tài),進入ShiftDR狀態(tài);◆移入BREAKPT位,移入數(shù)據(jù)D31~D0(或移出數(shù)據(jù)D31~D0);◆使TAP控制器退出ShiftDR狀態(tài),進入SelectDRScan狀態(tài)。
(3)掃描鏈2操作掃描鏈2也是一種測試數(shù)據(jù)寄存器,用于訪問EmbeddedICE宏單元的寄存器。掃描鏈2有38位,按掃描先后順序依次為:EmbeddedICE寄存器的D0~D31,EmbeddedICE寄存器的A0~A4,讀/寫位。掃描鏈2操作的目的是讀寫EmbeddedICE宏單元的寄存器。操作步驟如下:◆初始化TAP控制器,使TAP控制器進入SelectDRScan狀態(tài);◆使TMS為1,產(chǎn)生1個TCK信號,使TAP控制器進入SelectIRScan狀態(tài);◆使TMS為0,產(chǎn)生2個TCK信號,使TAP控制器進入ShiftIR狀態(tài);◆往TAP控制器的指令寄存器移入JTAG指令SCAN_N(b0010);◆使TAP控制器退出ShiftIR狀態(tài),進入ShiftDR狀態(tài);◆往掃描鏈選擇寄存器移入b0010,選擇掃描鏈2;◆使TAP控制器退出ShiftDR狀態(tài),進入ShiftIR狀態(tài);◆往TAP控制器的指令寄存器移入JTAG指令I(lǐng)NTEST(b1100);◆使TAP控制器退出ShiftIR狀態(tài),進入ShiftDR狀態(tài);◆移入欲寫的數(shù)據(jù)D0~D31;◆移入欲讀寫的EmbeddedICE寄存器的地址;◆移入讀/寫位(讀為0,寫為1);◆如果為讀,則移出讀到的EmbeddedICE寄存器的值D0~D31;◆使TAP控制器退出ShiftDR狀態(tài),進入SelectDRScan狀態(tài)。3.3.3EmbeddedICE寄存器操作模塊EmbeddedICE寄存器的讀寫通過對掃描鏈2操作實現(xiàn)。讀時,將欲讀的EmbeddedICE寄存器地址作為參數(shù)調(diào)用掃描鏈2操作函數(shù);寫時,將欲寫的值和EmbeddedICE寄存器地址作為參數(shù)調(diào)用掃描鏈2操作函數(shù)。3.3.4高層調(diào)試命令模塊通過調(diào)用掃描鏈操作模塊和EmbeddedICE寄存器操作模塊,實現(xiàn)了讀寫核寄存器、讀寫存儲器、斷點及觀察點操作、單步或全速運行程序等調(diào)試控制命令。這些命令供主程序狀態(tài)機模塊調(diào)用。3.3.5USB接口驅(qū)動模塊USB接口驅(qū)動模塊主要包含5個函數(shù):函數(shù)InitUSB()用于初始化USB模塊;函數(shù)USB_Polling()處理USB主機發(fā)來的USB標準設(shè)備請求,實現(xiàn)USB枚舉階段的傳輸過程,同時根據(jù)狀態(tài)寄存器的標志位調(diào)用相應(yīng)的端點處理函數(shù);CTR(正確傳輸)中斷服務(wù)程序用于處理端點上發(fā)生的各種中斷;函數(shù)B_RecvDataEP2(unsignedchar*dp,uint8len)和USB_SendDataEP2(unsignedchar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生所醫(yī)務(wù)人員值班制度
- 幼兒園壞境衛(wèi)生清掃制度
- 節(jié)前衛(wèi)生大檢查通報制度
- 空調(diào)專賣店衛(wèi)生制度
- 旅店業(yè)衛(wèi)生證照管理制度
- 看守所衛(wèi)生室工作制度
- 健身房衛(wèi)生培訓制度
- 食品藥品監(jiān)督所衛(wèi)生制度
- 龍巖早餐店衛(wèi)生管理制度
- 定期清潔衛(wèi)生先制度
- 要素式民事起訴狀(房屋租賃合同糾紛)
- 急性呼吸窘迫綜合征病例討論
- DB11∕T 510-2024 公共建筑節(jié)能工程施工質(zhì)量驗收規(guī)程
- 英語滬教版5年級下冊
- T/CPFIA 0005-2022含聚合態(tài)磷復合肥料
- GB/T 43590.507-2025激光顯示器件第5-7部分:激光掃描顯示在散斑影響下的圖像質(zhì)量測試方法
- QGDW12505-2025電化學儲能電站安全風險評估規(guī)范
- 顧客特殊要求培訓課件
- 幼兒園助教培訓:AI賦能教師教學能力提升
- 經(jīng)銷商會議總結(jié)模版
- 兩癌預防知識講座
評論
0/150
提交評論