PeterBeklemishev / mila

Arduino alternative based on MILANDR processor
6 stars 0 forks source link

Ардуино-совместимость? #15

Open ReDetection opened 9 years ago

ReDetection commented 9 years ago

после #13 возникли вопросы. @dubkov, расскажи мне, почему ты хочешь разом сделать всё? почему нельзя сделать оформить поддержку миландра внутри arduino ide (и получить возможность легко замещать atmega миландром), а потом уже сделать остальной набор (и этим получить независимость)? тебе не кажется, что более итеративный подход помимо большей стабильности сулит тебе большим рынком и меньшим порогом вхождения?

dubkov commented 9 years ago

@ReDetection Сначала объясни мне, как стали популярны проекты Beagle Bone и Raspberry Pi, не имевшие изначально совместимости с Arduino

ReDetection commented 9 years ago

потому что у них ЦА другая и формат другой — очень маленькие компы, а не микроконтроллеры

dubkov commented 9 years ago

Я не понимаю, почему нужно ограничивать ресурсы камня, заточая его в форм-фактор и программные возможности Arduino. Почему проект должен быть "YADB" (yet another duino board), коих миллиарды

PeterBeklemishev commented 9 years ago

@ReDetection как минимум идея прикрутить к ардуино иде другой компилер и портировать все идущие в комплекте либы на арм - бред и глупость. Я вижу цель проекта не как создание "YADB" (yet another duino board) а как создание новой платформы с куда более широкими возможностями, куда более "взрослую" платформу А то давайте прикрутим дурацкое лего-стайл программирование к миландру и скажем что только школьничкам это вообще интересно, ага. Аудитория-то у нас шире, куда шире.

dubkov commented 9 years ago

@ReDetection ты же прекрасно знаешь разницу Архитектур ARM и AVR.

С ARM пока есть только одна плата Arduino ZERO (ядро 32-bit ARM Cortex® M0+) - и то она еще не выпущена. То есть компилятор arm-none-eabi в Arduino IDE еще не впилили. Предлагаешь этим заниматься? + Arduino IDE и так убогая

PeterBeklemishev commented 9 years ago

@dubkov @ReDetection Если мы хотим сделать плату со "взрослым" камнем и ограничить ее ардуино то это того не стоит же.

dubkov commented 9 years ago

оформить поддержку миландра внутри arduino ide

это то же самое, что

разом сделать всё

Другая архитектура, другие регистры периферии.....

PeterBeklemishev commented 9 years ago

@dubkov ты забыл что еще в каждой библиотеке - платформозависимая магия и говнокод

dubkov commented 9 years ago

С ARM пока есть только одна плата Arduino ZERO (ядро 32-bit ARM Cortex® M0+) - и то она еще не выпущена.

И, судя по официальному форуму, выпущена никогда не будет. http://forum.arduino.cc/index.php?topic=261652.15 На CES 2015 информации по ZERО не появилось, а значит, проект закрыт.

ReDetection commented 9 years ago

@dubkov, я не ограничиваю проект до yet another duino board, а расширяю его, включая базовую поддержку камня в среде, к которой уже привыкли кучи пользователей. про форм-фактор вообще слова не было, форм-фактор-то конечно нет смысла подстраивать. да и вообще для меня не существует никакого форм-фактроа ардуино — у меня дома вообще только nano v4 и sparkfun micro pro, остальное — чистые камни avr. шилды не нужны :sunglasses:

@PeterBeklemishev портировать все идущие в комплекте либы на арм

то есть по сути только SPI и I2C, ведь почти всё остальное работает поверх них, либо поверх gpio

@dubkov С ARM пока есть только одна плата Arduino ZERO

минутку, а куда ты Arduino Due выкинул? вон у них в hardware/sam/platform.txt написаны инструкции для компилятора arm-none-eabi, который лежит себе в tools. предлагаю попробовать подсунуть ему свои файлы и посмотреть на результат.

dubkov commented 9 years ago

к которой уже привыкли кучи пользователей

И это очень плохо. Адекватные люди уже перешли на Sublime.

минутку, а куда ты Arduino Due выкинул? вон у них в hardware/sam/platform.txt написаны инструкции для компилятора arm-none-eabi, который лежит себе в tools.

Увидел. Занятно.

предлагаю попробовать подсунуть ему свои файлы и посмотреть на результат.

Вот здесь не понял, что ты хочешь. Периферия камней at91sam3x8e и K1986BE92QI не совместима, даже для линий ввода вывода - at91sam3x8e использует целый контроллер PIO, а в K1986BE92QI - просто регистры в памяти.

ReDetection commented 9 years ago

в среде, к которой уже привыкли кучи пользователей

