Портирование Bootstrap, U-Boot и Linux
Alex (Guest) |
|
|
Хотелось бы узнать у разработчиков какие изменения и в какие файлы были внесены в исходные коды Bootstrap, U-Boot и Linux при их портировании.
Понимаю, что ответ может потребовать довольно много времени, поэтому просьба к разработчикам не давать ответы типа "взяли и портировали", а по возможности и наличии свободного времени отвечать как можно подробнее.
Пока что хотелось бы спросить про U-Boot. Сравнение скачанного с сайта разработчиков исходного кода с Вашим кодом вызвало у меня несколько вопросов:
1) В файл include/at91_net.h было добавлено объявление нескольких функций. При этом в комментарии к ним фигурирует "for the uClinux 2.0.38". Для чего были внесены эти объяления? Или это просто "мусор", который Вы забыли удалить?
2) cpuarm926ejsat91sam926xusb_ohci.c - добавлено определение OHCI_VERBOSE_DEBUG. Однако т.к. определение DEBUG закомментировано, то, судя по коду, определение OHCI_VERBOSE_DEBUG не имеет смысла
3) includeconfigsat91sam9260ek.h - CFG_MEMTEST_START и CFG_MEMTEST_END были изменены на несовсем очевидные значения. Не могли бы Вы прокомментировать?
4) includeconfigsat91sam9260ek.h - значение CFG_LOAD_ADDR изменено на 0x21000000. Для чего служит данная переменная? Просто адрес буфера по умолчанию для различных команд у-бута?
5) Приведите пожалуйста команды, с помощью которых собирался у-бут
6) Адрес, по которому размещается initrd - 0х2310 0000. В каком файле ядра Linux задается этот адрес (ведь само ядро тоже должно знать, куда для него поместили initrd)? В файле конфигурации at91sam9260ek_defconfig я нашел параметр CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw" однако адрес, используемый здесь отличается от того, по которому размещает у-бут initrd
Заранее благодарен за ответы. |
|
|
|
|
|
starterkit (Guest) |
|
|
1) "оригинальный" u-boot не поддреживал используемый PHY, часть функций была перенесена из u-boot для LPC2478, откуда видимо и остался упоминаемый коментарий про uClinux.
2) не помню чтобы вносил туда существенные изменения ...
3) не понял, что Вас смутило ...
4) насколько помню, это значение загрузки образа по умолчанию, если не указывается конкретный адрес
5) make (с предварительной конфигурацией, см. доку на u-boot)
6) аргументы запуска u-boot не воспринимаются ядром, оно пользуемтся своими аргументами (задаются через его конфиг) отсюда и различия возникающие с течением времени
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно starterkit 19.01.2009 г. в 23:23:22 |
|
|
|
|
|
Alex (Guest) |
|
|
3) Адреса для memtest устанавливаются в 0х2000 1F40 - 0х2110 1F40
4) "с предварительной конфигурацией"... Собственно о ней я и спрашивал :)
6) Да, но я привел параметр CONFIG_CMDLINE из конфига ядра. В нем для initrd указан другой адрес. Может быть этот адрес задается еще где-то в ядре? |
|
|
|
|
|
Alex (Guest) |
|
|
По поводу 1го пункта. Данный файл в Ваших исходниках имеет вид
#ifndef AT91_NET
<Оригинальный код>
#endif
#ifndef AT91_NET
<Тот же самый код>
#endif
С этим все ясно - забыли почистить )
Вот еще вопрос.
7) В файле Makefile в корне U-Boot кросс-компиллятор заменен на arm-none-linux-gnueabi-gcc. Вообще несколько странно, т.к. полученный код будет запускаться на "голом" железе без операционки.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно Alex 20.01.2009 г. в 10:16:44 |
|
|
|
|
|
starterkit (Guest) |
|
|
3) тестируются "нижние" 18М, хотите, измениете на требуемый Вам диапазон
4) см. доку, сконфигурировал на Atmel EK плату и позже вне с изменения
6) запустите конфигурацию ядра make_menuconfig загляните в Boot options, в строке запуска initrd располагается по 0х2310 0000
7) Компилятор здесь не причем, Вам ничто не мешает создавать им standalone приложения (хоть к Keil-у его подключите). |
|
|
|
|
|
Alex (Guest) |
|
|
3) Теперь понятно. Хотя несколько смущает, почему именно 18Мб и почему тестирование начинается не с начала SDRAM, а со смещением 8000 (десятичное) :)
4) Нашел. напишу здесь, мало ли кому пригодится
Для версии U-boot 1.1.5
make at91sam9260ek_config
make all |
|
|
|
|
|
Alex (Guest) |
|
|
6) Да, действительно :) Просто я использовал приведенный файл дефолтной конфигурации для at91sam9260ek (папка install). Там стоит адрес 0х2110 000.
7) Спасибо, буду знать. А то "linux" в полном названии gcc смущал. |
|
|
|
|
|
Alex (Guest) |
|
|
Еще пара вопросов.
8) Для чего в драйвере Ethernet PHY добавлен код определения физического адреса? В даташите же сказано, что без "подтяжки" соответствующих входов, он будет установлен в 1. Подтягивающих резисторов не используется.
9) Для чего там же закомментирован код функции ресета? |
|
|
|
|
|
starterkit (Guest) |
|
|
8) Внутренние подтяжки слабоваты, не факт что установится 1.
9) Не помню, возможно это не я сделал. |
|
|
|
|
|
|