在嵌入式系統(tǒng)的設(shè)計中,仿真應(yīng)用的范圍主要集中在對程序的仿真上。在ARM的開發(fā)過程中,一種最簡單和原始的開發(fā)流程是:編寫程序,然后燒寫到芯片上驗證功能,這種方法對于簡單的小系統(tǒng)是可以對付的,但在大系統(tǒng)中使用這種方法則是完全不可能的。所以很多時候我們需要在不燒寫代碼的情況下調(diào)試程序,這就是仿真調(diào)試技術(shù)。
現(xiàn)代調(diào)試技術(shù)可以分為軟件仿真調(diào)試和硬件仿真調(diào)試兩種:
一.軟件仿真(指令集仿真):
概念:
用數(shù)據(jù)結(jié)構(gòu)描述目標(biāo)機CPU中各個寄存器和其他資源(內(nèi)存等),通過軟件模擬,可以逐條指令解釋執(zhí)行目標(biāo)機可執(zhí)行映象中的程序。
應(yīng)用場合:
● 當(dāng)嵌入式軟件開發(fā)在目標(biāo)硬件平臺不存在的情況下進行,就要使用這種軟件來模擬目標(biāo)CPU,以驗證代碼邏輯。
● 是學(xué)習(xí)嵌入式開發(fā)有效地工具,可以讓學(xué)習(xí)者從底層具體硬件細節(jié)中解脫出來,專注于軟件,尤其是與具體硬件無關(guān)的系統(tǒng)軟件(TCP/IP協(xié)議棧)。
幾個不錯的硬件模擬平臺:
● Skyeye:清華大學(xué)計算機系博士后陳渝發(fā)起,開源項目,主要模擬ARM內(nèi)核CPU。
● ARMulator:ARM公司推出,ARM指令集模擬器(ADS,Realview MDK上就用這個)。
● ZIX:一個快捷高效、功能強大、易于配置的嵌入式Linux開發(fā)環(huán)境。
軟件仿真的缺點:
無法完全仿真與硬件相關(guān)的部分,最終還要通過硬件仿真來完成最終的設(shè)計。
二.硬件仿真調(diào)試:
以前的芯片沒有JTAG調(diào)試邏輯,要向仿真它就必須要有專門的仿真器,這種仿真器成本較高,而且每種芯片都不一樣,現(xiàn)在這種仿真器已經(jīng)不存在了。
現(xiàn)在的芯片一般都內(nèi)置了JTAG調(diào)試邏輯,并不需要CPU仿真器,需要的只是一個JTAG協(xié)議轉(zhuǎn)接器(現(xiàn)在還稱其為仿真器,其實叫做調(diào)試器比較合適)。所以下面主要介紹JTAG及其仿真技術(shù)。
JTAG簡介
JTAG是Joint Test Action Group的簡稱,該組織致力于統(tǒng)一芯片的測試標(biāo)準(zhǔn),它們最初向IEEE提出了IEEE1149.1標(biāo)準(zhǔn),后來經(jīng)過IEEE批準(zhǔn)并且標(biāo)準(zhǔn)化,所以IEEE1149.1標(biāo)準(zhǔn)又叫JTAG標(biāo)準(zhǔn),它是一套芯片測試接口和標(biāo)準(zhǔn),現(xiàn)在幾乎所有的CPU核里面都會實現(xiàn)JTAG邏輯單元。JTAG原本是用來測試芯片設(shè)計是否正確,其基本原理就是在芯片的各個管腳上放置鎖存器,然后串聯(lián)起來構(gòu)成移位寄存器,可以監(jiān)控芯片管腳的輸入和輸出。后來大家發(fā)現(xiàn)用JTAG在線調(diào)試芯片非常方便(其實就是利用JTAG控制CPU內(nèi)核),還不需要設(shè)計專門的仿真芯片,因此就出現(xiàn)了用JTAG調(diào)試風(fēng)行的局面。
邊界掃描技術(shù)(Boundary-Scan):
JTAG調(diào)試主要就是基于這種邊界掃描技術(shù)。
邊界掃描技術(shù)的基本思想是在靠近芯片的輸入輸出管腳上增加一個移位寄存器單元。因為這些移位寄存器單元都分布在芯片的邊界上,所以被稱為邊界掃描寄存器 (Boundary-Scan Register Cell) 。當(dāng)芯片處于調(diào)試狀態(tài)的時候,這些邊界掃描寄存器可以將芯片和外圍的輸入輸出隔離開來。通過這些邊界掃描寄存器單元,可以實現(xiàn)對芯片輸入輸出信號的觀察和控制。
JTAG的主要作用:
● 檢測芯片是否良好
■這是JTAG最初設(shè)計的目標(biāo)
● 鏡像文件的燒寫功能
■可以燒寫編譯出來的二進制或者十六進制可執(zhí)行文件到目標(biāo)板的Flahs芯片上
■當(dāng)開發(fā)板為裸板(沒有固化任何程序)的時候,通常需要通過JTAG接口下載bootloader
■調(diào)試功能
■JTAG接口為宿主機和目標(biāo)系統(tǒng)之間的通信、控制提供了方便的途徑
ARM7TDMI調(diào)試架構(gòu):
一個調(diào)試系統(tǒng)通常包含三個部分:
● 調(diào)試主機
■是一臺運行調(diào)試軟件(ADS,Keil等)的計算機
■可以發(fā)出一些高層的調(diào)試命令,設(shè)置斷點,訪問內(nèi)存等
● 協(xié)議轉(zhuǎn)換器
■將調(diào)試主機發(fā)出的高層調(diào)試命令轉(zhuǎn)換為底層的ARM JTAG調(diào)試命令
■調(diào)試目標(biāo)
■基于目標(biāo)芯片的開發(fā)板
ARM7TDMI典型的調(diào)試架構(gòu)如下圖所示:
經(jīng)過協(xié)議轉(zhuǎn)換器進行命令解釋,主機上運行的調(diào)試軟件就可以通過JTAG接口直接和目標(biāo)芯片對話了。
為了支持底層的調(diào)試,ARM7TDMI提供了硬件上的調(diào)試擴展,包括:
● 停止程序的運行
● 檢查和修改ARM7TDMI的內(nèi)核狀態(tài)
● 觀察和修改內(nèi)存
● 恢復(fù)程序的運行
常見ARM調(diào)試工具:
● BDI1000/2000/3000
■非常好的調(diào)試工具,可以調(diào)試ARM、MIPS、PowerPC、Xscale等多種架構(gòu)處理器
■JTAG下載速度可以上兆,以太網(wǎng)接口
■性能優(yōu)越但是價格不菲,可以調(diào)試Linux內(nèi)核這種復(fù)雜的代碼
● U-Link
■U-Link是Keil公司做的用于ARM和某些增強型8051單片機調(diào)試的工具
■由于Keil公司做的時候沒有加密,導(dǎo)致現(xiàn)在盜版滿天飛
■U-link僅僅支持Keil,JTAG下載速度20K~30K
U-Link下載程序不是簡單通過JTAG,而是先用JTAG下載一段固件程序到目標(biāo)板,然后再用這個固件程序和JTAG把用戶代碼寫入Flash以提高速度
● J-Link
■J-Link是IAR公司為ARM芯片開發(fā)的調(diào)試工具
■支持RDI協(xié)議的調(diào)試工具,如Keil、ADS、IAR等
■J-Link不支持ARM10以上的內(nèi)核
■JTAG下載速度400K~500K
● Multi-ICE
■ARM公司原創(chuàng)調(diào)試工具,支持全系列ARM芯片
■JTAG下載速度130K左右
● Wiggler電纜
■Wiggler是世界上最泛濫的一種調(diào)試工具
■結(jié)構(gòu)非常簡單:一片74HC244 + 一個9013 + 幾個電阻
■性能一般,但是價格非常便宜
■后人又在Wiggler的硬件基礎(chǔ)上開發(fā)了很多的調(diào)試工具,例如大名鼎鼎的H-Jtag
-
ARM
+關(guān)注
關(guān)注
134文章
9179瀏覽量
369400 -
仿真
+關(guān)注
關(guān)注
50文章
4127瀏覽量
134050
發(fā)布評論請先 登錄
相關(guān)推薦
Simcenter Flomaster熱流體仿真軟件
![Simcenter Flomaster熱流體<b class='flag-5'>仿真</b><b class='flag-5'>軟件</b>](https://file1.elecfans.com/web2/M00/05/C8/wKgZomberEOAN841AAAsGK6TY38525.png)
【干貨分享】硬件在環(huán)仿真(HiL)測試
![【干貨分享】<b class='flag-5'>硬件</b>在環(huán)<b class='flag-5'>仿真</b>(HiL)測試](https://file1.elecfans.com/web2/M00/07/D6/wKgaombr65SAAnfRAABTdl3VZXc471.png)
keil軟件仿真如何仿真輸入
仿真器的使用方法有哪些
電路仿真和PCB設(shè)計軟件
![電路<b class='flag-5'>仿真</b>和PCB設(shè)計<b class='flag-5'>軟件</b>](https://file.elecfans.com/web2/M00/27/37/poYBAGHBmA2AD7e7AAAahjWuYP4250.jpg)
評論