나는 breakpoints를 설정하는 일반적인 관례 인 step-in & step-out이 ROM에 상주하는 코드에서도 똑같이 작동하는지 알고 싶다. 우리는 ROM 디버깅을 위해 무언가를 추가해야만합니까?ROM에있는 코드를 디버깅하는 방법은 무엇입니까?
답변
사용하는 디버그 하드웨어에 따라 크게 달라질 수 있습니다. 많은 마이크로 컨트롤러에는 기본적으로 프로그램 카운터 비교기 인 하드웨어 중단 점을 포함하는 온칩 디버그 하드웨어가 포함되어 있습니다. 본질적으로 온 칩 에뮬레이터 (ICE) 인 데이터 액세스 브레이크 포인트 및 명령 트레이스와 같은 다른 기능이 지원 될 수 있습니다.
하드웨어 중단 점은 반드시 제한된 리소스입니다. ARM Cortex-M3/4에는 8 개가 있지만 ARM7 장치에는 2 개만 있습니다.
어느 쪽이든, 온칩 디버그를 사용하려면 대상을 호스트 디버거 소프트웨어에 인터페이스하기 위해 적합한 디버거 하드웨어 (대개 JTAG 또는 벤더 독점 인터페이스를 통해)가 필요합니다.
온칩 디버그가없는 칩의 경우 일반적으로 인서 킷 에뮬레이터를 사용합니다. 이것은 프로세서 대신 타겟 보드에 연결하고 호스트 디버그 소프트웨어로 직접 제어 할 수있는 디버그 하드웨어입니다. 에뮬레이터 하드웨어는 실제 프로세서와 동일하게 명령을 실행하지만 정지 및 계단식으로 중단 점을 설정할 수 있습니다. 본질적으로 ICE는 디버그를 지원하는 타겟 프로세서의 특별 버전처럼 작동합니다. 진정한 ICE는 온칩 디버그 기능이 PIC 및 AVR과 같은 소형 장치에서도 거의 유비쿼터스이기 때문에 현대 프로세서에서는 흔하지 않지만 일부 외부 디버그 하드웨어는 온칩 디버그에서 사용할 수없는 기능을 지원할 수 있습니다. 예를 들어 Segger의 J-Link는 ARM7 및 Cortex-M3/4에서 unlimited break-points을 지원합니다.
- 1. 하스켈 코드를 디버깅하는 방법은 무엇입니까?
- 2. IE에서 코드를 디버깅하는 방법은 무엇입니까?
- 3. AngularJS 코드를 디버깅하는 방법은 무엇입니까?
- 4. 내 앱을 디버깅하는 동안 Android SDK 코드를 디버깅하는 방법은 무엇입니까?
- 5. VSCode에서 C++ 코드를 디버깅하는 방법은 무엇입니까? MacOS
- 6. 내 C gstreamer 코드를 디버깅하는 방법은 무엇입니까?
- 7. 이 plsql 코드를 디버깅하는 방법은 무엇입니까?
- 8. Eclipse IDE에서 스칼라 코드를 디버깅하는 방법은 무엇입니까?
- 9. CSS가 적용되는 HTML 코드를 디버깅하는 방법은 무엇입니까?
- 10. C++에서 WM_PAINT의 코드를 디버깅하는 방법은 무엇입니까?
- 11. 혼합 된 JNI 코드를 디버깅하는 방법은 무엇입니까?
- 12. android에서 순수 네이티브 코드를 디버깅하는 방법은 무엇입니까?
- 13. 리눅스 커널의 특정 코드를 디버깅하는 방법은 무엇입니까?
- 14. rabbitmq ldap 코드를 디버깅하는 방법은 무엇입니까?
- 15. 개체 이니셜 라이저 코드를 디버깅하는 방법은 무엇입니까?
- 16. 원격 컴퓨터에서 코드를 실행하고 디버깅하는 방법은 무엇입니까?
- 17. OCaml 코드를 올바르게 디버깅하는 방법은 무엇입니까?
- 18. 루아 스크립트 코드를 디버깅하는 방법은 무엇입니까?
- 19. 안드로이드에서 자바 스크립트 코드를 디버깅하는 방법은 무엇입니까?
- 20. Xcode에서 플러그인 소스 코드를 디버깅하는 방법은 무엇입니까?
- 21. Jsx 코드를 디버깅하는 방법
- 22. 맬웨어 주입 코드를 디버깅하는 방법은 무엇입니까? 나는 악성 코드를 디버깅하고
- 23. JBossESB를 디버깅하는 방법은 무엇입니까?
- 24. xUnit으로 디버깅하는 방법은 무엇입니까?
- 25. 이 자바 코드를 디버깅하는 방법은 무엇입니까? 이 코드의 오류는 무엇입니까?
- 26. 스핑크스를 디버깅하는 방법은 무엇입니까?
- 27. popover를 디버깅하는 방법은 무엇입니까?
- 28. 인증을 디버깅하는 방법은 무엇입니까?
- 29. ExceptionInInitializationError를 디버깅하는 방법은 무엇입니까?
- 30. django로 디버깅하는 방법은 무엇입니까?
어떤 프로세서가 있습니까? 임베디드 프로세서는 종종 적은 수의 브레이크 포인트에 대한 하드웨어 지원을 제공하므로 관련 디버거가 ROM에서이를 중단시킬 수 있습니다. –
일반적으로 사용자는 rom을 수정하여 지침을 대체하지 않으며,이를 수행하는 디버거의 취향에 맞지 않습니다. 전형적인 롬 기반 디버깅 트릭, led, 직렬 포트, jtag 등을 사용합니다. –