Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: переход на новое ядро
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
TigerSHARC
Добрый день!

Использую однолплатный компьютер на базе AM1808. Ранее использовал пакет от производителя, где поставлялось ядро 2.xx.xx и в конфиге указывался файл борды owlboard-mini.c, соответственно в menuconfig присутстовала строка для выбора этого типа борды.

Решил перейти на новое ядро. с ужасом заметил что в ядре 3.1.10 в menuconfig нет борды Owlboard и соответтсвенно нату файла борды.
Вопрос: как добавить мою борду в конфиг нового ядра? (тупое копирование файла борды и попытка подсунуть в качестве другой борды не увенчалась успехом smile3046.gif )
mdmitry
Цитата(TigerSHARC @ Nov 10 2013, 22:01) *
Вопрос: как добавить мою борду в конфиг нового ядра? (тупое копирование файла борды и попытка подсунуть в качестве другой борды не увенчалась успехом smile3046.gif )

В новых ядрах (3.x) изменилась идеалогия (dts file), посмотрите здесь для начала.
Tarbal
В 3.12 файл Биглборда есть:
http://lxr.free-electrons.com/source/arch/...d-omap3beagle.c

Я могу вам рассказать, что надо делать, но будет непросто. Я хорошо знаю 2.6, но не работал с 3 и выше.
Вам надо модифицировать Makefile и Kconfig, тогда ваш файл появится в конфигурации и будет строиться.
Идентификация вашего устройства присутствует в старом файле, а вот если есть изменения в определении устройств, то у вас будет много работы. Зато узнаете много нового.

Что такое не увенчалось успехом? Кернел грузится? Где падает? Вам надо подключить консоль и исследовать сообщения.

TigerSHARC
Цитата(Tarbal @ Nov 11 2013, 00:09) *
В 3.12 файл Биглборда есть:
http://lxr.free-electrons.com/source/arch/...d-omap3beagle.c

Я могу вам рассказать, что надо делать, но будет непросто. Я хорошо знаю 2.6, но не работал с 3 и выше.
Вам надо модифицировать Makefile и Kconfig, тогда ваш файл появится в конфигурации и будет строиться.
Идентификация вашего устройства присутствует в старом файле, а вот если есть изменения в определении устройств, то у вас будет много работы. Зато узнаете много нового.

Что такое не увенчалось успехом? Кернел грузится? Где падает? Вам надо подключить консоль и исследовать сообщения.


буду рад узнать от вас много нового!

Не увенчалась успехом значит что вывалилась ошибка во время сборки ядра (подробности выложу сегодня вечером). Я пытался подсунуть код моей платы Owlboard, тупо вставив его в файл hawkboard (он есть в исходниках ядра 3.1.10).
Tarbal
Цитата(TigerSHARC @ Nov 11 2013, 08:03) *
буду рад узнать от вас много нового!

Не увенчалась успехом значит что вывалилась ошибка во время сборки ядра (подробности выложу сегодня вечером). Я пытался подсунуть код моей платы Owlboard, тупо вставив его в файл hawkboard (он есть в исходниках ядра 3.1.10).


Не от меня. Я только знаю куда идти. Так что по дороге вместе узнаем sm.gif
Пока надо будет редактировать ваш файл, чтобы скомпилировать кернел. Потом будем устранять ошибки.
В какой директории находится ваш файл устройства?
arch/arm/mach-?????

Не могу найти файл в официальном дереве кернела. Хотя идентификацию нашел:
3736 Owlboard Plus OMAP-L138 l138_owlboard_plus
#define MACH_TYPE_L138_OWLBOARD_PLUS 3736
TigerSHARC
Цитата(Tarbal @ Nov 12 2013, 00:02) *
В какой директории находится ваш файл устройства?
arch/arm/mach-?????


у меня ядро 2.6.37
файл борды лежит в .../arch/arm/mach-davinchi/board-l138-owlboardplus.c

только сейчас заметил, похоже в ванильном ядре вообще такого файла нет. у меня папка с ядром называется linux-2.6.37_DAVINCI_03.21.00.04
подозреваю что это пропатченое ядро...

тогда как переделать файл board-omapl138-hawk.c , который есть в ванильном ядре, под мою борду?
kurtis
Мне вот просто интересно, а зачем вы обновляете версию ядра если текущая в принципе работает? Это куча проблем на ровном месте, а полезность результата весьма сомнительна.
TigerSHARC
Цитата(kurtis @ Nov 12 2013, 13:18) *
Мне вот просто интересно, а зачем вы обновляете версию ядра если текущая в принципе работает? Это куча проблем на ровном месте, а полезность результата весьма сомнительна.

