LINUX.ORG.RU

Увидел свет Antares 0.2-rc1

 , ,


3

4

После двух лет тихой, незаметной и неторопливой (очень) разработки вышел первый релиз Antares. Antares — это открытая и свободная (GPLv2) реализация системы сборки и набор библиотечного кода, ориентированные на разработку под «голое железо».

Краткий список особенностей:

  • Linux kernel-like система сборки, которую легко использовать в своем проекте.
  • Написано на GNU/Make с использованием kconfig, (через kconfig-frontends), требует минимум зависимостей.
  • Библиотечный код и система сборки лежат отдельно от кода Ваших проектов, что позволяет разделять библиотечный код между несколькими проектами и легко поддерживать его.
  • Готовые примеры проектов для всех архитектур.

Поддержка ОС:

  • GNU/Linux;
  • *BSD;
  • Mac OS X (требуется установка окружения GNU).

Поддержка компиляторов:

  • gcc;
  • sdcc.

Поддержка clang планируется к 0.2-rc2.

Поддерживаемые целевые архитектуры:

Экспериментальная поддержка pic32 доступна в отдельной ветке, добавление в основную планируется к 0.2-rc2

Поддержка различных библиотек для целевых платформ (все библиотеки адаптированы для быстрой настройки через kconfig):

Прочие особенности:

  • Для всех поддерживаемых семейств мк из коробки есть типовые сценарии прошивки, легко добавлять свои, проекто-специфичные.
  • Поддержка многопоточной сборки.

Проекту требуется помощь: тестирование, патчи, библиотечный код и документация.

Отдельное спасибо drakmail за тестирование под Mac OS X.

Getting started: RUS | ENG

>>> Страница проекта на GitHub

★★★★★

Проверено: JB ()
Последнее исправление: JB (всего исправлений: 8)
Ответ на: комментарий от olibjerd

я и не уходил, просто обналичил накопленный скор ;)

ncrmnt ★★★★★
() автор топика

А что с твоим предыдущим ником?

Anon
()
Ответ на: комментарий от anonymous

А есть что лучше? чтобы curses интерфейс в котором можно жамкать пунктики?

Dark_SavanT ★★★★★
()

И да, kconfig вкупе с makefiles - редкой степени гемморой, трэш и уе***ство. Я этих устриц сейчас полной ложкой жру

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Треш это писать кишки такой билдсистемы, чтобы все правильно пересобирало и делало это тогда, когда нужно. А в плане использования потом как раз проще намного, objects-$(CONFIG_SOMESHIT)+=shit.o, больше-то и не надо

ncrmnt ★★★★★
() автор топика
Ответ на: комментарий от ncrmnt

Сейчас оно хоть и работает как ожидается даже на многопоточной сборке, я до сих пор не уверен, что все сделал самым оптимальным способом. Но это должно стать заметным только на проектах размером с линуксовое ядро, так что в этом контексте на это можно забить.

ncrmnt ★★★★★
() автор топика

Это слишком Ъ для меня. Стоит пытаться осилить или же оставаться на Eclipse+avr/arm plugin? Какие плюсы-минусы-подводные камни? В чём была вообще цель?

prischeyadro ★★★☆☆
()
Ответ на: комментарий от Dark_SavanT

Я этих устриц сейчас полной ложкой жру

Да чем ты таким занимаешься? Для драйвера kbuild никаких проблем не представляет.

tailgunner ★★★★★
()
Ответ на: комментарий от ncrmnt

Это пока ты работаешь в рамках написанного. Как только надо расширять или делать сколько-нибудь нетривиальную логику, то всё, приплыли.

У меня давно руки чешутся сделать концепт духовно близкий к kconfig, но без вот этого ужаса с makefile

Dark_SavanT ★★★★★
()
Ответ на: комментарий от tailgunner

Я buildroot довожу до состояния сборки firmware для железки. Мягко говоря местами нетривиально. Для драйвера да, проблем никаких.

Dark_SavanT ★★★★★
()
Последнее исправление: Dark_SavanT (всего исправлений: 2)
Ответ на: комментарий от prischeyadro

Плюсы - kconfig, если щупал линуксовое ядро, поймешь насколько удобно. Тут он интегрируется в каждый проект безболезненно без написании кучи машинерии. суть(tm) есть menuconfig с кучей параметров которыми можешь очень быстро настраивать все. Для avr плюсы - есть vusb, который можно настроить за 2 секунды, а не заниматься любовью с usbconfig.h И да, eclipse/kdevelop/чоугодно ты с этим можешь подружить, главное чтобы он вызывал в каталоге с проектом make и все.

ncrmnt ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Неа, у Фильтрыча стоит задача сборки прошивки под микроконтроллер, у меня стоит задача сборки ядра и rootfs для нескольких устройств близких по железу, но разных по периферии

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Ну для работы с фирмварями мк этого более чем хватает. Ну я для нетривиальных случаев (в частности, vusb), где часть конфига, или отдельные файлы приходится генерировать скриптами сделал такой механизм.

gen-y+=somereceipe

somereceipe: 
    echo "someshittycode" > $(TOPDIR)/include/generated/usbconfig.h

На данном моменте это покрывает все нетривиальные моменты, и можно спокойно работать.

