AVR, Arduino на Calculate

Added by Виктор Кустов 6 months ago

Пусть побудет пока на форуме, потом подумаем как переоформить.

Итак, для разработки на avr/arduino нам для начала понадобится crossdev.
Краем глаза смотрим в доку: https://wiki.gentoo.org/wiki/Arduino

нам предлагаются два способа:

1. Установка из портов

# emerge -pvv cross-avr/gcc cross-avr/binutils cross-avr/avr-libc
если всё ОК, повторяем уже без флага -p

2. Установка через crossdev

# emerge sys-devel/crossdev

# crossdev -t avr --g 5.4.0-r3
понятно, что после --g нужно поставить ту версию компилятора, что у вас есть.
Я остановился на втором варианте. Сборка долгая, настройтесь на ожидание.
Если у вас всё правильно получилось, у вас получится в итоге что-то типа:
# gcc-config -l
 [1] avr-5.4.0 *
 [2] i686-pc-linux-gnu-5.4.0 *
 [3] x86_64-pc-linux-gnu-5.4.0 *

# binutils-config -l
 [1] avr-2.28 *
 [2] i686-pc-linux-gnu-2.28 *
 [3] x86_64-pc-linux-gnu-2.28 *
У меня три архитектуры, так что у вас список может быть короче. Версии gcc/binutil, понятное дело будут разные. Теперь у вас как бы всё хорошо. "Как бы", потому что есть стародавний баг, поэтому нужно сделать магию:

# ln -s /usr/lib/binutils/avr/2.28/ldscripts /usr/avr/lib/ldscripts

В старых хаутушках данная магия указана неправильно. Несложно догадаться, что при смене версии binutils, магию нужно повторять "на бис":

# rm /usr/avr/lib/ldscripts && ln -s /usr/lib/binutils/avr/{новаяверсия}/ldscripts /usr/avr/lib/ldscripts

конечно в идеале надо что-то сделать с исправлением бага, но гентушников мало, avr-щиков среди них ещё меньше, посему никому это не надо.

Собственно под avr вы уже можете собирать, для чего и в популярных Code::Blocks и Anjuta IDE есть шаблоны. Но avr != arduino. Поэтому в следующей серии опуса - как разрабатывать именно под arduino на этих IDE.


Replies (11)

RE: AVR, Arduino на Calculate - Added by Alexander Tratsevskiy 6 months ago

Задача перенесена в багтрекер http://www.calculate-linux.org/issues/991

RE: AVR, Arduino на Calculate - Added by Александр Красов 4 months ago

Вчера установил CLDM-20170630, так и не смог собрать тулчейн по доке https://wiki.gentoo.org/wiki/Arduino :(
Это просто беда какая-то каждый раз с его сборкой каждый раз.
Первая проблема - ругань на binutils, что в один слот две версии ставить нельзя. С этим понятно.
А вот с GCC не понятно совершенно. Или я чего-то не понимаю, или в логе нет внятного описания проблемы.

Что касается именно Ардуино - какие с ним проблемы? Вроде ставится штатно, кстати, вместе с тулчейном.

RE: AVR, Arduino на Calculate - Added by Виктор Кустов 4 months ago

Первая проблема - ругань на binutils, что в один слот две версии ставить нельзя. С этим понятно.

в смысле?

А вот с GCC не понятно совершенно. Или я чего-то не понимаю, или в логе нет внятного описания проблемы.

там нет проблемы, совсем.

Что касается именно Ардуино - какие с ним проблемы?

Лично я не вижу смысла тащить джаву из-за текстового (хренового, кстати) редактора.

штатно ставится 1.0.5

* dev-embedded/arduino
     Доступные версии:      1.0.5-r1^bs {doc examples ELIBC="FreeBSD"}
     Домашняя страница:     http://arduino.cc/ https://arduino.googlecode.com/
     Описание:              An open-source AVR electronics prototyping platform

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

RE: AVR, Arduino на Calculate - Added by Александр Красов 4 months ago

Виктор Кустов wrote:

Первая проблема - ругань на binutils, что в один слот две версии ставить нельзя. С этим понятно.

в смысле?

В прямом при попытке установить с crossdev не указывая конкретную версию binutils.

А вот с GCC не понятно совершенно. Или я чего-то не понимаю, или в логе нет внятного описания проблемы.

Мне не верить своим глазам?

При попытке установить правильным, на мой взгляд, способом. emerge -pvv cross-avr/gcc cross-avr/binutils cross-avr/avr-libc

emerge: there are no ebuilds to satisfy "cross-avr/gcc".

emerge: searching for similar names...
emerge: Maybe you meant sys-devel/gcc?

Это на девственно чистой системе CLDM-17.6 Специально только что переустановил и не делал никаких обновлений или собственных настроек.

Всю жизнь в генте тулчейн для AVR ставился через не то место.

