인서킷 에뮬레이션
In-circuit emulationICE(In-Circuit Emulation)는 임베디드 시스템의 소프트웨어를 디버깅하기 위해 사용되는 하드웨어 디바이스 또는 인서킷 에뮬레이터를 사용하는 것입니다.디버깅 조작을 지원하거나 시스템의 주요 기능을 수행하는 추가 기능을 가진 프로세서를 사용하여 동작합니다.특히 프로세서가 한정되어 있는 오래된 시스템에서는 일반적으로 프로세서를 일시적으로 하드웨어 에뮬레이터로 교체해야 했습니다.하드웨어 에뮬레이터는 더 강력하지만 더 비싼 버전입니다.과거에는 디버깅을 위해 많은 내부 신호가 출력되는 본드아웃 프로세서의 형태였습니다.이러한 신호는 프로세서 상태에 대한 정보를 제공합니다.
최근에는 JTAG(Joint Test Action Group) 기반의 하드웨어 디버거도 취급하고 있습니다.이러한 디버거는 표준 실가동 칩을 탑재한 온칩 디버깅하드웨어를 사용하여 동등한 접근을 제공합니다.커스텀 본드아웃 버전 대신 표준 칩을 사용하면 테크놀로지를 어디서나 저렴한 비용으로 사용할 수 있으며 개발 환경과 런타임 환경 간의 차이를 대부분 제거할 수 있습니다.이 일반적인 경우, 회로 내 에뮬레이터 용어는 잘못된 명칭이며, 에뮬레이션은 더 이상 관여하지 않기 때문에 혼동스러울 수 있습니다.
임베디드 시스템은 보통 컴퓨터에 있는 키보드, 모니터, 디스크 드라이브 및 기타 사용자 인터페이스가 부족하기 때문에 프로그래머에게 특별한 문제를 일으킵니다.이러한 단점으로 인해 인서킷 소프트웨어 디버깅툴은 많은 일반적인 개발 태스크에 필수적입니다.
기능.
ICE(In-Circuit Emulator)는 임베디드 시스템에 창을 제공합니다.프로그래머는 에뮬레이터를 사용하여 임베디드 시스템에 프로그램을 로드하고 실행하며 천천히 프로그램을 통과시키고 시스템 소프트웨어에 사용되는 데이터를 보고 변경합니다.
에뮬레이터는 임베디드 시스템 컴퓨터의 중앙처리장치(CPU)를 에뮬레이트(모사)하기 때문에 그 이름을 얻습니다.기존에는 CPU 집적회로 칩이 일반적으로 배치되는 소켓에 삽입되는 플러그가 있었습니다.대부분의 최신 시스템은 타깃 시스템의 CPU를 직접 사용하며 JTAG 기반의 특별한 디버깅액세스를 사용합니다.프로세서를 에뮬레이트하거나 JTAG에 대한 액세스를 유도하면 ICE는 프로세서가 할 수 있는 모든 작업을 소프트웨어 개발자의 관리 하에 수행할 수 있습니다.
ICE는 컴퓨터 단말기 또는 개인용 컴퓨터(PC)를 임베디드 시스템에 연결합니다.단말기 또는 PC는 프로그래머가 임베디드 시스템을 조사하고 제어할 수 있는 대화형 사용자 인터페이스를 제공합니다.예를 들어 JTAG 어댑터(에뮬레이터)를 통해 그래픽 사용자 인터페이스가 없는 임베디드 타깃시스템과 통신하는 그래피컬 윈도잉인터페이스를 갖춘 소스 코드레벨 디버거를 사용하는 것은 일상적입니다.
특히 프로그램이 고장나면 대부분의 임베디드 시스템에 장애가 발생합니다.임베디드 시스템에는 메모리 액세스 오류를 검출하는 메모리 관리 유닛(MMU) 등 소프트웨어 장애의 징후를 검출하는 기본적인 기능이 결여되어 있는 경우가 많습니다.ICE가 없다면 임베디드 시스템의 개발은 매우 어려울 수 있습니다.왜냐하면 일반적으로 무엇이 잘못되었는지 알 수 없기 때문입니다.ICE를 사용하면 프로그래머는 보통 코드 조각을 테스트한 후 코드의 특정 섹션으로 오류를 분리한 다음 실패한 코드를 검사하고 다시 작성하여 문제를 해결할 수 있습니다.
ICE는 프로그래머에게 실행 중단점, 메모리 표시 및 모니터링, 입출력 제어를 제공합니다.이 외에도, ICE는 고장의 발생원을 식별하기 위해 일시 정지할 일치 기준의 범위를 찾도록 프로그래밍할 수 있습니다.
대부분의 최신 마이크로컨트롤러는 제조된 버전의 마이크로컨트롤러에서 제공되는 리소스를 디바이스 프로그래밍, 에뮬레이션 및 디버깅 기능에 사용합니다.다른 특별한 에뮬레이션버전(본드아웃)[1]은 필요 없습니다.비록 비용 효율적인 방법이지만, ICE 유닛은 목표 마이크로컨트롤러를 실제로 에뮬레이션하는 대신 에뮬레이션만 관리하기 때문에 제조 시 가격을 낮게 유지하면서 (상대적으로 소수의) 에뮬레이션 애플리케이션에 충분한 에뮬레이션 기능을 제공하기 위해 트레이드오프가 이루어져야 한다.
이점
거의 모든 임베디드 시스템에는 하드웨어 요소와 소프트웨어 요소가 있으며, 이들은 분리되어 있지만 상호의존성이 매우 높습니다.ICE를 사용하면 소프트웨어 요소를 실행하는 하드웨어에서 실행하고 테스트할 수 있지만, 여전히 프로그래머의 편의를 통해 소스 수준의 디버깅(원래 작성된 프로그램을 표시) 및 싱글 스테핑(프로그래머가 프로그램을 단계별로 실행하여 오류를 찾을 수 있음)과 같은 결함이 있는 코드를 분리할 수 있습니다.
대부분의 ICE는 ICE 호스트 컴퓨터와 테스트할 시스템 사이에 있는 어댑터 장치로 구성됩니다.핀 헤더와 케이블 어셈블리는 어댑터를 삽입 시스템 내에 실제 중앙처리장치(CPU) 또는 마이크로컨트롤러가 마운트되는 소켓에 연결합니다.최근의 ICE에서는 프로그래머가 JTAG 또는 Background Debug Mode Interface(BDM; 백그라운드디버깅 모드인터페이스)를 통해 CPU에 내장된 온칩디버깅 회선에 액세스하여 임베디드 시스템의 소프트웨어를 디버깅할 수 있습니다.이러한 시스템은 표준 버전의 CPU 칩을 사용하는 경우가 많으며, 운영 시스템의 디버깅 포트에 간단히 연결할 수 있습니다.CPU의 기능을 복제하지 않고 기존의 표준 CPU를 제어하기 위해 인서킷 디버거(ICD)라고도 합니다.CPU를 교체할 필요가 없기 때문에 CPU가 납땜되어 교환할 수 없는 실가동 유닛에서 동작할 수 있습니다.x86 Pentium에서는 특별한 '프로브 모드'가 ICE에 의해 [2]디버깅에 도움이 됩니다.
임베디드 시스템의 맥락에서 ICE는 하드웨어를 에뮬레이트하지 않습니다.실제 CPU에 직접 디버깅액세스를 제공합니다.테스트 대상 시스템은 완전히 제어되어 개발자가 코드를 직접 로드, 디버깅 및 테스트할 수 있습니다.
대부분의 호스트 시스템은 개발에 사용되는 CPU와 무관한 일반 상용 컴퓨터입니다.예를 들어 Linux PC를 사용하여 Linux를 실행할 수 없는 프로세서인 Freescale 68HC11 칩을 사용하여 시스템용 소프트웨어를 개발할 수 있습니다.
프로그래머는 보통 호스트 시스템에서 임베디드 시스템의 코드를 편집하고 컴파일합니다.호스트 시스템에는 임베디드 시스템의 실행 가능 코드를 생성하는 특별한 컴파일러가 있습니다.크로스 컴파일러 또는 크로스 어셈블러라고 불립니다.
온칩 디버깅
온칩 디버깅은 회선 내 에뮬레이션의 대체 수단입니다.유사한 목표를 달성하기 위해 다른 접근법을 사용합니다.
온칩 디버깅(Joint Test Action Group(JTAG; 조인트 테스트액션 그룹)이라고 불리기도 함)에서는 실제 가동 중인 하드웨어에 대한 추가 디버깅인터페이스를 사용합니다.내부 상태 또는 변수 검사 등 회로 내 디버깅과 동일한 기능을 제공하며 체크포인트, 브레이크포인트 및 워치포인트를 설정할 수 있습니다.차이점은 프로세서를 오프보드 디버깅에뮬레이터와 스왑하는 것이 아니라 프로세서의 추가 실리콘에 의해 프로세서가 제공된다는 것입니다.이러한 이유로 ICE의 일부 기능은 프로세서의 사양에 따라 변경됩니다.컨트롤러 보드에 추가 JTAG 인터페이스가 추가되어 모든 실가동 시스템에서 필요하지만 신호 핀이 몇 개만 필요하므로 추가 비용은 최소화됩니다.JTAG 인터페이스는 원래 실가동 테스트 종료용으로 개발되어 현재도 유용합니다.
인텔(R)
인텔(R) 286에서의 ICE 디버깅을 지원하기 위해 프로세서에서는 5개의 핀을 추가로 사용할 수 있습니다.하나는 ICE 브레이크 포인트를 외부로 강제하기 위한 입력 핀입니다.ICEBP#
사용자 메모리 [3]대신 ICE 버스를 통한 동작을 선택하기 위한 두 쌍의 출력 핀).80286 에서는, 2개의 순서(0F 04
,0F 05
)는 CPU 상태 전체를 메모리오프셋 0x800으로 덤프/복원하기 위해 싱글바이트의 오버라이드프리픽스( )를 사용합니다.F1
ICE 모드로 사용자 메모리에 액세스 할 수 있도록 합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Keil, Reinhard (July 22, 2008). "Debugging with Cortex-M3 Microcontrollers". www.embedded.com. Retrieved May 25, 2013.
- ^ "Overview of Pentium Probe Mode".
- ^ 미국 특허 4547849, Louie, Glenn; Retter, Rafi & Shanan, Neve 등, 1985-10-15년에 발행된 "Interface between a Microprocessor and a Coprocessor" (마이크로프로세서와 코프로세서 사이의 인터페이스)는 인텔 Corporation에 할당되어 있으며, "사용자 버스 사이클 상태 신호, S1# 및 아이스 사이클 ICE를 지원합니다.… ICE 버스는 데이터 읽기, 코드 읽기, 중지, 종료 및 메모리 쓰기 사이클에만 사용됩니다.리셋 시 마이크로프로세서는 호환 모드로 강제 전환됩니다.리셋(또는 ICE 브레이크 포인트)을 제외하고 호환 모드로 되돌릴 수 없습니다.ICE는 마스터 마이크로프로세서가 보호 모드에서 호환성 모드로 전환될 수 있는 유일한 경우(리셋 제외)이기 때문에 특별히 주의해야 합니다.… ICE 소프트웨어는 호환성 모드의 ICE 중단점에 이어 실행을 시작하여 대부분의 작업을 보호 모드로 전환합니다."