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