"HyperVisor/Secure/Nonsecure BreakPoint"의 두 판 사이의 차이
(새 문서: <h2>1.1. Hyervisor(EL2)/Secure/NonSecure Breakpoint 설정</h2> <p>Processor 동작 모드에 따라 Breakpoint 설정이 가능합니다(2015년 1월~ 버전). 아래 그...) |
|||
2번째 줄: | 2번째 줄: | ||
<p>Processor 동작 모드에 따라 Breakpoint 설정이 가능합니다(2015년 1월~ 버전). 아래 그림은 같은 Address이지만 Secure와 NonScure에 따라 다른 BreakPoint가 설정되어 있는 것을 볼 수 있습니다.</p> | <p>Processor 동작 모드에 따라 Breakpoint 설정이 가능합니다(2015년 1월~ 버전). 아래 그림은 같은 Address이지만 Secure와 NonScure에 따라 다른 BreakPoint가 설정되어 있는 것을 볼 수 있습니다.</p> | ||
<p>또한 동일 Address이지만 Source code도 다른 code가 보이는 것을 볼 수 있습니다. 즉 동작 Mode에 따라 동일 Address에 다른 Application이 동작할 수 있고 Debugger는 이런 환경에서 구분하여 Debugging할 수 있느 환경을 제공해 주어야 합니다.</p> | <p>또한 동일 Address이지만 Source code도 다른 code가 보이는 것을 볼 수 있습니다. 즉 동작 Mode에 따라 동일 Address에 다른 Application이 동작할 수 있고 Debugger는 이런 환경에서 구분하여 Debugging할 수 있느 환경을 제공해 주어야 합니다.</p> | ||
− | <p> <img src="/data/wiki/2015-04-29/1430281107.jpg" alt="" /></p> | + | <p> <img style="width: 802px; height: 514px;" src="/data/wiki/2015-04-29/1430281107.jpg" alt="" width="1131" height="776" /></p> |
<p> </p> | <p> </p> | ||
<h3>1.1.1. 동작 Mode(or Exception Level)에 따른 BreakPoint 설정</h3> | <h3>1.1.1. 동작 Mode(or Exception Level)에 따른 BreakPoint 설정</h3> | ||
26번째 줄: | 26번째 줄: | ||
<p> Data.LOAD.Elf SecureAppFileName.elf Z: /nocode /noclear ; @Secure World</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> | <p> Data.LOAD.Elf NonSecAppFileName.elf N: /nocode /noclear ; @NonSecure World</p> | ||
− |
2015년 4월 29일 (수) 13:29 기준 최신판
1.1. Hyervisor(EL2)/Secure/NonSecure Breakpoint 설정
Processor 동작 모드에 따라 Breakpoint 설정이 가능합니다(2015년 1월~ 버전). 아래 그림은 같은 Address이지만 Secure와 NonScure에 따라 다른 BreakPoint가 설정되어 있는 것을 볼 수 있습니다.
또한 동일 Address이지만 Source code도 다른 code가 보이는 것을 볼 수 있습니다. 즉 동작 Mode에 따라 동일 Address에 다른 Application이 동작할 수 있고 Debugger는 이런 환경에서 구분하여 Debugging할 수 있느 환경을 제공해 주어야 합니다.
1.1.1. 동작 Mode(or Exception Level)에 따른 BreakPoint 설정
기본적으로 Breakpoint를 설정하면 동작모드에 상관없이 설정됩니다. 그러나 어떤 경우에는 특정 동작 Mode에서만 유효하도록 설정할 수 있습니다. 특히 Secure OS를 Debugging 한다거나 Hypervisor Mode debugging을 효율적으로 하고자 할 경우 필요하게 될 것입니다.
사용방법은
1) SYStem.Option.ZoneSPACES ON ; 동작 Mode를 구분하여 BreakPoint 관리
2) 의도하는 동작 모드에 대해 BreakPoint를 설정
Ex) Break.Set H:0x30E000 ; Hypervisor Mode(EL2) SoftBreakpoint(RAM 공간인 경우)
Break.Set N:0x202000 ; NonSecure World(EL1&EL0) SoftBreakpoint(RAM 공간인 경우)
Break.Set Z:0x202004 ; Secure World(EL1&EL0) SoftBreakpoint(RAM 공간인 경우)
Break.Set H:0x30E000 /Onchip ; Hypervisor(EL2) Mode Onchip Breakpoint
Break.Set N:0x202000 /Onchip ; NonSecure(EL1&EL0) World Onchip Breakpoint
Break.Set Z:0x202004 /Onchip ; Secure World(EL1&EL0) Onchip Breakpoint
Break.Set Z:0x300014 /Write ; Secure World(EL1&EL0) data write breakpoint
1.1.2. 동작 Mode(or Exception Level)에 따라 구분하여 Symbol 다운로드 하기
기본적으로 Symbol을 다운로드하면 동작 Mode(or EL)에 상관없이 Symbol을 로드 합니다. 따라서 Linux와 Secure OS가 동시에 동작하는 Application과 같은 개발환경에서 두 동작 Mode를 동시에 Debugging하기 원한다면 매우 불편한 상황을 접하게 될 것입니다. 즉, 어드레스는 같지만 Secure/Non-Secure World에 따라 다른 코드가 위치될 수 있기 때문에 필요시마다 해당 동작모드에 대한 Symbol을 로드하여 사용해야 할 것입니다. 따라서 TRACE32는 동작모드에 따라 동일 어드레스라 할지라도 다른 Symbol을 다운로드하는 기능이 있어 이러한 번거러움을 해결해 줍니다.(2014년 11월~ 버전)
방법은 다음과 같습니다.
1) SYStem.Option.ZoneSPACES ON ; 동작 Mode를 구분하여 Symbol 관리
2) 동작 Mode(Exception Level)에 따라 Symbol 로드
Ex) Data.LOAD.Elf HyperAppFileName.elf H: /nocode /noclear ; @HyperVisor(or EL2)
Data.LOAD.Elf SecureAppFileName.elf Z: /nocode /noclear ; @Secure World
Data.LOAD.Elf NonSecAppFileName.elf N: /nocode /noclear ; @NonSecure World