romez777 0 14 октября, 2008 Опубликовано 14 октября, 2008 · Жалоба Приветствую, изучаю порт 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 0 14 октября, 2008 Опубликовано 14 октября, 2008 · Жалоба Приветствую, изучаю порт 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 0 15 октября, 2008 Опубликовано 15 октября, 2008 · Жалоба Приветствую, спасибр за ответ. Есть такая штука - стандарт. И в чипах и в линукс. Так например с 0 у ARM идет Exception Vectors Кроме того linux/Documentation/arm/Booting linux/Documentation/arm/Setup linux/Documentation/arm/Porting linux/Documentation/arm/memory.txt Про вектора я как-то опять забыл :( И невнимательно читал 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. Это ответ на один мой глупый вопрос :) Но размещать загрузчик на 16mb от начала памяти - не многовато ли это для ядра и initrd? PS. вот хорошая ссылка на описание загрузки - http://www.simtec.co.uk/products/SWLINUX/f...ng_article.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amw 0 16 октября, 2008 Опубликовано 16 октября, 2008 · Жалоба Но размещать загрузчик на 16mb от начала памяти - не многовато ли это для ядра и initrd? Нет. Памяти мало не бывает :). Кроме того, Сколько ядро займет после распаковки? А собственно с какого адреса начинает заливаться распакованное ядро, то что получится после "decompressing kernel .........................................ok"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться