uboot에서 사용중인 메모리 RAM 주소 범위를 어떻게 알 수 있습니까?


12

나는 uboot에 있고 uboot에서 사용중인 RAM 주소 범위를 어떻게 알 수 있는지 궁금합니다.

uboot를 실행하려면 메모리가 필요하므로 일부 RAM을 사용 중일 수 있습니다. 해당 RAM 주소를 수정하지 않으려 고합니다.

uboot가로드 된 메모리 영역을 어떻게 알 수 있습니까?

답변:


2

DULG DebuggingUBoot 페이지에이 내용이 있습니다.

재배치 후 U-Boot를 디버깅하려면 U-Boot가 재배치되는 주소를 알아야합니다. PRAM과 같은 이국적인 기능이 사용되지 않는 경우이 주소는 일반적으로-CONFIG_SYS_MONITOR_LEN입니다. 16MB RAM 및 CONFIG_SYS_MONITOR_LEN = 192KB의 예에서는 주소 0x1000000-0x30000 = 0xFD0000이 생성됩니다.

텍스트를 계속 읽으면 프로세서 나 보드에 따라 다르며 U-Boot 소스를 확인해야 할 수도 있습니다.

Guruplug에 관하여 :

RAM 측면에서 u-Boot는 처음 8MB를 예약합니다. 나머지는 무료입니다. 일부 개발자는 플래시 프로그래밍을 위해 커널과 파일 시스템을 0x800000으로로드합니다. 또 다른 일반적인 지점은 100MB 경계에 있습니다 (또는 오프셋 0x640000).

사용중인 U-Boot 명령 버전에 따라 사용 가능한 RAM에 문자열을 넣은 다음 해당 문자열에 대한 나머지 RAM을 찾아 메모리에서 U-Boot의 대략적인 위치를 알 수 있습니다.


1

사용중인 uboot 버전을 시작하면 "가상 커널 메모리 레이아웃"이 자동으로 표시됩니다.

Memory: 859068k/859068k available, 25668k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xf9e00000 - 0xffe00000   (  96 MB)
    vmalloc : 0xe0800000 - 0xf4000000   ( 312 MB)
    lowmem  : 0x80000000 - 0xe0000000   (1536 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .init : 0x80008000 - 0x8004d000   ( 276 kB)
      .text : 0x8004d000 - 0x808ad000   (8576 kB)
      .data : 0x808ce000 - 0x80937a40   ( 423 kB)

대용량 파일을 메모리에로드하는 것과 같이 실행하려는 다양한 유틸리티 프로세스에 lowmem 영역을 사용하는 것이 안전하다는 것을 알았습니다. 이상적으로는, 당신이 그런 종류의 일에 높은 메모리를 사용하고 싶다고 생각하지만 옵션이 없었습니다 (내 출력에서 ​​볼 수 있듯이).


이것이 리눅스의 메모리 맵이 아닙니까?
claymation

확실하지 않습니다. highmem의 부족과 "가상 커널"에 대한 언급은 다른 생각으로 이끌었습니다. 나는 uboot와 관련하여 멍청한 놈이다. 여기서 중요한 점은 uboot가 필요로하는 것으로 보이는 것을 덮어 쓰지 않고 해당 lowmem 범위를 안전하게 사용할 수 있다는 것입니다.
BuvinJ

내가 기억하는 것처럼 이것은 OS btw를로드하기 전에 표시됩니다.
BuvinJ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.