본문 바로가기

[Debugging] Tips

[TRACE32] T32: vmcore 파일을 TRACE32 시뮬레이터로 올리기

램덤프 대신에 vmcore 파일을 올리려면 다음과 같은 커맨드를 입력하면 된다.
 
$ d.load.e vmlinux 0xdeadbee0
$ d.load.e vmcore /nocode  /nosymbol /physload
 
1. vmlinux 로딩 방법
 
KASLR 컨피그로 빌드된 경우 아래와 같이 로딩하면 된다.
 
$ d.load.e vmlinux 0xdeadbee0
 
만약 KASLR 컨피그 없이 빌드한 경우 아래 명령어를 실행하면 된다.
 
$ d.load.e vmlinux 
 
2. vmcore 로딩 방법
 
vmcore를 실행할 때 반드시 옵션을 잘 적용해야 한다.
 
$ d.load.e vmcore /nocode  /nosymbol /physload
or
$ d.load.e vmcore /nc /ny /physload
 
/nosymbol: 
 
심벌을 로딩하지 않는 옵션이다. vmlinux에 심벌이 있으니 필요없다.
 
/physload:
 
말 그대로 DRAM에 있는 덤프만 로딩하는 옵션이다.
 
3. MMU 설정
 
기존 MMU 설정 명령어를 그대로 설정하면 된다.
 
PER.Set SPR:0x30200 %QUAD 0x00000000418a2000 ;TTBR0_EL1
PER.Set SPR:0x34200 %QUAD 0xc0956b709140eedc ;TTBR0_EL2
PER.Set SPR:0x36200 %QUAD 0xfb2c6bcafaf9a6e7 ;TTBR0_EL3
PER.Set SPR:0x30201 %QUAD 0x000000004268b000 ;TTBR1_EL1
PER.Set SPR:0x30100 %QUAD 0x0000000034d5d91d ;SCTLR_EL1
PER.Set SPR:0x34100 %QUAD 0xd791d032d40525a2 ;SCTLR_EL2
PER.Set SPR:0x36100 %QUAD 0x765a0d8bd8e11b19 ;SCTLR_EL3
PER.Set SPR:0x30202 %QUAD 0x00000032b5593519 ;TCR_EL1
PER.Set SPR:0x34202 %QUAD 0x1f55a748cfcf3fce ;TCR_EL2
PER.Set SPR:0x36202 %QUAD 0x0009b670c520231b ;TCR_EL3
 
위 명령어 중에 TTBR1_EL1를 설정하는 코드가 가장 중요하다.
 
그 다음으로 아래 명령어를 입력하자.
 
mmu.format linuxswap3 swapper_pg_dir 0xffffffc000000000--0xffffffffffffffff 0x0000000040000000
trans.common 0xffffff8000000000--0xffffffffffffffff 
trans.tw on
trans.on
mmu.scan
 
mmu.list.pagetable 0xffffffc000000000
 
Happy, Debugging!
 
BR,
Austin Kim