И это очень плохо. Адекватные люди уже перешли на Sublime.

Говоря о среде, я имел ввиду не среду разработки, а экосистему. ArduinoIDE-то понятно, что убога. Я ей пользуюсь только для простой загрузки в камень, чтоб не надо было вспоминать ключи gcc и avrdude — я часто меняю борды, значит легко допустить ошибку в fuse. Я ранее искал разные IDE получше и похоже, что народ тоже не стоит на месте

Вот здесь не понял, что ты хочешь. Периферия камней at91sam3x8e и K1986BE92QI не совместима

Ну а нам и не нужен at91sam3x8e, он же ключами задаётся. Если ни arduino-guys, ни milandr-guys не делали костыли внутри кода gcc, то нам нужно лишь подставить правильные ключи в boards.txt и platform.txt, чтобы вообще можно было оттуда компилировать

подогнать миландр под API ардуино - труд, равносильный написанию своего API (ИМХО)

Да, если цель — подогнать под ардуино и на этом успокоиться. Я предлагаю продолжить разработку как есть, но в момент, когда мы понимаем, что базовые вещи для работы из экосистемы arduino есть, можно сделать тонкую прослойку (паттерн "фасад"), показывающую разработанный тобой API к GPIO и SPI в виде ардуиновских digitalWrite и остальных. Тогда получается, что труд на управление периферией ты всё равно бы потратил в рамках своего проекта, а ещё почти нахаляву получил уже работающую IDE и часть библиотек, из которой даже малыши смогут пользоваться миландром для robotix или где ты там ещё предлагал его использовать. Кроме того, если Stino из sublime понимает потроха Arduino IDE, это значит что правильные среды разработки тоже автоматически смогут работать с миландром.

PeterBeklemishev commented 9 years ago

@ReDetection ты вообще внутрь этого stino смотрел? Автодополнение для саблайма выглядит так - https://github.com/Robot-Will/Stino/tree/new-stino/snippets и это изврат, честно говоря библиотеки используют костыли вместо digitalWrite - потому что digitalWrite очень медленный.

dubkov commented 9 years ago

@PeterBeklemishev

Автодополнение для саблайма выглядит так - https://github.com/Robot-Will/Stino/tree/new-stino/snippets и это изврат, честно говоря

Не вижу особого изврата, всё пишется довольно изящно.

библиотеки используют костыли вместо digitalWrite

Покаж ?

PeterBeklemishev commented 9 years ago

библиотеки используют костыли вместо digitalWrite

Покаж ?

лень искать, честно говоря

PeterBeklemishev commented 9 years ago

Используют дигиталВрайт и все такое: https://code.google.com/p/arduino/source/browse/trunk/libraries/LiquidCrystal/LiquidCrystal.cpp https://code.google.com/p/arduino/source/browse/trunk/libraries/Stepper/Stepper.cpp https://code.google.com/p/arduino/source/browse/trunk/libraries/Matrix/Matrix.cpp в софтвар сериал тоже вроде как используется

Восхитительныйй образчик г-кода https://code.google.com/p/arduino/source/browse/trunk/libraries/Sprite/keywords.txt

Запись в регистры без всяких там дигиталВрайт https://code.google.com/p/arduino/source/browse/trunk/libraries/Wire/utility/twi.c

Очень клевый список библиотек, кстати - http://playground.arduino.cc/Main/GeneralCodeLibrary

да, возможно я был не прав, говоря что

библиотеки используют костыли вместо digitalWrite

dubkov commented 9 years ago

Восхитительныйй образчик г-кода https://code.google.com/p/arduino/source/browse/trunk/libraries/Sprite/keywords.txt

Но это же для подсветки в Arduino IDE! Там так сделано, что уж тут... :tired_face:

PeterBeklemishev commented 9 years ago

Восхитительныйй образчик г-кода https://code.google.com/p/arduino/source/browse/trunk/libraries/Sprite/keywords.txt

Но это же для подсветки в Arduino IDE! Там так сделано, что уж тут... :tired_face:

Как показывает практика - в саблайме что-то похожее со сниппетами для автодополнения :(

dubkov commented 9 years ago

@ReDetection правильно ли я понимаю, что ты хочешь, чтобы я реализовал все базовые функции и методы Wiring (digitalWrite, ..., analogRead, ..., Serial.begin, millis, delayMicroseconds ...), чтобы на них сверху потом работали все остальные библиотеки ардуино (LiqudCrystal, Wire....)?

PeterBeklemishev commented 9 years ago

@dubkov Это может кто угодно реализовать, отдельной библиотекой

vdudouyt commented 9 years ago

Поддерживается 3-й стороной != Поддерживается вендором апстрима. Другой вопрос, что коль скоро реализация прослойки совместимости с экосистемой Arduino требует каких-то дополнительных усилий, то было бы недурно применить итеративный подход, о котором говорил @ReDetection. Иными словами, "сначала синица в руке".

dubkov commented 9 years ago

Не, чотко-чотко!

Я посмотрел, весь Wiring переписан под at91sam3x8e, и для внешних библиотек выдано Arduino API как ни в чем не бывало.

Если сделать то же и для миландра, то что дальше?

dubkov commented 9 years ago

А ещё вот:

https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification

Мне даже стало интересно это сделать.

Я просто отстал от жизни, и не знал, что в IDE 1.5.х:

greatly increased the flexibility of the Arduino IDE, allowing it to support boards with different microcontroller architectures, different tool-chains, and different build and upload processes.

PeterBeklemishev commented 9 years ago

@dubkov на юзабельность ардуино иде это не влияет, саблайм куда круче, увы и ах

dubkov commented 9 years ago

@PeterBeklemishev но зато он стоит 70$

PeterBeklemishev commented 9 years ago

@dubkov угу, чорт его побери

ReDetection commented 9 years ago

Товарищ @vdudouyt всё верно сказал.

@dubkov Если сделать то же и для миландра, то что дальше?

Ну почти всё то же, что ты собирался делать после выполнения своего PLAN.md. Например, устроить робо-турнир на миландрах, чисто чтобы показать, что нового камня не стоит бояться. Потом показать, что можно легко развить скорость до 80МГц, а значит обрабатывать больше информации за раз, более умные роботы со сложной логикой. Параллельно можно дорабатывать и в итоге зарелизить полный набор как ты хотел. Тонны профита, имхо.

ReDetection commented 9 years ago

А ещё этот тред — самый молодой, но уже самый комментируемый :fire: Успех! :fire_engine: :dash:

dubkov commented 9 years ago

Вообще жаркий тред.

Как вести разработку? сделаем приватный миррор arduino/Arduino ?

  • Do a bare clone of the public repo.
  • Create a new private one.
  • Do a mirror push to the new private one.

This is documented on GitHub: https://help.github.com/articles/duplicating-a-repository

ReDetection commented 9 years ago

нет, необходимости как-то связываться с репой arduino нет совсем. мы же в среде разработки ничего не меняем, только дополняем конфигурационные каталоги по сути. как и сторонние библиотеки, это просто архив, который надо распаковать в папку со скетчами. как это хранить на гитхабе — возможны варианты. думаю, правильнее всего будет отдельная репа, в которой будет эта как submodule (соберитесь все разом, я вам всё расскажу :angry: ), несколько конфигурационных файлов и каталогов, несколько Makefile. Распространение готовых архивов через встроенную в гитхаб фичу релизов.

dubkov commented 9 years ago

BTW, репа Ардуино весит 1,2 Гб :confused:

dubkov commented 9 years ago

@ReDetection Не совсем понял момент с переходом от arduino-оболочки к какой-то своей. Как именно ты это видишь?

ReDetection commented 9 years ago

Вопрос несколько странный, ну либо я его не понял. Если под оболочкой ты имеешь ввиду IDE — то в нашем случае это скорее всего создание плагинов к чему-нибудь существующему и хорошему, и то если потребуется. Если ты имеешь ввиду экосистему — тогда ответ на вопрос знаешь ты сам, ты же как-то собирался делать это всё без ардуино-экосистемы.

dubkov commented 9 years ago

Если ты имеешь ввиду экосистему — тогда ответ на вопрос знаешь ты сам, ты же как-то собирался делать это всё без ардуино-экосистемы.

Ну да. Если я провильно понял, то ты предлагаешь двойную работу: сначала экосистекму ардуино, потом свою экосистему.

ReDetection commented 9 years ago

я не уверен, хотел ли ты делать свою экосистему. я предлагаю вести разработку как ты предлагал, но выставить очередность задач так, чтобы сначала реализовать GPIO, таймеры, SPI и UART, и после этого написать несколько дополнительных хэдеров (и пару .c файлов) только для ардуино-совместимости, то есть потратить мало сил и получить много результата. имхо, не сравнимо с двойной работой. далее продолжать как ты планировал.

vdudouyt commented 9 years ago

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

ReDetection commented 9 years ago

есть вот тут (полезно бывает ещё искать по задачам, #4 #12 ). надеюсь, на выходных перенесём в milestone/issues. Да ведь, @dubkov @PeterBeklemishev @ko10ok?

dubkov commented 9 years ago

your_awesome_board

PeterBeklemishev commented 9 years ago

Класс