Если что, я согласен с Pingvin.
Вставлю свои 5 копеек, хотя тут всё очевидно. Текст ниже можете не читать, чтобы не плодить бессмысленный спор
Тут можно "убрать под кат"?
Я не исключаю, что когда-то возможна полная совместимость, но это ни в коем случае не цель проектов. На данный момент нет существенных аргументов тратить на это силы и время.
1. Мы делаем
всего-навсего лазертаг. Не универсальную платформу для реализации любых идей любого человека. Нельзя сравнивать лазертаг и ядро Линукса, тем более! Наши с Пингвином проекты по-разному упираются в предел возможностей МК. Если бы возможностей было с запасом - могла бы быть портируемость. Но мы не можем на любую ножку вывести аппаратный ШИМ, SPI, UART или ещё что-то. Приходится выбирать! Если же мы портируем на чужие платформы, получится недо-Armada и недо-Caustic, которые заведомо хуже нормальных Armada и Caustic. Ни у меня, ни у Пингвина нет резона брать чужую плату, если есть своя.
2. Можно приделать хоть интерпретатор питона, это будет даже работать приемлемо по скорости (хотя лучше - Lua). Это всё элементарно с точки зрения программирования, если честно. Нужно только время. Но ведь это же
всего-лишь лазертаг! Ну какой может быть супер-сложный режим работы у автомата Калашникова, который нельзя будет заранее предугадать и предусмотреть для этого соответствующую настройку? У меня вот у оружия предусмотрено около 30 параметров пока-что, и я не особо старался учесть все случаи. И все они настраиваются в конфиг-файле или по радио со смартфона. Будет ещё штук 10.
3. Допустим, кто-то написал ещё одну прошивку для Caustic. Чтобы это имело какой-то смысл, прошивка должна быть чем-то заметно лучше, чем Caustic, но на том же железе. Я вот писал свою прошивку больше года. При том не все ключевые фичи сделаны, но они уже близко. Если кто-то сумеет в одиночку догнать и перегнать, в том числе написать своё приложение под Android и т.п. - круто. Но почти наверняка, такой человек захочет что-то как-то по-другому в плане железа сделать, поскольку разработка железа занимает исчезающе малую часть времени, а стоимость плат мала по сравнению с другими деталями. Если перегнать или догнать не сумеет, то конечный продукт будет не особо нужен (только для личного интереса). А если такой разработчик будет не один, то для целой команды точно не проблема запилить платку, удовлетворяющую нужным требованиям.
А сделать "базовые" фичи принципиально лучше - просто невозможно, на то они и базовые.
А если кто-то придумает какую-то особую новую, всем нужную функцию, совместимую с парадигмой Caustic, я её имплементирую.
4. Унификация отдельных частей железа - это хорошо, потому что позволит рано или позно понизить стоимость изготовления, когда кто-нибудь один перейдёт на коммерческие рельсы. Из этого не следует, что когда-то будет унифицировано всё, или что это нужно делать. Мы унифицировали "мозг". Унифицировать "шилд" смысла нет, даже у Caustic их будет несколько на разные комплектации. Именно для этого я сделал возможность перенастройки в текстовом файле. Унифицировать датчики, как выяснилось, не получится между Armada и Caustic, хотя у Caustic датчики устроены элементарно, поэтому априори совместимы с любыми другими "элементарными" датчиками с точностью до распиновки разъёма.
В общем, железо - это много проще и быстее, чем софт.