Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: линукс на ARM
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
romez777
Приветствую,

изучаю порт U-Boot на ARM/Versatile с тем, чтобы понять нюансы инициализации железа для последующей загрузки Linux.

В соответствии с докой с http://infocenter.arm.com/ SDRAM на этой платформе (128MB) организован через CS0 и мапится в диапозон 0x0000_0000-0x0800_0000. Порт U-Boot для Versatile определяет переменную TEXT_BASE=0x0100_0000 (адрес по которому в память будет грузиться uboot), т.е. это отстоит на 16MB от 0x0; в свою очередь порт Linux на эту платформу определяет адрес загрузки ядра -> 0x0000_8000, т.е. на 32kB от начала области RAM.

Отсюда вопрос:
1) с какой целью сооздается "дырка" в 16MB, предполагается, что туда ляжет ядро, initrd и еще что-то?
2) почему нельзя ядро разместить по адресу 0x0, и не делать 32kB отступ?
3) почему нельзя сделать так: с адреса 0x0 и выше положить загрузчик вместе с областью для параметров, передаваемых ядру (Uboot редко занимает более 200Kb), а следом грузить линукс?

Буду признателен за пояснения.
amw
Цитата(romez777 @ Oct 14 2008, 10:34) *
Приветствую,

изучаю порт U-Boot на ARM/Versatile с тем, чтобы понять нюансы инициализации железа для последующей загрузки Linux.

В соответствии с докой с http://infocenter.arm.com/ SDRAM на этой платформе (128MB) организован через CS0 и мапится в диапозон 0x0000_0000-0x0800_0000. Порт U-Boot для Versatile определяет переменную TEXT_BASE=0x0100_0000 (адрес по которому в память будет грузиться uboot), т.е. это отстоит на 16MB от 0x0; в свою очередь порт Linux на эту платформу определяет адрес загрузки ядра -> 0x0000_8000, т.е. на 32kB от начала области RAM.

Отсюда вопрос:
1) с какой целью сооздается "дырка" в 16MB, предполагается, что туда ляжет ядро, initrd и еще что-то?
2) почему нельзя ядро разместить по адресу 0x0, и не делать 32kB отступ?
3) почему нельзя сделать так: с адреса 0x0 и выше положить загрузчик вместе с областью для параметров, передаваемых ядру (Uboot редко занимает более 200Kb), а следом грузить линукс?

Буду признателен за пояснения.

Есть такая штука - стандарт. И в чипах и в линукс.
Так например с 0 у ARM идет Exception Vectors
Кроме того
linux/Documentation/arm/Booting
linux/Documentation/arm/Setup
linux/Documentation/arm/Porting
linux/Documentation/arm/memory.txt
romez777
Приветствую,

спасибр за ответ.
Цитата(amw @ Oct 14 2008, 20:44) *
Есть такая штука - стандарт. И в чипах и в линукс.
Так например с 0 у ARM идет Exception Vectors
Кроме того
linux/Documentation/arm/Booting
linux/Documentation/arm/Setup
linux/Documentation/arm/Porting
linux/Documentation/arm/memory.txt


Про вектора я как-то опять забыл sad.gif И невнимательно читал linux/Documentation/arm/Booting, а там четко сказано:

Цитата
The zImage may also be placed in system RAM (at any location) and
called there. Note that the kernel uses 16K of RAM below the image
to store page tables. The recommended placement is 32KiB into RAM.


Собственно, в первые 16KB в памяти кладется tagged list, в следующие 16 - page table. Это ответ на один мой глупый вопрос smile.gif Но размещать загрузчик на 16mb от начала памяти - не многовато ли это для ядра и initrd?

PS. вот хорошая ссылка на описание загрузки - http://www.simtec.co.uk/products/SWLINUX/f...ng_article.html
amw
Цитата(romez777 @ Oct 15 2008, 05:17) *
Но размещать загрузчик на 16mb от начала памяти - не многовато ли это для ядра и initrd?

Нет. Памяти мало не бывает smile.gif.
Кроме того, Сколько ядро займет после распаковки? А собственно с какого адреса начинает заливаться распакованное ядро, то что получится после "decompressing kernel .........................................ok"?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.