реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> линукс на ARM, загрузчик и ядро
romez777
сообщение Oct 14 2008, 07:34
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Приветствую,

изучаю порт 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), а следом грузить линукс?

Буду признателен за пояснения.
Go to the top of the page
 
+Quote Post
amw
сообщение Oct 14 2008, 17:44
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(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


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
romez777
сообщение Oct 15 2008, 02:17
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Приветствую,

спасибр за ответ.
Цитата(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
Go to the top of the page
 
+Quote Post
amw
сообщение Oct 16 2008, 17:31
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(romez777 @ Oct 15 2008, 05:17) *
Но размещать загрузчик на 16mb от начала памяти - не многовато ли это для ядра и initrd?

Нет. Памяти мало не бывает smile.gif.
Кроме того, Сколько ядро займет после распаковки? А собственно с какого адреса начинает заливаться распакованное ядро, то что получится после "decompressing kernel .........................................ok"?


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th August 2025 - 00:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016