Есть плата на базе малоизвестного тайваньского МК с ядром ARM Cortex M0. Какие шансы дампнуть бинарник прошивки?
А также реверс-инжинирнуть ее.
Опыт реверс-инжиниринга есть.
Умение гуглить, находить утилиты, пробовать их, при необходимости лазать по ассемблеру.
Проект на Java или C# могу полностью декомпилировать до исходника.
Даташит на МК вроде как есть.
Плата производится серийно, используется в дешевых квадрокоптерах, ни для чего "такого" не предназначена.
Нужно будет с прошивкой разобраться таким образом, чтобы научить ее "общаться" с другим контроллером, который полностью заменит пульт р/у.
Но сперва просто дампнуть бинарник прошивки и иметь возможность загрузить его заново и чтобы работало.
Могут быть проблемы в плане того, что не получится дампнуть, или не будет работать после перезалива КОРРЕКТНОЙ прошивки, но с изменениями (или даже без единого изменения)?
зачем расписывать простыню вопроса если есть модель контроллера? в даташитах английским (корейским?) по белому всегда описываются процедуры программирования/работы с памятью, в т.ч. и опции защиты от чтения.
- Java это именно то, на чём пишется полётный софт квадрокоптеров. по популярности идёт сразу после php и Лиспа.
- многие "дешёвые серийные" коптеры выпускают с мозгами вообще в виде капли (бескорпусной контроллер) либо вообще кастомных микросхем. если заморачиваются над таким то уж галочку лока прошивки явно не забудут. какой тут реверс может быть?
- не слишком владею актуальной информацией, но по сети всё ещё ходят исходники на асме с комментариями на немецком для контроллера rc-движков и являются основой для кучи модов. это заставляет задуматься о лёгкости ковыряния этого софта.
- сам вопрос туп, либо неверна изначальная задача. дешевле сделать что-то на стандартных комплектующих либо просто купить новую игрушку. переделка будет рентабельна только если китайцы тоже передрали софт и есть доступ к первоисточнику.
зачем расписывать простыню вопроса если есть модель контроллера? в даташитах английским (корейским?) по белому всегда описываются процедуры программирования/работы с памятью
Нет там этого. Продается SDK, но кроме discovery-платы я там визуально ничего не вижу. Даже не знаю, стоит ли покупать такой "SDK". Связываться по всем вопросам с техподдержкой - тоже совсем не приятное дело. У крупных фирм это по принципу "разберись сам, уйди в отпуск на 3 месяца, как вернешься - сверишь с нашим ответом".
- Java это именно то, на чём пишется полётный софт квадрокоптеров
Насколько знаю, ARM программируется на Си, ну и асме. Теоретически могла быть программная прослойка джавы, но софт квадрокоптеров какой видел - там не было. Да и на 16 КБ ПЗУ не очень-то...
Короче, ARM Cortex-M0. Под него (под чипы на его основе) вообще бывает Java?
- многие "дешёвые серийные" коптеры выпускают с мозгами вообще в виде капли (бескорпусной контроллер) либо вообще кастомных микросхем
Оффтопик.
- сам вопрос туп, либо неверна изначальная задача. дешевле сделать что-то на стандартных комплектующих
Для кого-то дешевле, а для меня нет. В электронике значительно меньше опыта. Плату ни разу не разрабатывал, к примеру. А кучу готовых плат модулей не очень хочется ставить в квадрокоптер, у которого грузоподъемность что-то вроде 1 повербанка (при 2 повербанках уже не взлетает вообще).
либо просто купить новую игрушку.
То, что я хочу из него хочу сделать, наверно вообще до сих пор нигде не существует.
VrencchBug, в любом случае более правильно задача будет выглядеть как "имитация пульта" либо вклинивание в канал передачи. без обид, но модификация неизвестной прошивки неизвестного контроллера - это удел фанатиков, для которых железки это и работа и хобби. просто набыдлокодить и "отреверсить" тут получится только при везении и стечении обстоятельств либо при явном наличии исходников в удобоваримом виде.
ещё один важный момент - любая кастомная вещь, которая "нигде не существует" - никак не может быть слеплена на базе дешёвого хлама и с настолько неопределённым подходом. для электроники есть грубое оценочное правило, что проектирование немного изменённой серийной платы (с нуля, не считая доработок исходников) будет стоить х*10 цены исходника. без физического изготовления и отладки.
в случае квадрокоптера лучше взять минимальную раму, под которую можно купить "модульные" комплектующие и навесить\интегрировать кастомную электронику сверху, не врезаясь в полётные мозги и контроллеры двигателей.
в любом случае более правильно задача будет выглядеть как "имитация пульта" либо вклинивание в канал передачи.
Да я это тоже рассматриваю, но что ж тут более правильного-то? Это как раз костыль. Пульты эти очень убоги, в т.ч. в плане безопасности. Этот канал вообще бы "оборвать", хотя бы для того, чтобы какой-нибудь гад не "вклинился" так же (и не столько угнал БПЛА, сколько грохнул его).
модификация неизвестной прошивки неизвестного контроллера - это удел фанатиков, для которых железки это и работа и хобби
Для меня это так. Я говорил, что мало опыта, но развитие тормозится тем, что нет соответствующих заказов (в НПО Лавочкина меня точно не возьмут, и я не пойду), а своих денег мало. Из чего никак не следует, что оно мне не хочется и не нравится.
Модифицируют и приложения весом мегабайты, скомпилированные MSVC (это важно).
А тут 4KB/8KB/16KB flash memory for program memory (APROM).
В 16.000 байт как-нибудь не заблудимся. А если точнее, переберем по косточкам. Ну, это я так рассчитываю. Не могу себе представить такой маленький объем данных, в которых невозможно разобраться мне, но ядру ARM - можно.
ещё один важный момент - любая кастомная вещь, которая "нигде не существует" - никак не может быть слеплена на базе дешёвого хлама
Думаю, что можно привести достаточно контрпримеров, но думаю, что для этого придется съездить в Ниппон. И ни в коем случае не ездить в Дойчланд.
в случае квадрокоптера лучше взять минимальную раму, под которую можно купить "модульные" комплектующие и навесить\интегрировать кастомную электронику сверху,
Модули слишком ограничены и атипичны. У меня будут и такие квадрокоптеры, где будет стоять Windows не Embedded, не говоря уже о любых "десктопно-мобильно-серверных" линуксах. Писал DLL под винду на C#, понадобилось ее применить в БПЛА - раз - готово.