я скачал SDK для OMAP-L138. В пакете идёт syslink для межъядерного взаимодействия и Linux-3.1.10 (в виде бинарника). Исходники ядра есть, но они в архиве и не сконфигурированы вообще(что странно), бинарник запускается нормально, но для syslink нужны исходники
Я не уверен что syslink будет работать на ядре 2.6.37. Хотя, если честно, пока не пробовал.
xor.kruger
Цитата
а зачем вы обновляете версию ядра если текущая в принципе работает

Зачастую смысл в этом есть, особенно когда процессор/контроллер достаточно новый часто подправляют, дорабатывают сырые версии драйверов ну и конечно же новые подсистемы ядра (правда если они действительно необходимы в конкретном устройстве).
Также, от себя, я бы посоветовал если и переходить на новую версию ядра, то уж на последнюю стабильную, с долгим временем поддержки. На текущий момент это ядро серии 3.10.
Tarbal
Цитата(TigerSHARC @ Nov 12 2013, 09:23) *
у меня ядро 2.6.37
файл борды лежит в .../arch/arm/mach-davinchi/board-l138-owlboardplus.c

только сейчас заметил, похоже в ванильном ядре вообще такого файла нет. у меня папка с ядром называется linux-2.6.37_DAVINCI_03.21.00.04
подозреваю что это пропатченое ядро...

тогда как переделать файл board-omapl138-hawk.c , который есть в ванильном ядре, под мою борду?


Первым делом ищите в своем файле L138_OWLBOARD_PLUS и переписываете строчку в переделываемом файле на строчку с этим значением. Обычно это одна из последних строк файла.

MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
замените на
MACHINE_START(L138_OWLBOARD_PLUS, "AM18x/OMAP-L138 Hawkboard")
Только сначала проверьте если в вашем файле используется L138_OWLBOARD_PLUS. Надо именно то, что там.
Текст пока не трогайте. Заработает -- поменяете. Этот текст консоль напишет при старте.
А вот если не поменять, то кернел не стартует вообще.

Пройдите по всем структурам и дефайнам, определяющим устройства и пины и переопределите под свой борд.
Особое значение имеет PMIC. Я не нашел этого в ястребе (hawk -- OMAP-L138 Hawkboard).
Проверьте есть ли опреденление PMIC параметров, напряжений, токов в вашем файле.

Если сделать это неправильно, то консоли не будет:
316 #ifdef CONFIG_SERIAL_8250_CONSOLE
317 static int __init omapl138_hawk_console_init(void)
318 {
319 if (!machine_is_omapl138_hawkboard())
320 return 0;
321
322 return add_preferred_console("ttyS", 2, "115200");
323 }
324 console_initcall(omapl138_hawk_console_init);
325 #endif

Проверку machine_is_omapl138_hawkboard() можно пока закоментировать, а потом посмотрите как сделано и доделаете.

Цитата(TigerSHARC @ Nov 12 2013, 13:48) *
я скачал SDK для OMAP-L138. В пакете идёт syslink для межъядерного взаимодействия и Linux-3.1.10 (в виде бинарника). Исходники ядра есть, но они в архиве и не сконфигурированы вообще(что странно), бинарник запускается нормально, но для syslink нужны исходники
Я не уверен что syslink будет работать на ядре 2.6.37. Хотя, если честно, пока не пробовал.


Получить содержимое конфигурации легко:
Установите бинарники, запустите машину и считайте конфигурацию одним из способов:
из файла /boot/config-версия-кернела
из архива /proc/config.gz
Скопируйте содержимое в файл .config. Поместите .config в корне исходников кернела. Где вы запустите команду make ARCH=arm configure


Не запуская тоже можно:
http://stackoverflow.com/questions/1495819...ux-kernel-image


Только имейте ввиду, что образ ядра обычно сжат и его надо сначала разархивировать.
Tarbal
С появлением дерева устройств файл устройства разделился на два. Вторая его часть здесь:
http://lxr.free-electrons.com/source/arch/arm/boot/dts/


Эта часть мне незнакома. Будем читать вместе:
http://devicetree.org/Device_Tree_Usage
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.