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