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

Я нахожусь в uboot и задаюсь вопросом, как я могу определить, какой диапазон адресов RAM используется uboot.

Для работы Uboot требуется память, чтобы она могла использовать некоторую ОЗУ. Я хочу избежать изменения этих адресов RAM.

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

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

Для отладки 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 в памяти.

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