MDSTECH
TRACE32
TRACE32 Solution
TRACE32 Trace Solution
TRACE32 More Product
TRACE32 Software Solution
Why TRACE32?
교육신청
정규교육
교육과정 안내
교육장 안내
교육설문
자료실
TRACE32 소프트웨어
TRACE32 매뉴얼
iTSP
TRACE32 영상
인증서
고객지원
뉴스레터
Q&A
FAQ
원격지원
검색창
검색버튼
회원가입
로그인
TRACE32
TRACE32 Solution
TRACE32 Trace Solution
TRACE32 More Product
TRACE32 Software Solution
Why TRACE32?
교육신청
정규교육
교육과정 안내
교육장 안내
교육설문
자료실
TRACE32 소프트웨어
TRACE32 매뉴얼
iTSP
TRACE32 영상
인증서
고객 지원
뉴스레터
Q&A
FAQ
원격지원
사이트맵 보기
TrustZone Debugging시 유용한 기능 문서 원본 보기
←
TrustZone Debugging시 유용한 기능
이동:
둘러보기
,
검색
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게만 가능합니다:
사용자
문서의 원본을 보거나 복사할 수 있습니다:
<h1><span style="font-size: 2em;">1. Overview</span></h1> <p>ARMv6에서부터 Security를 위해 Security Extenstion을 제공하고 있습니다. 해당 Feature를 Implemention할경우 CPU는 Secure State와 Non-Secure State를 Physically 구분하여 code를 실행하게 됩니다. Secure State에서는 모든 Resource에 대한 Access권한을 가질 수 있으며 Non-Secure State에서는 Secure Area로 정의된 영역을 Access하는데 제한을 받게 됨을 통해 보안을 유지하도록 합니다. 아래 그림에서 보는 것처럼 Secrue State 변경은 TrustZone Monitor를 통해서만 허용하게 됩니다.</p> <p>Debugging관점에서 볼 때 현재 MMU가 켜져 있을 경우 Secure와 Non-Secure Code는 각각 동일 Virtual Address에서 실행하는 환경이 있을 수 있으며 이런 경우 Secure와 Non-Secure에 대한 인지가 필수적으로 필요하게 됩니다. 즉 동일 Address에서 Secure/Non-Secure에 따라 다른 코드가 동작하게 될 것입니다. 따라서 개발자 의동에 따라 원하는 Secure State에서만 유효한 BreakPoint 설정이 가능하고 해당 State에 맞는 C/C++ Code를 찾아 개발자에게 보여줄 수 있어야 할 것입니다.</p> <p>다음 장에서는 바로 이러한 환경에서 각 State에 따라 소스코드와 BreakPoint를 관리하는 TRACE32 명령들에 대한 내용을 살표보도록 하겠습니다.</p> <p> </p> <p> </p> <p>자료출처: Extensions to the ARMv7-A Architecture from ARM</p> <p> </p> <h2>1.1. Secure/NonSecure/ Hyervisor(EL2) Breakpoint 설정</h2> <p>Processor 동작 모드에 따라 Breakpoint 설정이 가능합니다(2015년 1월~ 버전). 아래 그림은 같은 Address이지만 Secure와 NonScure에 따라 다른 BreakPoint가 설정되어 있는 것을 볼 수 있습니다.</p> <p>또한 동일 Address이지만 Source code도 다른 code가 보이는 것을 볼 수 있습니다. 즉 동작 Mode에 따라 동일 Address에 다른 Application이 동작할 수 있고 Debugger는 이런 환경에서 구분하여 Debugging할 수 있느 환경을 제공해 주어야 합니다.</p> <p> </p> <p> </p> <h3>1.1.1. 동작 Mode(or Exception Level)에 따른 BreakPoint 설정</h3> <p>기본적으로 Breakpoint를 설정하면 동작모드에 상관없이 설정됩니다. 그러나 어떤 경우에는 특정 동작 Mode에서만 유효하도록 설정할 수 있습니다. 특히 Secure OS를 Debugging 한다거나 Hypervisor Mode debugging을 효율적으로 하고자 할 경우 필요하게 될 것입니다.</p> <p>사용방법은</p> <p>1) SYStem.Option.ZoneSPACES ON ; 동작 Mode를 구분하여 BreakPoint 관리</p> <p>2) 의도하는 동작 모드에 대해 BreakPoint를 설정</p> <p>Ex) Break.Set H:0x30E000 ; Hypervisor Mode(EL2) SoftBreakpoint(RAM 공간인 경우)</p> <p> Break.Set N:0x202000 ; NonSecure World(EL1&EL0) SoftBreakpoint(RAM 공간인 경우)</p> <p> Break.Set Z:0x202004 ; Secure World(EL1&EL0) SoftBreakpoint(RAM 공간인 경우)</p> <p>Break.Set H:0x30E000 /Onchip ; Hypervisor(EL2) Mode Onchip Breakpoint</p> <p> Break.Set N:0x202000 /Onchip ; NonSecure(EL1&EL0) World Onchip Breakpoint</p> <p> Break.Set Z:0x202004 /Onchip ; Secure World(EL1&EL0) Onchip Breakpoint</p> <p> Break.Set Z:0x300014 /Write ; Secure World(EL1&EL0) data write breakpoint</p> <p> </p> <h3>1.1.2. 동작 Mode(or Exception Level)에 따라 구분하여 Symbol 다운로드 하기</h3> <p>기본적으로 Symbol을 다운로드하면 동작 Mode(or EL)에 상관없이 Symbol을 로드 합니다. 따라서 Linux와 Secure OS가 동시에 동작하는 Application과 같은 개발환경에서 두 동작 Mode를 동시에 Debugging하기 원한다면 매우 불편한 상황을 접하게 될 것입니다. 즉, 어드레스는 같지만 Secure/Non-Secure World에 따라 다른 코드가 위치될 수 있기 때문에 필요시마다 해당 동작모드에 대한 Symbol을 로드하여 사용해야 할 것입니다. 따라서 TRACE32는 동작모드에 따라 동일 어드레스라 할지라도 다른 Symbol을 다운로드하는 기능이 있어 이러한 번거러움을 해결해 줍니다.(2014년 11월~ 버전)</p> <p>방법은 다음과 같습니다.</p> <p> </p> <p>1) SYStem.Option.ZoneSPACES ON ; 동작 Mode를 구분하여 Symbol 관리</p> <p>2) 동작 Mode(Exception Level)에 따라 Symbol 로드</p> <p>Ex) Data.LOAD.Elf HyperAppFileName.elf H: /nocode /noclear ; @HyperVisor(or EL2)</p> <p> Data.LOAD.Elf SecureAppFileName.elf Z: /nocode /noclear ; @Secure World</p> <p>Data.LOAD.Elf NonSecAppFileName.elf N: /nocode /noclear ; @NonSecure World</p>
TrustZone Debugging시 유용한 기능
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
행위
검색
TRACE32 Dummy
TRACE32
iTSP User's Guide
aTSP User's Guide
Linux Debugging
Debugging Tips
Trace Analysis
Virtual Target
TRACE32로 바라본 ARM
TRACE32 FAQ
TRACE32 Trouble Shooting
TRACE32 Software Update
Software Revision History
DT10 / DT-Win
다운로드
DT10 Evaluation
DT-Win Evaluation
TestPoint 삽입 Error
Build Error
DT10 FAQ
도구
여기를 가리키는 문서
가리키는 글의 바뀜
특수 문서 목록
문서 정보