Как я могу узнать, какой диапазон адресов ОЗУ памяти использует uboot?

12

Я в Uboot и мне было интересно, как я могу узнать, какой диапазон адресов ОЗУ используется Uboot.

Для запуска uboot требуется память, поэтому она может использовать часть оперативной памяти. Я хочу избежать изменения этих адресов оперативной памяти.

Как узнать, в какую область памяти загружается uboot?

Анкур Агарвал
источник

Ответы:

2

На странице DULG DebuggingUBoot есть это сказать («перемещение», о котором говорится, - это копирование себя из флэш-памяти в RAM).

Для отладки U-Boot после перемещения нам нужно знать адрес, на который перемещается U-Boot. Когда не используются такие экзотические функции, как PRAM, этот адрес обычно - CONFIG_SYS_MONITOR_LEN. В нашем примере с 16 МБ ОЗУ и CONFIG_SYS_MONITOR_LEN = 192 КБ это дает адрес 0x1000000 - 0x30000 = 0xFD0000.

Дальнейшее чтение текста, по-видимому, указывает на то, что оно зависит от процессора или платы и что вам, возможно, придется проверить источник U-Boot, чтобы точно знать.

Что касается Guruplug :

На стороне оперативной памяти у u-Boot зарезервированы первые 8 мегабайт. Остальное бесплатно. Некоторые разработчики загружают ядра и файловые системы со скоростью 0 × 800000 для программирования на флэш-память. Другое распространенное место находится на границе 100 мегабайт (или со смещением 0 × 640000).

В зависимости от вашей версии команды U-Boot могут быть доступны для помещения строки в свободное ОЗУ, а затем для поиска остальной ОЗУ для этой строки, показывая приблизительное расположение U-Boot в памяти.

LawrenceC
источник
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 для различных служебных процессов, которые я хотел запустить (например, загрузка больших файлов в память). В идеале, я думаю, что вы хотите использовать большой объем памяти для такого рода вещей, но у меня не было выбора (как вы можете видеть в моем выводе).

BuvinJ
источник
Вы уверены, что это не карта памяти Linux?
claymation
Я не уверен. Это отсутствие highmem и ссылки на «Виртуальное ядро» заставляет меня думать иначе. Я нуб / хак, когда дело доходит до Uboot. Важным моментом здесь было то, что я смог безопасно использовать этот диапазон низких значений, не переписывая ничего, что, казалось, требовалось для загрузки.
BuvinJ
Насколько я помню, это отображается до загрузки ОС, кстати.
BuvinJ