클럭이 공급되지 않거나 전원이 꺼진 주변 장치의 레지스터에 엑세스
기술노트 160909
아키텍처:
ARM
컴포넌트:
debugger
업데이트:
2021-07-15 오후 7:06
소개
C-SPY에서 클럭이 공급되지 않거나 혹은 전원이 꺼진 주변 장치의 레지스터에 엑세스하면 예기치 않은 결과가 발생할 수 있습니다.
논의
디버깅하는 동안 클럭이 공급되지 않거나 전원이 꺼진 주변 장치의 레지스터에 액세스하면 예기치 않은 동작이 발생할 수 있습니다. 잘못된 데이터를 읽을 수 있거나, 쓰기 작업이 예기치 않은 결과를 가져오거나 영향을 미치지 않을 수 있습니다. 경우에 따라 쓰기 또는 읽기로 인해 CPU가 재설정되거나 디버그 연결이 끊어질 수 있습니다.
이러한 경우 정확한 동작은 장치 구현에 따라 달라집니다.
메모리 창에 주변 메모리 주소 범위를 표시하거나 레지스터 창에 주변 레지스터를 표시하는 것만으로도 이러한 효과를 발생시킬 수 있습니다.
커스텀 레지스터 그룹을 사용
일부 레지스터를 보는 한 가지 방법은 클럭이 공급되지 않거나나 전원이 꺼진 주변 레지스터에 액세스하는 것을 피하는 것이며 응용 프로그램별 레지스터 그룹을 만드는 것입니다. 그렇게 하려면 디버그 세션 중에 View > Registers > Register User Groups Setup 을 선택합니다. 문제 없이 액세스할 수 있는 레지스터만 사용하여 사용자 레지스터 그룹을 생성합니다.
사전 정의된 레지스터 그룹(예: UART 및 GPIO 레지스터 조합)의 레지스터를 포함하는 결합 그룹을 생성할 수 있습니다.
결론
클럭이 공급되지 않거나, 전원 차단 또는 기타 비활성화된 주변 장치의 레지스터에 액세스하면 충돌이 발생하거나 프로그램 동작이 변경되는 경우 이를 방지하기 위한 단계를 수행해야 합니다. 다음 대안을 고려하십시오:
- 레지스터에 접근하는 것을 피하기
- 예를 들어 C-SPY 매크로를 통해 주변 장치를 활성화하여 C-SPY가 레지스터 컨텐츠에 액세스할 때 주변 장치가 활성화되었는지 확인합니다.
C-SPY 매크로와 Register User Groups에 대한 더 자세한 정보를 위해서, Help > C-SPY Debugging guide를 선택하세요.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.