EzDoum

찾기
처음으로 | 찾기 | 아카이브 | 글 올리기 | 링크 | 자료실 | 통계 | 연락처 | 자유게시판
이지도움 특집
전체보기
네트워크
TI OMAP35x
TI DaVinci
Analog Blackfin
RobotWar2005
임베디드!
캐쉬의 모든것
메모리 할당 알고리즘
CPU 파이프라이닝
자료구조(Tree)
금융

Login
이름

암호

기억하기


사용자 등록

현재 접속중인 등록 사용자는 0명, 익명 사용자는 3명 입니다.
전체 등록 사용자: 751명

마지막 답장
·libcurl + fuse 조합으로 되는게 많네. (1)
·Linux Ftrace에 관해 (3)
·Android MTP ( Media Transfer Protocol ) (1)
·Lighttpd에 인증을 digest 사용시 IE 오동작 문제? (1)
·Dtrace에 관해 (1)

최근글
·OpenSSL and multi-threads (0)
·ARM 환경에서 OpenCL 사용 (0)
·IoT용 WIFI 모듈 비교 ( MCU ) 클래스 (0)
·Glances - 리눅스 여러 가지 항목을 한 화면에서 모니터링 (0)
·plugin 방식의 로그 분석기 (0)

뜨거운 감자
·나는 인터렉티브한 환경에서 역어셈블 한다. (12)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)
·ASP.NET의 데이터 그리드와 사용자 컨트롤 (7)
·DHTML Editing Control (7)

가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
·멀티쓰레드(Pthread) 프로그래밍
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·Sorting Algorithm Animation (2)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

커널 로그 버퍼를 Uboot에서 확인하는 방법
글쓴이: EzDoum 글쓴날: 2012년 11월 05일 오전 09:38




Reset이나 와치독이 발생해도 DDR이 초기화 되는게 아니기 때문에,
직전 부팅의 커널의 log_buf 영역의 address를 알면 리부팅 발생시 uboot에서 해당
영역을 꺼내 보면 로그에서 단서를 찾을 수도 있다.

물론 위 주소를 Physical 주소로 변환해야 하고, u-boot가 아닌 Jtag을 사용해도 무방함.

http://www.lindusembedded.com/blog/2011/08/10/looking-at-the-kernel-log-from-the-bootloader

Quote:
LOOKING AT THE KERNEL LOG FROM THE BOOTLOADER
Assuming you have a bootloader that doesn't overwrite memory on boot (U-Boot is one that doesn't) you can warm reset your device and have a look at the kernel's log buffer from its shell.

The log is stored is:

user@computer:$ grep __log_buf System.map
c047ebf8 b __log_buf
To convert the virtual address to physical, you need to substract the kernel base. For ARM it's KERNEL_START:

#define KERNEL_START KERNEL_RAM_VADDR
And KERNEL_RAM_VADDR:

#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)
With PAGE_OFFSET defined in your configuration:

config PAGE_OFFSET
hex
default 0x40000000 if VMSPLIT_1G
default 0x80000000 if VMSPLIT_2G
default 0xC0000000
And TEXT_OFFSET:

# The byte offset of the kernel image in RAM from the start of RAM.
TEXT_OFFSET := $(textofs-y)
With textofs-y:

textofs-y := 0x00008000
So KERNEL_START = 0xC0000000 + 0×00008000 = 0xC0008000

And __log_buf = 0xc047ebf8 – 0xC0008000 = 0x00476BF8

So, after a warm reset you stop at the U-Boot prompt and you do:

md.l 0x00476BF8
00476bf8: 00000000 00000000 00000000 00000000 ................
00476c08: 00000000 00000000 00000000 00000000 ................
00476c18: 00000000 00000000 00000000 00000000 ................
00476c28: 00000000 00000000 00000000 00000000 ................
00476c38: 00000000 00000000 00000000 00000000 ................
00476c48: 00000000 00000000 00000001 000002ee ................
00476c58: 00000000 00000002 c0476c60 c0476c60 ........`lG.`lG.
00476c68: c02a2424 c048355c c048355c ffffaaf2 $$*.\5H.\5H.....
00476c78: c0482dc0 c02a24b4 c0476bac 00000000 .-H..$*..kG.....
00476c88: 00000007 00000000 00000000 00000000 ................
00476c98: 00000000 00000000 00000000 00000000 ................
00476ca8: dc2da048 c0499eec 00000000 0002bf20 H.-...I..... ...
00476cb8: 00000001 c04782d8 c0476d0c 00000000 ......G..mG.....
00476cc8: 00000000 00000000 00000000 00000000 ................
00476cd8: c02b7914 c02b7928 c02b782c 00000000 .y+.(y+.,x+.....
00476ce8: 00000000 00000000 00000000 00000000 ................
00476cf8: 00000000 00000000 00000000 00000000 ................
00476d08: 00000000 c0476cbc c04782d8 00000001 .....lG...G.....
00476d18: 00000000 00000000 c02b7914 c02b7928 .........y+.(y+.
00476d28: c02b782c 00000000 00000000 00000000 ,x+.............
Which is garbage.

However, if you ignore the TEXT_OFFSET:

__log_buf = 0xc047ebf8 – 0xC0000000 = 0x0047ebf8

md.l 0x0047ebf8
0047ebf8: 6f695f75 3a6c7463 5d363633 5f555056 u_ioctl:366]VPU_
0047ec08: 5f434f49 474b4c43 5f455441 54544553 IOC_CLKGATE_SETT
0047ec18: 0a474e49 413e363c 765b2047 695f7570 ING.<6>AG [vpu_i
0047ec28: 6c74636f 3636333a 5550565d 434f495f octl:366]VPU_IOC
0047ec38: 4b4c435f 45544147 5445535f 474e4954 _CLKGATE_SETTING
0047ec48: 3e363c0a 5b204741 5f757076 74636f69 .<6>AG [vpu_ioct
0047ec58: 36333a6c 50565d36 4f495f55 4c435f43 l:366]VPU_IOC_CL
0047ec68: 5441474b 45535f45 4e495454 363c0a47 KGATE_SETTING.<6
0047ec78: 2047413e 7570765b 636f695f 333a6c74 >AG [vpu_ioctl:3
0047ec88: 565d3636 495f5550 435f434f 41474b4c 66]VPU_IOC_CLKGA
0047ec98: 535f4554 49545445 3c0a474e 47413e36 TE_SETTING.<6>AG
0047eca8: 70765b20 6f695f75 3a6c7463 5d363633 [vpu_ioctl:366]
0047ecb8: 5f555056 5f434f49 474b4c43 5f455441 VPU_IOC_CLKGATE_
0047ecc8: 54544553 0a474e49 413e363c 765b2047 SETTING.<6>AG [v
0047ecd8: 695f7570 6c74636f 3636333a 5550565d pu_ioctl:366]VPU
0047ece8: 434f495f 4b4c435f 45544147 5445535f _IOC_CLKGATE_SET
0047ecf8: 474e4954 3e363c0a 5b204741 5f757076 TING.<6>AG [vpu_
0047ed08: 74636f69 36333a6c 50565d36 4f495f55 ioctl:366]VPU_IO
0047ed18: 4c435f43 5441474b 45535f45 4e495454 C_CLKGATE_SETTIN
0047ed28: 363c0a47 2047413e 7570765b 636f695f G.<6>AG [vpu_ioc
Voila!

If anyone has an explanation as to why I need to omit the TEXT_OFFSET in the calculation it would be welcomed.


  • 관련 링크
  • [분류: 리눅스 커널 인쇄용 페이지 본문 email로 보내기 ]

    <  부팅속도 개선을 위한 도구 | btt(post-processing tool for the block layer IO tracing) userguide  >

    답장 쓰기
    글을 올리시려면 로그인 (사용자 등록) 하셔야 합니다.

    검색
    Google

    분류
    ·공지 (6)
    ·인터넷 (87)
    ·하드웨어 (260)
    ·C/C++ (65)
    ·어셈블리 (7)
    ·리눅스 (136)
    ·리눅스 커널 (67)
    ·윈도우즈 (25)
    ·데이터베이스 (20)
    ·보안 (16)
    ·.NET (25)
    ·그래픽 (13)
    ·책소개 (42)
    ·호기심 천국 (80)
    ·잡담 (111)
    ·사랑 (3)

    전체 본문수: 963
    전체 답장수: 525


    분류 : 리눅스 커널
    최근글
    최근글
    가장 많이 읽은 글
    ·리눅스 커널 공부하기 (2)
    뜨거운 감자
    ·SunWorld Online (4)

    EzDoum투표
    이지도움 어때요?
    이게 뭐야. 다시 안올란다. --;
    아이 좋아라~ +_+;
    관심없다.
    먼가는 있는거 같은데 뭐하는 곳이지?
    기타 (자유게시판에 글로 남겨 주세요)
    [ 결과 | 투표 ]

    랜덤 링크
    http://kldp.net


     Home ^ BACK TO TOP ^ EzDoum - 도움이 필요하세요~??
     Powered by KorWeblog 1.5.8 Copyleft © 2001 EzDoum, 관리자: EzDoum