2014-03-02 3 views
0

나는 breakpoints를 설정하는 일반적인 관례 인 step-in & step-out이 ROM에 상주하는 코드에서도 똑같이 작동하는지 알고 싶다. 우리는 ROM 디버깅을 위해 무언가를 추가해야만합니까?ROM에있는 코드를 디버깅하는 방법은 무엇입니까?

+1

어떤 프로세서가 있습니까? 임베디드 프로세서는 종종 적은 수의 브레이크 포인트에 대한 하드웨어 지원을 제공하므로 관련 디버거가 ROM에서이를 중단시킬 수 있습니다. –

+0

일반적으로 사용자는 rom을 수정하여 지침을 대체하지 않으며,이를 수행하는 디버거의 취향에 맞지 않습니다. 전형적인 롬 기반 디버깅 트릭, led, 직렬 포트, jtag 등을 사용합니다. –

답변

1

사용하는 디버그 하드웨어에 따라 크게 달라질 수 있습니다. 많은 마이크로 컨트롤러에는 기본적으로 프로그램 카운터 비교기 인 하드웨어 중단 점을 포함하는 온칩 디버그 하드웨어가 포함되어 있습니다. 본질적으로 온 칩 에뮬레이터 (ICE) 인 데이터 액세스 브레이크 포인트 및 명령 트레이스와 같은 다른 기능이 지원 될 수 있습니다.

하드웨어 중단 점은 반드시 제한된 리소스입니다. ARM Cortex-M3/4에는 8 개가 있지만 ARM7 장치에는 2 개만 있습니다.

어느 쪽이든, 온칩 디버그를 사용하려면 대상을 호스트 디버거 소프트웨어에 인터페이스하기 위해 적합한 디버거 하드웨어 (대개 JTAG 또는 벤더 독점 인터페이스를 통해)가 필요합니다.

온칩 디버그가없는 칩의 경우 일반적으로 인서 킷 에뮬레이터를 사용합니다. 이것은 프로세서 대신 타겟 보드에 연결하고 호스트 디버그 소프트웨어로 직접 제어 할 수있는 디버그 하드웨어입니다. 에뮬레이터 하드웨어는 실제 프로세서와 동일하게 명령을 실행하지만 정지 및 계단식으로 중단 점을 설정할 수 있습니다. 본질적으로 ICE는 디버그를 지원하는 타겟 프로세서의 특별 버전처럼 작동합니다. 진정한 ICE는 온칩 디버그 기능이 PIC 및 AVR과 같은 소형 장치에서도 거의 유비쿼터스이기 때문에 현대 프로세서에서는 흔하지 않지만 일부 외부 디버그 하드웨어는 온칩 디버그에서 사용할 수없는 기능을 지원할 수 있습니다. 예를 들어 Segger의 J-Link는 ARM7 및 Cortex-M3/4에서 unlimited break-points을 지원합니다.

관련 문제