Tricore기반 프로세서 리셋 디버깅 방법
overview
프로세서에 리셋이 발생되면 리셋이 발생된 원인에 따라 부트 코드에서 특정 처리를 하는 경우가 있다. 하지만 JTAG기반 디버깅의 경우 리셋이 발생되면 JTAG연결이 해제 될 수 있으므로 리셋이 발생된 이후 실행 되는 코드를 디버깅 하는 것이 어렵다. TRACE32의 경우 reset event를 인식하고 reset 발생 후 실행 되는 코드를 디버깅 할 수 있는 환경을 제공 한다.
아래 그림은 TRACE32에서 제공하는 reset 디버깅을 위한 옵션이다.
Soft reset
Soft reset은 application이나 watchdog과 같은 onchip logic에 의해 발생된다. Soft reset의 경우 디버그 로직에는 영향을 주지 않기 때문에 JTAG 연결이 해제되지 않는다. 따라서 기 설정된 break point와 같은 설정이 리셋 이후에도 남아 있기 때문에 리셋이 발생되기 전 디버깅 할 코드에 미리 break point를 설정하기만 해도 디버깅하는데 문제가 없다.
TRACE32에서 soft reset이 발생된 이후 디버깅을 위해 아래 세 가지 옵션을 사용하면 된다.
- 미리 break point를 설정하고 리셋 발생 이후 실행 코드를 디버깅 하는 경우
SYStem.Option RESetBehavior RestoreGo
SYStem.Option RESetBehavior RunRestore.
위 명령어를 사용하면 reset detect후 TRACE32가 re-attach를 시도하고 타겟을 running 시킨다. 이 때 기존에 설정해둔 break point가 있고 해당 코드가 실행된다면 break point에서 타겟이 halt되고 디버깅 가능 하다.
SYStem.Option RESetBehavior Halt
위 명령어를 사용하면 TRACE32가 reset dectect 후에 re-attach를 시도하고 바로 타겟을 halt시킨다. halt되는 위치는 reset vector로부터 일부 코드가 실행된 이후로 리셋이 발생된 이후 실행된 코드를 디버깅 하기 적합한 옵션이다.
hard reset
hard reset의 경우 warm power-on reset으로 일반적으로는 외부 로직이 CPU의 reset 핀을 컨트롤하여 리셋을 발생 시킨다. 이 경우에는 onchip의 디버그 로직에도 영향이 있기 때문에 기 설정된 break point는 지워지게 된다. TRACE32는 CPU의 reset핀을 감시하여 hard reset을 detect하고 리셋 발생된 이후 디버깅 할 수 있는 환경을 제공 한다.
- 디버그 설정을 복원하고 타겟 running : SYStem.Option RESetBehavior RestoreGo
위 명령어는 hard reset이 발생 되면 reset이 완료될 때까지 대기 후 re-attach를 시도한다. re-attach가 완료된 후에는 target을 halt시켜 기존에 설정된 디버그 관련 기능을 복원하고 다시 타겟을 running시키게 된다.
- 타겟 running과 동시에 디버그 설정 복원 : SYStem.Option RESetBehavior RunRestore
이 명령어는 hard reset detect와 re-attach가 완료된 이 후 바로 타겟을 running과 디버그 설정을 동시에 복원 시킨다. 따라서 디버그 설정을 복원하는 도중에 trigger되는 break point는 손실될 수 있다. 이 옵션의 경우 타겟 halt를 하면 안 되는 리셋 디버깅에 적합하다.
- 타겟 halt : SYStem.Option RESetBehavior Halt
이 명령어는 hard-reset발생 후 re-attach를 시도하고 타겟을 halt시키는 동작을 한다. re-attach가 완료되면 자동으로 디버그 설정 또한 복원 된다. 이 옵션은 타겟 리셋 후 리셋 로직과 관련된 코어 레지스터 정보를 자세히 파악해야 하는 디버깅에 적합하다.
power cycles
Power cycles는 power-on reset을 의미한다. 타겟의 전원을 완전히 off/on 하는 동작을 의미하며 디버그 관련 설정은 지워진다. TRACE32는 타겟 voltage reference 핀과 reset핀을 감지하여 이를 detect하며 attach를 시도한다.
- 타겟 전원 인가 후 attach : SYStem.Mode StandBy
이 명령어는 타겟 전원이 off되어 있는 상태에서 실행 해야 한다. standby mode상태에서는 타겟 전원 인가되는 것을 감지하고 전원이 인가되면 attach 및 target을 halt시킨다. 만약 TRACE32 디버그 설정이 되어 있는 상황이라면 이를 타겟에 설정하고 다시 타겟을 running시킨다. 다른 요인에 의한 reset이 아니라 전원 인가 된 후 실행되는 코드를 디버깅 하려면 이 옵션을 사용하면 된다.