Linux Kernel(4.14) Hacks

rousalome.egloos.com

포토로그 Kernel Crash




Trace32 - Memory Class 메모리 클래스 [Debugging] Tips

Trace32 메모리 클래스(Memory Class)에 대해서 좀 알아 볼까요?
cpu_up이란 리눅스 커널 API를 확인해보면요.

"d.l  cpu_up", "d.dump cpu_up"로 코드를 확인해보았어요.
그런데 왼쪽에 NSX, NSP란 뭘 의미할까요? 
NSX:FFFFFF9F996A7678|A9BC7BFD  cpu_up:   stp     x29,x30,[SP,#-0x40]!   ; x29,x30,[SP,#-64]!
NSX:FFFFFF9F996A767C|910003FD            mov     x29,SP
NSX:FFFFFF9F996A7680|A90153F3            stp     x19,x20,[SP,#0x10]   ; x19,x20,[SP,#16]
NSX:FFFFFF9F996A7684|A9025BF5            stp     x21,x22,[SP,#0x20]   ; x21,x22,[SP,#32].
_____________address|________0________4________8________C_0123456789ABCDEF
NSP:FFFFFF9F996A7670| A8C87BFD D65F03C0>A9BC7BFD 910003FD .{...._..{......
NSP:FFFFFF9F996A7680| A90153F3 A9025BF5 F0012274 2A0003F5 .S...[..t".....*
NSP:FFFFFF9F996A7690| AA1E03E0 D503201F F9452680 F9001FA0 ..... ...&E......


각각 아래 정보를 포함하고 있어요.
N: Non-Secure Mode
P: Program Memory
X: AArch64 ARM64 Code (A64, 32bit instr. length)
S: Supervisor Memory (privileged access).

이번에는 contig_page_data란 전역변수를 점검해볼까요?
"d.l contig_page_data", "d.dump contig_page_data" 명령어로 확인해보았어요.
___________addr/line|code_____|label______________|mnemonic________________|comment
NSD:FFFFFF9F9BD5AB00|00000377  contig_page_data:   dcd     0x377
NSD:FFFFFF9F9BD5AB04|00000000                      dcd     0x0
NSD:FFFFFF9F9BD5AB08|00002EC7                      dcd     0x2EC7
NSD:FFFFFF9F9BD5AB0C|00000000                      dcd     0x0

_____________address|________0________4________8________C_0123456789ABCDEF
NSD:FFFFFF9F9BD5AB00|>00000377 00000000 00002EC7 00000000 w...............
NSD:FFFFFF9F9BD5AB10| 00003082 00000000 00000000 00000000 .0..............
NSD:FFFFFF9F9BD5AB20| 00000000 00000000 00000796 00000000 .................
.
NSD란 정보가 보이네요. D란 알파벳이 보이는데요. D는 Data Memory를 의미해요.

이제 Trace32의 메모리 클래스에 대해서 정리해볼께요.
class 속성
P Program Memory
D Data Memory
S Supervisor Memory (privileged access)
U User Memory (non-privileged access) not yet implemented; privileged access will be performed.
R AArch32 ARM Code (A32, 32-bit instr. length)
T AArch32 Thumb Code (T32, 16-bit instr. length)
X AArch64 ARM64 Code (A64, 32bit instr. length)
J Java Code (8-bit)
Z Secure Mode (TrustZone devices)
N Non-Secure Mode (TrustZone devices)
A Absolute addressing (physical address)
SPR Access to System Register, Special Purpose Registers and System Instructions.
C15 Access to C15-Coprocessor register. 

만약에 Trace32를 연결한 상태에서 물리주소에 특정 데이터를 저장하고 싶을 경우 아래와 같이 A란 Class를 추가하면 되요.
MMU 없이 메모리를 설정하는 거죠.
D.S NSDA:0xFFFFFF9F9BD5AB00 %LE %long  0xEAFFFFFE  
.


덧글

댓글 입력 영역