Вопрос по Embedded
Всем привет! Занимаюсь программированием в области Embedded, даже не знаю у кого можно спросить. В общем я хотел-бы потренироваться в разработке ПО для автомобилей, и то потому-что постоянно слышу в Германии слово Automotive. Есть одна фирма которая выпускает SDK для автомобилей - QNX Car Platform. Прикол в том, что можно сделать кастомный UI на HTML5, CSS3 и JavaScript бортового компьютера. Почитав бегло я понял, что там есть ограничения в целях безопасности, допустим можно только через API обращаться к радио, к аудио плееру, к кондиционеру, и к навигатору, там нет таких команд чтобы допустим завести машину. Нашёл старую версию QNX и то это демо версия, она запускается на виртуалки, там очень ограниченые возможности, из-за того что это демка. Искал SDK на тесла, но в целях безопасности они не разрешают стороннии App, все их API закрыты, это тайна, хотя я нашёл неофициальные API, там всё это через HTTP и GET. Если погуглить есть в w3c "Vehicle Information API Specification", там больше возможностей, допустим можно двери открывать и закрывать. Как можно заполучить этот SDK бесплатно? Когда пытаюсь скачать SDK, они просят меня чтобы я сначало у них зарегестрировался, а прежде чем зарегаться они просят телефон, и адрес. Вот 20 лет занимаюсь программированием, столько скачивал SDK, но ни разу ещё за это время меня не просили регистрироваться. Может кто-нибудь из вас разрабатывал что-нибудь под автомобили? Или может кто посоветует какой-нибудь Embedded Vehicle SDK чтобы без всякой регистрации. Всем заранее спасибо!
В общем я хотел-бы потренироваться в разработке ПО для автомобилей, и то потому-что постоянно слышу в Германии слово Automotive.
Разработка ПО для автомобилей - это оооооочень обширная область. Да и не самая простая.
Почитав бегло я понял, что там есть ограничения в целях безопасности, допустим можно только через API обращаться к радио, к аудио плееру, к кондиционеру, и к навигатору, там нет таких команд чтобы допустим завести машину.
Ну так эта платформа Infortaiment, с Klemme 15 (зажигание) ничего общего. С Infortaiment у меня опыта нет, но, как мне видится, это более высокоуровневое программирование. В автомобиле же полно всяких низкоуровневых примочек, тесно связанных с электроникой и железом. Есть такое понятие как функциональная безопасность, каждому функционалу присваивается своя ступень, которая накладывает определенные методики для программирования и тестирования.
Мы на проекте ничего из пользовательского интерфейса не делаем, это где-то на стороне делается и какими средствами, я не знаю. А мы делаем частично генерированный на основе Матлаб моделей С-код, частично мануальный С-код и преимущественно мануальный СРР-код.
Понятно, спасибо за ответ. Кстати интерес к Embedded появился не только из-за того что постоянно слышу про Automotive, а ещё после покупки одноплатника от nvidia, т.к. nvidia пытается заинтерисовать крупных производителей автомобилей использовать их платы в автомобилях, то возможно в скором будущем многие производители автомобилей перейдут на их архитектуру. Там можно писать программы (для одноплатника) на Python, Java, Си/Си++ и Ada (в интернете глянул есть бесплатная версия - GNAT Community Edition, сам пользуюсь GNAT 2020CE), там доступные фреймворки (для одноплатника) - PyCuda, PyTorch, TensorFlow, OpenCV/PyOpenCV, и всё это называется Jetpack SDK, в дорогих вариантах как я понял есть что-то на много покруче, и чтобы у дешёвого одноплатника нормальное "зрение" было, нужно ещё RealSense брать.
На счёт Automotive, короче всё-таки мне для
бортового компьютер прийдётся на Python и ElectronJS пилить, для Infortaiment - на ElectronJS, а взаимодействия с релешками на Python, а вместо серьёзной ОС и серьёзной платы прийдётся брать игрушечные Raspberry Pi и Arduino. Я слышал про Android Auto/Car, но что-то не хочется с ним мается, у меня Android Studio медленно грузится, постоянно Gradle стартует, и если Android Auto/Car использовать, то лучше прикладные App пилить на Ionic.
Ещё последний вопрос по Embedded, можно ли заказать на физическое лицо плату от toradex чтобы учиться программировать? Просто там серьёзные платы, т.е. там хорошие предложения есть, допустим на выбор даётся различная ОС: QNX, Integrity, Windows Embedded, и Android, а SDK - MS eMbedded Visual C++ 4.0, Qt, бд - Ittia DB SQL (Embedded Database), просто мне нужно чтобы плата помехоустойчевая была (мне нужно электромагнитные частоты генерировать). Это надо, т.к. у меня есть много интересных проектов-экспериментов, это так скажем моё хобби...
То что вас интересует можно и без одноплатников изучать. Фактически речь о программировании GPU. Берет видеокарту от нвидии помощнее/поновее (чтобы свежую CUDA поддерживала), накатываете skimage/pycoda/pytorch/numba и тд и изучаете особенности такого подхода. Принципы все те же самые, что и на одноплатнике от нвидии (сомневаюсь что основное cpu там на арме, тот же x86-64 скорей всего).
Низкоуровневой доступ к железу - тут да, более специфично, но программирование GPIO (как минимум в линуксе) чаще всего сводится к дерганию определенных файлов внутри /sys - то есть в принципе это можно хоть из баша делать. При наличии ядерных драйверов одноплатники в этом плане мало чем друг от друга отличаются, и на той же распберри пи посмотреть все это как действует гораздо проще. Написание
же ядерного драйвера это отдельная история, которая вас вряд ли интересует. На распберри свет клином не сошелся, есть множество других плат приличных одноплатников, но вероятны проблемы с поддержкой (например, какая-то периферия поддерживается строго какими-то ядрами/дистрибутивами/осями). Вот возьмете вы что-то, что поддерживается только в андроиде, и куда там pycuda?
В общем, не забегайте вперед со специфичными одноплатниками/фреймворками. Касательно каких-то специфичных плат - посмотрите mouser, farnell, rs-components и тд. Не все и не всегда они продают частникам, но уверен что при желании можно найти. И на вашем месте я бы не стал напирать на qnx, а скорее на "несерьезный" (на ваш взгляд) линукс. Я думаю что тот же software defined radio (раз уж вас это интересует, радар небось гигагерцовый)
вы гораздо быстрее поднимете на распберри/линукс/питон, чем на специфичной development board / qnx или андроид.
Так я же одноплатник от nvidia уже купил, ещё в начале этого года, недавно я его в супермаркетах видел. Одноплатник нужен для дрона. Raspberry Pi для бортового компьютера т.е. Infotainment (я думал что я найду бесплатный SDK), а QNX Car Platform нужна была только чтобы оттачивать знания по HTML5, думал что этот фреймворк повысет мою мотивацию. А платы от Toradex нужны для жёстких экспериментов.
Разработка ПО для автомобилей - это оооооочень обширная область. Да и не самая простая.
Истинно так.
Ну так эта платформа Infortaiment, с Klemme 15 (зажигание) ничего общего. С Infortaiment у меня опыта нет, но, как мне видится, это более высокоуровневое программирование. В автомобиле же полно всяких низкоуровневых примочек, тесно связанных с электроникой и железом. Есть такое понятие как функциональная безопасность, каждому функционалу присваивается своя ступень, которая накладывает определенные методики для программирования и тестирования.
Зачастую высокопроизводительные ECU работают на том же Линуксе. Но стоит только подойти поближе к железу и/или ISO26262, то в дело очень часто вступает AUTOSAR. Никаких С++, если речь о classic AUTOSAR. К слову, бóльшая часть ECU в машинах - не на Линуксе, а на разных RTOS.
а на разных RTOS
Да это я знаю - Integrity OS, QNX или VxWorks
AUTOSAR
А где это заполучить/скачать можно?
Мне нужен SDK + симулятор/эмулятор.
Integrity OS, QNX или VxWorks
Не совсем. Vector MICROSAR, Elektrobit tresos, Free RTOS, это лидеры из автоиндустрии.
Насчёт sdk - тут все сложно и дорого, но можно попытаться найти какие-нибудь бесплатные или пробные программы. Также можно найти документацию на autosar.org
Free RTOS
Серьёзно? Это игрушечная операционная система, я её уже несколько раз скачивал.
Также можно найти документацию на autosar.org
Спасибо большое, гляну
Если честно я уже запутался... Раньше в машину пихали Windows CE, как понимаю она никакое отношение не имеет к зажиганию, и управлению машины правильно?
Сейчас пихают QNX, как понимаю к зажиганию это никакое отношение не имеет? Во всяком случае в SDK пишишь на HTML5
NVidia собирается пихать кастомную Ubuntu, как понимаю бортовой компьютер от Nvidia управляет полностью машиной, я правильно понимаю?
Мне вот это нужно, есть одноплатник Jetson Nano, у него есть USB разьёмы, на одноплатнике установлен Jetpack 4.x, одноплатник соберает информацию из USB, и отображает на дисплее: скорость, передачу, время, дату, возможно температуру. Jetpack это якобы RTOS на базе Ubuntu. Одноплатник Jetson Nano стоял где-то в районе 99 евро, это бюджетная плата, до этого выпустили Xavier и TX.
Я видел машины у которых приметивный HMI, допустим выбераешь режим спотривный.
НП.
Короче нашёл только что спомощью QGen можно импортировать из MatLab, но QGen насколько я понял генерирует код только в Ada:
Только что скачал вот это CARLA Simulator - https://carla.org/ что это?