- Wiki МЕНТОР ЭЛЕКТРОНИКС
- Инструменты пользователя
- Инструменты сайта
- Боковая колонна
- Содержание
- Компиляция Angstrom Linux для BlueShark
- Утилиты необходимые для сборки
- Установка необходимых утилит в Debian и Ubuntu
- Angstrom Linux stable
- Ядро 2.6.29 stable
- Создание окружения
- Создание конфигурации
- Компиляция файловой системы
- Результаты компиляции
- Компиляция ядра 2.6.29
- Angstrom Linux unstable
- Создание окружения
- Установка bitbake
- Создание конфигурации
- Установка окружения
- Компиляция файловой системы
- Ядро 2.6.32 unstable
- Компиляция без среды OE
- Компиляция в среде OE
- Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
- Re: Кто-нибудь руками Angstrom собирал?
Wiki МЕНТОР ЭЛЕКТРОНИКС
Инструменты пользователя
Инструменты сайта
Боковая колонна
Содержание
Компиляция Angstrom Linux для BlueShark
Очень полезная документация для тех, кто хочет в совершенстве овладеть приемами работы с OpenEmbedded: http://docs.openembedded.ru/index.html
Процедура сборки Angstrom Linux проверена на машинах:
Для компиляции Angstrom Linux потребуется около 15ГБ свободного места на диске. Время компиляции сильно зависит от:
На одноядерном процессоре время компиляции может занимать сутки.
Утилиты необходимые для сборки
* Python (версии 2.4.0 или более поздней), а также возможно ряд файлов которые иногда включают в пакет с питоном иногда нет, если сборка bitbake не удалась попробуйте поставить пакет python-dev или python-devel, в завимости от дистрибутива название может отличаться
* GNU Patch (версии 2.5.9 или более поздней)
* GNU make (Версии 3.80 или более поздней)
* Psyco JIT компилятор рекомендуется для ускорения сборки
* perl (нужна версия новее 5.0, скорее всего >=5.6.2 подойдет)
* bitbake (bitbake должна быть версии 1.8.6, именно с этой версией тестировалась сборка)
* Docbook DTDs и DSSSL stylesheets
* sgmltools, called «sgmltools-lite» too
* Texinfo версии выше 4.4
Установка необходимых утилит в Debian и Ubuntu
Angstrom Linux stable
Ядро 2.6.29 stable
В настоящее время в стабильной ветке компилируется именно ядро 2.6.29.
Создание окружения
Данные инструкции предполагают компиляцию Angstrom Linux в домашней директории пользователя, поэтому убедитесь, что ней достаточно места (не менее 6-15ГБ).
Войдите в домашнюю директорию пользователя:
Выполните следующие команды, которые скачивают хранилище файлов OpenEmbedded:
Обновите локальную копию хранилища OE:
Создание конфигурации
Сначала необходимо установить переменные окружения, для этого скачайте скрипт в директорию $
Чтобы создать конфигурацию OE именно для Beagleboard (BlueShark) выполните следующие действия:
1) Создайте директорию для файла конфигурации local.conf для платформы
2) Скопируйте пример конфигурации:
3) Добавьте в конец файла строку:
Компиляция файловой системы
Вы можете не тратить несколько часов и взять готовую файловую систему отсюда http://mentorel.com/downloads/blueshark/ и сразу же перейти к компиляции ядра.
Обратите внимание, что файловая система с меткой stable относится к стабильной, т.е. получена по инструкциям, использованным в этом разделе.
Чтобы собрать образ с поддержкой графического интерфейса наберите команду:
Если появилось следующее сообщение об ошибке:
то нужно выполнить следующую команду, выбрав ответ «NO»:
Результаты компиляции
По окончании работы утилиты bitbake вы должны увидеть следующую надпись:
Это означает, что в директории $
Имя | Размер |
---|---|
u-boot.bin | 193k |
uImage-2.6.29-r46-beagleboard.bin | 2.9M |
console-image-beagleboard.tar.bz2 | 9.2M |
x11-image-beagleboard.tar.bz2 | 21.1M |
modules-2.6.29-r46-beagleboard.tgz | 7.1M |
Beagleboard-demo | 131M |
Из этих файлов нам подойдут только файловые системы с консольным интерфейсом (Angstrom-console-image..) и графическим интерфейсом (Angstrom-x11-image..). u-boot, ядро и модули для него нам не подходят, т.к. они обеспечат только функционал Beagleboard, для которого не предусмотрена поддержка сетевого контроллера LAN9221 (однако этот контроллер поддерживается в OpenEmbedded для модуля OVERO).
Далее скомпилируем ядро Linux для BlueShark.
Компиляция ядра 2.6.29
С этим ядром также работает файловая система Beagleboard-demo, где присутствуют Internet браузер и другое интересное ПО.
Поддержка функций на платформе Atoll:
Обратите внимание, что все предыдущие действия приводят к компиляции кросс-компилятора GCC с патчами от OpenEmbedded. Применение именно собранного компилятора гарантирует 100% совместимость с файловой системой от OpenEmbedded и дает возможность использовать файловую систему от Koen или Narcissus.
Откройте файл $OETREE/build/conf/local.conf:
и выключите строку:
Ключ rm_work удаляет все промежуточные файлы при компиляции: исходные тексты, объекты и пр. Нам потребуются исходники ядра плюс весь необходимый набор патчей от OpenEmbedded. Можно, конечно, подготовить всё вручную, но проще и с наименьшими ошибками выполнить так.
Таким образом мы выключили удаление исходников при компиляции. Теперь пересоберем ядро для Beagleboard и, наконец, получим необходимое окружение для дальнейшей работы с ядром:
Теперь в директории «$OETREE/angstrom-dev/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.29-r46/git» находятся исходные тексты ядра 2.6.29 с уже примененными патчами для Beagleboard.
Добавим к ядру патчи для модуля BlueShark и отладочных плат Atoll. Для этого зайдите в директорию «$OETREE/angstrom-dev/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.29-r46/git», скачайте набор патчей http://mentorel.com/downloads/blueshark/blueshark-2.6.29.patches.tgz и распакуйте архив прямо в корень исходников ядра:
Теперь можно применить исправления для BlueShark:
Скачаем файл конфигурации ядра:
Чтобы настроить конфигурацию ядра используют команду:
Компиляция ядра (обратите внимание на опцию -j2, в ней вы задаете кол-во ядер процессора на вашем компьютере):
Установите модули в файловую систему на SD-карточке:
В результате получаем бинарник, который необходимо записать на SD-карту (партицию FAT32) и можно загружать платформы, основанные на модуле BlueShark.
Angstrom Linux unstable
Далее описаны действия, верные для всех версий ядра нестабильной ветки:
Создание окружения
Войдите в домашнюю директорию пользователя:
Выполните следующие команды, которые скачивают хранилище файлов OpenEmbedded:
Обновите локальную копию хранилища OE:
Установка bitbake
Лучше использовать локальную версию утилиты bitbake, чем устанавливать её в Linux.
Создание конфигурации
Теперь необходимо исправить файл «build/conf/local.conf», добавив в него следющие строки:
Также, если у вашего ПК многоядерный процессор, то можно ускорить компиляцию, установив следующие параметры:
Описания этих параметров вы найдете в файле «build/conf/local.conf».
Внимание! Чтобы сократить количество расходуемого места на диске добавьте опцию:
Также можете указать, где у вас находится хранилище пакетов или куда именно они будут скачены:
Сохраните файл «build/conf/local.conf».
Установка окружения
Компиляция файловой системы
Вы можете не тратить несколько часов и взять готовую файловую систему отсюда
http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2 или http://mentorel.com/downloads/blueshark/ и сразу же перейти к компиляции ядра. Обратите внимание, что файловую систему Beagleboard-demo собрать самому практически нереально, т.к. требуется разрешить зависимости для очень многих пакетов. При этом используется ПО от Texas Instruments, поставляемое по соглашению. Использовать сборки от Beagleboard-сообщества намного проще и быстрее.
Зайдите в папку build и наберите команды:
Внимание, компиляция обычно занимает несколько часов и не всегда завершается успешно, т.к. это нестабильная ветка.
Ядро 2.6.32 unstable
Компиляция без среды OE
Ядро Linux 2.6.32-r78 можно скомпилировать без громоздкой системы OpenEmbedded. Для этого выполняют следующие шаги:
4) Теперь необходимо распаковать все исходники:
5) Накладываем исправления для BlueShark:
6) Настраиваем конфигурацию ядра:
7) Собственно сама компиляция
8) Модули можно скомпилировать с помощью команды
Либо использовать готовые, т.к. модули одинаковы для всех платформ одной архитектуры:
http://mentorel.com/downloads/blueshark/demo/modules-2.6.32-r78.tgz
Компиляция в среде OE
Поддержка функций на платформе Atoll.
Есть поддержка всех функций, включая:
Откройте файл $OETREE/build/conf/local.conf и выключите строку:
Ключ rm_work удаляет все промежуточные файлы при компиляции: исходные тексты, объекты и пр. Нам потребуются исходники ядра плюс весь необходимый набор патчей от OpenEmbedded. Можно, конечно, подготовить всё вручную, но проще и с наименьшими ошибками выполнить так.
Теперь пересоберем ядро для Beagleboard и, наконец, получим необходимое окружение для дальнейшей работы с ядром:
Теперь в директории «$OETREE/build/tmp/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r78+gitra6bad4464f985fdd3bed72e1b82dcbfc004d7869/git» находятся исходные тексты ядра 2.6.32 с уже примененными патчами для Beagleboard.
Добавим к ядру патчи для модуля BlueShark и отладочных плат Atoll. Для этого зайдите в директорию «$OETREE/build/tmp/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r78+gitra6bad4464f985fdd3bed72e1b82dcbfc004d7869/git», скачайте набор патчей http://mentorel.com/downloads/blueshark/blueshark-2.6.32-r78.patches.tgz и распакуйте архив прямо в корень исходников ядра:
Теперь можно применить исправления для BlueShark:
Скачаем файл конфигурации ядра:
Чтобы настроить конфигурацию ядра используют команду:
Компиляция ядра (обратите внимание на опцию -j2, в ней вы задаете кол-во ядер процессора на вашем компьютере):
Установите модули в файловую систему на SD-карточке:
В результате получаем бинарник, который необходимо записать на SD-карту (партицию FAT32) и можно загружать платформы, основанные на модуле BlueShark.
Источник
Кто-нибудь руками Angstrom собирал?
Сделал поиск по слову Angstrom и нашел кучу замечательных постов о том как люди ставили агнстром из готовых пакетов на свои IPAQ и прочие КПК. Только мне такой вариант не подходит. Я хотел бы пообщаться с людьми которые руками собирали Angstrom Linux для своего девайса.
У меня устройство, как бы сказать не КПК, но в нем есть всё, что есть у обычного КПК. Это платформа разработчика на Atmel ARM9 с экраном, тачскрином и прочими радостями. Так вот, готовых образов под платформу нет рабочих. В смысле есть какие-то собранные под конкретную аппаратную конфигурацию для данного процессора и наверное у них всё работает, но не у меня, потому как у моей платформы есть отличия.
Собрал я руками base-image с помощью bitbake, несколько дней разбирался, пока получил результат. В итоге — стартовал с флеша он один раз и потом не стартует вовсе. По NFS не монтирует ФС совсем! Ну ладно с флешом какие-то заморочки, но NFS всегда железно работала! Бред какой-то. Короче, проблем хватает и разгребать можно долго. А есть люди, которые руками собирают весь софт. Тоже муторно, но работает. Например, руками собрал минимальную ФС на busybox — всё работает как часы. Хочешь с флеша, хочешь по NFS. Но в ангстроме то вроде бы всё доступно, набрал bitbake x11-image — и получил и графическую оболочку и набор программ необходимых.. Только это в теории. Да еще хорошо для какой-нибудь известной платформы, которую штампуют тысячами и народ покупает и тестирует этот Ангстром..
Есть соображения на тему? Т.е. вообще стоит разбираться с ангстромом и кучей багов, чтобы получить удобное средство сборки готовых образов или же пойти по пути CROSS_COMPILE=xx ./configure && make all??
Re: Кто-нибудь руками Angstrom собирал?
>Это платформа разработчика на Atmel ARM9 с экраном, тачскрином и прочими радостями. Так вот, готовых образов под платформу нет рабочих.
>В смысле есть какие-то собранные под конкретную аппаратную конфигурацию для данного процессора и наверное у них всё работает, но не у меня, потому как у моей платформы есть отличия.
Для нормальной работы нужно рабочее ядро (есть патчи на вышеуказанном сайте), загрузчкик (uboot) и тулчайн (можно воспользоваться готовым можно собрать самому). Если это все у тебя уже есть и работает работает то идем сюда
С его помощью можно и gentoo легко портировать, там есть его менеджер пакетов, но лично я предпочитаю crux. Правда там вместо glibc используется uclibc, но мне удавалось для x86 собрать даже kde3 c ними, правда я писал несколько своих патчей, как например для k3b пришлось писать свой вариант какой-то не posix ф-ции. Ангстром не пробовал и скорей всего не буду 🙂
Re: Кто-нибудь руками Angstrom собирал?
>Для нормальной работы нужно рабочее ядро (есть патчи на вышеуказанном сайте), загрузчкик (uboot) и тулчайн (можно воспользоваться готовым можно собрать самому).
Re: Кто-нибудь руками Angstrom собирал?
>тулчайн (можно воспользоваться готовым можно собрать самому)
Для buildroot нужен не тулчайн а просто рабочий gcc на хост-системе, там кросскомпиляция, тулчайн собирается самим buildroot.
Re: Кто-нибудь руками Angstrom собирал?
Ну я НЕ в начале творческого пути 🙂
buildroot: 2 недели сношений с ним дали результат — больше им пользоваться не буду. Тулчейн он собирает совсем детский — попробуйте его кому-нибудь отдать. Все пути жестко прописаны в бинарях. А потом людям объяснять, что надо для компиляции специальные ключи добавлять — нет уж. Затем это чудо создает rootfs, которую еще напильником надо подтачивать, например, пароль рута включает, а какой он — никто не знает 🙂
тулчейн: теперь только codesourcery arm-2007q3 — вообще никаких проблем с ними.
linux4sam: да, сначала пользовался убутом и ядром оттуда, но теперь собрал u-boot 1.3.4 и очень рад, ядро 2.6.25.6, патчи с maxim.org.za
Оговорюсь о своей платформе — у меня она на базе at91sam9263ek, но имеет ряд отличий. Например, стоит NOR Flash Spansion. Никто в Атмеле не догадался написать в ератах или еще где, что с этой флеши стартовать нельзя, а можно только с их родной NOR. 2 недели потерял, ладно — лирика.
Теперь взял образ Ангстром x11-demo с linux4sam, залил его в свою NOR flash: первый раз он загрузился — откалибровал тачскрин, всё работает просто сказка! Перегружаю — вот тут началось :). Куча ошибок с JFFS2, короче, так и не разобрался пока.
Вот и возник вопрос: стоит ли разбираться со всеми багами (ну или особенностями) Ангстрома и получить на выходе готовый пакет программ (продукт) или руками собирать иксы, все библиотеки, зависимости и прочее. Но зато на выходе будет 100% знакомый дистрибутив и без непонятных глюков. Это как Slackware и Ubuntu сравнивать — Angstrom это убунта, а слакварь это руками собрать весь софт.
А вы, koTuk, видимо, относитесь к числу «собираю руками», судя по патчам для k3b?
Re: Кто-нибудь руками Angstrom собирал?
>которую еще напильником надо подтачивать, например, пароль рута включает, а какой он — никто не знает 🙂
ну это разве проблема 🙂
>Теперь взял образ Ангстром x11-demo с linux4sam, залил его в свою NOR flash: первый раз он загрузился — откалибровал тачскрин, всё работает просто сказка!
У меня плата аналогичная at91sam9260ek — без встроенного контроллера lcd так что с графикой полный облом 🙂 На плате не выведен даже EBI чтобы туда можно было подключить — просто RAM запаяна и все. Загрузка с dataflash — у меня там образ initrd с ядром лежит ну и bootstrap и uboot конечно, потом монтируется mmc где лежит основной root раздел.
>Куча ошибок с JFFS2
возможно проблема с ядром
>относитесь к числу «собираю руками», судя по патчам для k3b?
кде — это все на х86 делалось и для х86, просто когда-то у меня были иллюзии что на uclibc должно работать быстрей, в общем баловство 🙂 Мне хватает buildroot — поэтому ничего другого я просто не пробовал, не могу советовать.
Re: Кто-нибудь руками Angstrom собирал?
>>Куча ошибок с JFFS2 >возможно проблема с ядром
Собранный руками busybox с тем же ядром отлично работает с флешом.
Спасибо за ответы, но у меня основной вопрос был не в том, где я уже ошибся, а в том как бы не ошибиться с выбором окружения для разработки.
Re: Кто-нибудь руками Angstrom собирал?
Работа с mtd и JFFS2 касается только ядра, busybox это чистый user space, так что даже если все так как вы пишите — завлуга там явно не busybox.
Re: Кто-нибудь руками Angstrom собирал?
> Вот и возник вопрос: стоит ли разбираться со всеми багами (ну или особенностями) Ангстрома и получить на выходе готовый пакет программ (продукт) или руками собирать иксы, все библиотеки, зависимости и прочее.
у меня для девайсов все кроскомпилится руками. оно правда собирается потом в deb (dpkg стоит на целевой платформе) и раздается пакетами, но для каждой либы/софтины пакет надо собрать отдельно (дописывается make deb).
два дня сношений — base-image ангстром из bitbake собираться отказывается. воюем дальше.
Re: Кто-нибудь руками Angstrom собирал?
я собирал для платы основанной на at91sam9263ek,
ядро и загрузчики (at91boostrap и uboot) собирал ручками,
и грузилась с nor флешки, пришлось конечно тайминги поменять
в at91boostrap и uboot, чуть-чуть их пропатчить и все заработало
>CROSS_COMPILE=xx ./configure && make all??
angstrom это и делает, плюс наложение патчей
проблемма с jffs2 скорее всего в том что не сделали erase флешки перед заливкой образа.
Re: Кто-нибудь руками Angstrom собирал?
> два дня сношений — base-image ангстром из bitbake собираться отказывается. воюем дальше.
Если нужна помощь — обращайтесь. Я на Ангстром потратил больше :), уже понимаю что к чему там..
Re: Кто-нибудь руками Angstrom собирал?
а что за NOR flash была? У меня Spansion и у него есть замечательный режим «sleep» в который флеш входит, если сигналы на входе не меняются в течении 30нс. А 9263 при старте с NOR стартует на скорости 32кГц с соответсвующей времянкой обращения к памяти.. Короче, 2 недели разбирались, пока все линии осциллографом не проверили и внимательно прочитали даташит на флеш.
> проблемма с jffs2 скорее всего в том что не сделали erase флешки перед заливкой образа.
мы не идиоты, чтобы не знать к с флешами обращатся. Проблема в стартовых скриптах Ангстрома. Мой образ на бизибоксе имеет стартовые скрипты: ifconfig.. и всё. Стартует с флешки замечательно, файлы создает, стирает, короче флеш рабочая 100%.
Re: Кто-нибудь руками Angstrom собирал?
> два дня сношений — base-image ангстром из bitbake собираться отказывается. воюем дальше.
Кстати, у меня сначала base-image тоже не собирался. Оказывется репозиторий angstrom-distribution.org не работал, даже не пинговался.. Я просто забил и на следующий проверил, что сайт ангсторма рабочий — набираю bitbake base-image -> вуаля, и есть образ :). Кстати, если машинка шустрая, то ОЧЕНЬ желательно делать параллельную компиляцию — время сборки сокращается в разы! Правда, какие-то пакеты могут не собраться, но я с таким еще не сталкивался :). x11-image собрался без проблем также
Re: Кто-нибудь руками Angstrom собирал?
> Кстати, у меня сначала base-image тоже не собирался.
Источник