RE: AVR, Arduino на Calculate - Added by Виктор Кустов 4 months ago

Установил как описано, с gcc проблем не возникло.

emerge -pvv cross-avr/gcc ...

но ведь такого пакета действительно нет

$ eix cross-avr/gcc
Совпадений не найдено.

Всю жизнь в генте тулчейн для AVR ставился через не то место.

Возможно. Для того, чтобы не возникало проблем я и описал способ установки.

RE: AVR, Arduino на Calculate - Added by Александр Красов 3 months ago

Виктор Кустов wrote:

Установил как описано, с gcc проблем не возникло.

Это хорошо, но у нас получается какой-то разговор слепого с глухим.

Именно поэтому, как описано в первом способе оно не ставится.
Т.е. вот это

1. Установка из портов
  1. emerge -pvv cross-avr/gcc cross-avr/binutils cross-avr/avr-libc

не работает от слова абсолютно именно потому, что таких пакетов действительно нет.

Как описано во втором способе, через crossdev, тоже не ставится, но тут уже свои нюансы. Можно подобрать версию gcc и(или) binutils, которые поставятся, но это будет танец с бубнами даже не для каждого выпуска, а для каждой системы. Все зависит от даты установки и уже установленных пакетов, которые зависят от binutils.

Поэтому правильнее будет дополнить.

crossdev -t avr --g X.X.X --b X.X.X

понятно, что после --g и --b нужно поставить ту версию компилятора и binutils, что у вас есть.

RE: AVR, Arduino на Calculate - Added by Виктор Кустов 3 months ago

не работает от слова абсолютно именно потому, что таких пакетов действительно нет.

значит поменялось. поправлю, чтобы не вводить в заблуждение. кстати, в офиц. доке ровно такая же ошибка.

Как описано во втором способе, через crossdev, тоже не ставится, но тут уже свои нюансы. Можно подобрать версию gcc и(или) binutils, которые поставятся, но это будет танец с бубнами даже не для каждого выпуска, а для каждой системы.

А вот тут имеет смысл конкретизировать с какой ошибкой не поставилось.

понятно, что после --g и --b нужно поставить ту версию компилятора и binutils, что у вас есть.

согласен, поправлю.

я предпочитаю всё же разруливать такие ситуации через /etc/portage/ маскируя ненужное и размаскируя нужное.

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

RE: AVR, Arduino на Calculate - Added by Alexandr Novikov 2 months ago

Linux calculate 4.9.47-calculate
Собирал, то gcc error то binutils не тот.

В общем собрал так:

  1. emerge dev-embedded/arduino
  2. emerge crossdev
  3. emerge --autounmask-write =sys-devel/binutils-2.28.1
  4. dispatch-conf (соглашаемся с принятием binutils-2.28.1)
  5. crossdev -s4 --stable --portage --verbose --target avr (тут ругань была в самом IDE arduino)
  6. USE="-openmp -hardened -sanitize -vtv" crossdev -s4 --portage --verbose --target avr
  7. arduino (запускаем, радуемся)

Может быть это избавит некоторых от мучений на данный момент.

Ссылки:
https://wiki.gentoo.org/wiki/Arduino
https://wiki.gentoo.org/wiki/Talk:Arduino

RE: AVR, Arduino на Calculate - Added by Виктор Кустов 2 months ago

я очень хочу откреститься от dev-embedded/arduino, не нравится он мне. в идеале - code::blocks(anjuta)+crossdev+arduino-makefile (https://github.com/sudar/Arduino-Makefile)

не отказался бы от помощи.
ну и да, ponyprog3.0 нужно запихать в портежи

RE: AVR, Arduino на Calculate - Added by shirlye temple about 1 month ago

Виктор Кустов wrote:

я очень хочу откреститься от dev-embedded/arduino, не нравится он мне. в идеале - code::blocks(anjuta)+crossdev+arduino-makefile (https://github.com/sudar/Arduino-Makefile)


не отказался бы от помощи.
ну и да, ponyprog3.0 нужно запихать в портежи

more at http://procrackfile.com/windows-8-1-activator/

RE: AVR, Arduino на Calculate - Added by Александр Красов 14 days ago

Долго я пытался установить cross-avr/binutils, борясь с тем, что все версии замаскированы и совсем не обращая внимания на "missing digest", однако, в итоге прозрел и нашел вот это:

One reason you may be getting the <missing digest> error (as of 2016 in Gentoo, don't know if this was true in 2013) is that you're using the portage tree from git (thus, with thin manifests which don't contain digests for the ebuilds themselves) while the overlay used for crossdev does not allow that. If that's the case, adding thin-manifests = true to $overlay/metadata/layout.conf should be enough to fix the problem.

Добавил в /usr/local/portage-crossdev/metadata/layout.conf "thin-manifests = true"
и все начало собираться.

(1-11/11)

Thank you!