ncrmnt ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Нет, у меня под мелкие мк без OS (или с RTOS, хотя поддержки RTOS у меня пока нет в Antares), а у него полноценные линуксовые железяки. Задачи и проблемы тут совершенно разные.

ncrmnt ★★★★★
() автор топика
Ответ на: комментарий от ncrmnt

Ага, покрывает, но как только начинает появляться какая-то логика управления этим добром - пинзес, приехали. Билдрут, я думаю, ты видел.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Да, билдрут я видел и хорошо знаю, какой с ним может быть гемор - сам проходил. Что касается логики управления, тут поясни что имеешь в виду.

Тут дописать что-то проектоспецифичное проще. Я сделал так. Антарес валяется отдельно и симлинкается в проект, предоставляя скрипты сборки, дефолтные методы деплоя и так далее. Не надо как в билдруте держать патчсет и ребейзить его с выходом новой версии билдрута. По сути проект кроме кода, пары файлов конфига и Makefile-заглушки ничего не содержит. Вся дополнительная логика управления хозяйством может заключаться: * В хитровыдолбанном методе деплоя прошивки (скопировать прошивку в в компьютер левой нижней ноги робата и запустить avrdude по ссх). Решается тем, что можно класть свои методы деплоя в $(TOPDIR)/deploy/, которые сразу подхватываются. * Использовании определенной древней версии антарес (решается тем, что у проекта своя копия на каталог с антарес или симлинк) * Что-то о чем я не подумал. Думаю решается тем, что топ левел мейкфайл мелкий на пару десятков строк, и в него можно добавить свои рецепты.

ncrmnt ★★★★★
() автор топика
Ответ на: комментарий от ncrmnt

Поправь если чего упустил.

ncrmnt ★★★★★
() автор топика
Ответ на: комментарий от ncrmnt

Пример который у меня работает через задницу:

Нужно чтобы buildroot умел в рамках одного дерева в разные output/target_* директории собирать rootfs для разных железок. Засада в том, что генерация rootfs разнесена по разным кускам кода и надо в них аккуратно встроиться так, чтобы не ломать то, что есть. Потом надо свои изменения ещё приводить в соответствие с master веткой билдрута, с которой время от времени синкаемся.

У тебя всё несколько проще получается.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Угу. В моем случае проекты лежат в отдельных репах от билдсистемы и библиотечного кода, потому апдейт это вытянуть свежую версию антарес и поверх нее попробовать собрать проекты. То чего я и добивался.

Подобное у меня есть только в моей WiP фирмваре для станков, когда хочется пакетно собрать бинари под несколько вариантов электроники/механики. Но тут я разруливаю пакетную сборку просто несколькими конфигами в targets/ и правилом в $(TOPDIR)/Makefile, которое по ним проходится одним $(foreach ...). И то это нужно не каждый день.

ncrmnt ★★★★★
() автор топика

Я застопорился, когда в качестве компилятора make захотел использовать «arm-ncrmnt-eabi-gcc». Я, конечно, могу симлинкнуть свой на это имя, но это как-то неправильно. А где настраивать этот кросс-префикс, я не нашёл.

CYB3R ★★★★★
()
Ответ на: комментарий от Dark_SavanT

С ядром, бизибоксом, uclibc и другими проектами, использующими kconfig у меня прокатывало. А тут не работает.

CYB3R ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Нет. Я отказался от поставки вкряченного kconfig вместе с antares, в пользу kconfig-frontends. Это тупо kconfig, который с каждой версией ядра перепаковвывают, в отдельный пакет. Не хочу устраивать duplication of effort.

ncrmnt ★★★★★
() автор топика
Ответ на: комментарий от proud_anon

я просто задумался о софте, написанном на make

Это ещё что, вон на sed шахматы написали.

MiniRoboDancer ★☆
()
Ответ на: комментарий от anonymous

Любые аврки. make menuconfig -> Architecture выбираешь AVR, MCU - atmega128. Все.

Можешь танцевать от мигания диодом на 2313 (см. примеры).

ncrmnt ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Тогда пересобирай kconfig-frontends, предварительно установив хотябы libncurses-dev. По дефолту оно отрубает те фронтенды, хедеров для которых не находит.

ncrmnt ★★★★★
() автор топика
Ответ на: комментарий от Dark_SavanT

Я этих устриц сейчас полной ложкой жру

о как

gray ★★★★★
()
Ответ на: комментарий от Dark_SavanT

Вменяемых аналогов Kconfig на вменяемых языках так до сих пор не написано.

Путаешь теплое с мягким. Kconfig — он на лексе и си написан, на выходе у него — файлик .config. А уж Kbuild (та самая аццкая мешанина из мейкфайлов) его всасывает и на основе него собирает ядро/busybox/whatever.

demidrol ★★★★★
()
Ответ на: комментарий от CYB3R

Да, там есть деплой для этого готовой. Ставишь stlink в систему, далее

Deployment -> stlink, включаешь, настраиваешь.

make deploy-stlink

И для stm32 убедись, что в «Architecture Settings» выставлены правильные размеры RAM/FLASH и density. У stm32 в принципе ремней безопасности нет, как у avr. Прошить прошьет, а вот работать не будет, или косячить будет.

ncrmnt ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.