Мысли по автоматическому обновление прошивки
- Войдите на сайт для отправки комментариев
Втр, 21/08/2018 - 07:41
Привет всем! Есть мысль перепрошивать ардуино по USB через приложение андройд... Пока только мымси) Допустим, написано приложение на смартфоне, который связывается с ардуиной по UART. Смартфон отправляет и получает данные с сервера... В том числе и hex-файл последней версии прошивки устройства... так вот... каким образом прошить контроллер минуя сторонние программы для прошивки?
Надо всего лишь навсего переписать bootloader.
Надо всего лишь навсего переписать bootloader.
Не могли бы подсказать каким образом?
Нет, написание бутлодеров намного выше моей квалификации.
Не прибедняйтесь, дед :)
Привет всем! Есть мысль перепрошивать ардуино по USB через приложение андройд... Пока только мымси) Допустим, написано приложение на смартфоне, который связывается с ардуиной по UART. Смартфон отправляет и получает данные с сервера... В том числе и hex-файл последней версии прошивки устройства... так вот... каким образом прошить контроллер минуя сторонние программы для прошивки?
Прошить без программы для прошивки принципиально невозможно. Любому компьютеру для того, чтобы он что-то делал, нужна управляющая программа.
Вопрос только в том, что именно Вы подразумеваете под словом "сторонние". В зависимости от этого ответ может быть как положительным, так и отрицательным.
Надо всего лишь навсего переписать bootloader.
Ну тут возможны вариант с написанием программы на JAVA, цапанув в нее кусок от IDE.
вот вот) может кто-нибудь занимался уже этим?
Привет всем! Есть мысль перепрошивать ардуино по USB через приложение андройд... Пока только мымси) Допустим, написано приложение на смартфоне, который связывается с ардуиной по UART. Смартфон отправляет и получает данные с сервера... В том числе и hex-файл последней версии прошивки устройства... так вот... каким образом прошить контроллер минуя сторонние программы для прошивки?
Прошить без программы для прошивки принципиально невозможно. Любому компьютеру для того, чтобы он что-то делал, нужна управляющая программа.
Вопрос только в том, что именно Вы подразумеваете под словом "сторонние". В зависимости от этого ответ может быть как положительным, так и отрицательным.
имеется ввиду, чтобы перепрошивать кодом, включенным в собственное приложение, а не запускать уже готовые программы
имеется ввиду, чтобы перепрошивать кодом, включенным в собственное приложение, а не запускать уже готовые программы
Ничего не понял, терминология противоречивая. А собственное приложение - это не готовая программа? Или какая-то недоделанная?
имеется ввиду, чтобы перепрошивать кодом, включенным в собственное приложение, а не запускать уже готовые программы
Ничего не понял, терминология противоречивая. А собственное приложение - это не готовая программа? Или какая-то недоделанная?
софистика) ладно, чужие программы - так понятнее?
я занимался : писал bootloader для контроллера,он по синезубу (через юарт) общался с приложением в смартфоне которе связывалось с "облаком" .затем прошивка в виде hex качалась на смартфон и отправлялась по синезубу в bootloader контроллера который парсил hex файл и прошивал сегменты памяти.(занимало около 40 минут)
для первичной проверки процесса был самописный скрипт на пайтоне который типа как смартфон отправлял по юарту в контроллер файл hex .
НО,все это писалось далеко не для ардуино.
http://4pda.ru/forum/index.php?showtopic=599966
я занимался : писал bootloader для контроллера,он по синезубу (через юарт) общался с приложением в смартфоне которе связывалось с "облаком" .затем прошивка в виде hex качалась на смартфон и отправлялась по синезубу в bootloader контроллера который парсил hex файл и прошивал сегменты памяти.(занимало около 40 минут)
для первичной прошиверки был самописный скрипт на пайтоне который типа как смартфон отправлял по юарту в контроллер файл hex .
НО,все это писалось далеко не для ардуино.
очень интересно) а для ардуино, я думаю, было бы очень перспективно... по сути всесь алгоритм можно было бы реализовать в смартфоне... а ардуино использовать как источник входов и выходов... и при желании, сделать из этого устройства любое другое, удаленно ... даже не посвещая его обладателя))
во первых наверняка такие или похожие проэкты можно найти на просторах сети и для ардуино платформы
во вторых "не посвещая его обладателя" не получиться : bootloader это по сути отдельная прошивка ,которая находиться в отдельном сегменте памяти устройства и что бы в него попасть (обычно) нужен как минимум сброс утройства и зажатие комбинаций клавиш на устройстве / проверка флага в энергонезависимой памяти.
во третьих ,по как минимум двум причинам , bootloader не может быть частью программы которую обновляет (это можно "обойти" скопировав bootloader в RAM и сделать перепрошиву устройства - но тогда если посреди перепрошивки будет сбой , устройство станет кирпичом без физического вмешательства не потдающиеся восстановлению).
скопировав bootloader в RAM
с какой целью?
скопировав bootloader в RAM
с какой целью?
ответ жеж очевиден, чтобы перешить сам бутлоадер
исходя из мысли что код bootloader'a часть основной прошивки , для того что бы перепрошиться нужно :
1 . разблокировать flash память для записи
2. обойти ограничение : писать flash память , при этом исполнять из нее команды .
для этого можно скопировать bootloader в RAM ( я знаю что в ARM'e можно исполнять код из RAM ,даже где то видел код который это делает, но сам не писал)
В общем, я прихожу к решению, что ардуину оставить только в качестве датчиков, и для управления исполнительными механизмами, а весь алгоритм должен оставаться в смартфоне... и обновляться автоматически... ну или по желанию облодателя устройства...
я знаю что в ARM'e можно исполнять код из RAM
Дак речь за ARM или AVR?
за ARM
в AVR из RAM исполнять код нельзя. так что стоит определиться про какое ардуино речь
с ардуино-AVR варианат только один - прошивать из бутлоадера
процедура примерно такая:
- любым способом надо скачать прошивку и где то ее сохранить, это может быть например внешний eeprom или внешний flash или SD карта. главное, чтобы код скачивания прошивки мог быть компактным и поместиться в бутлоадер, размер которого на AVR довольно ограничен
- скачивает прошивку основная программа и после скачивания должна оставить какую то метку, по которой бутлоадер поймет, что "пора". например во внутреннем eeprom
- после этого основная программа сбрасывает МК что приводит к запуску бутлоадера, тот видит метку и закачивает новую прошивку
непонятно зачем в этой схеме смартфон. он совсем не обязателен. нужен любой способ доставки прошивки.
с ARM вариантов больше. там в общем то можно прошивку скачивать прямо в основной flash и после проверки перезапускаться на новую прошивку. нужно только, чтобы внутреннего флэша было в два с небольшим раза больше чем нужно для прошивки
вот только автор несколько забегает вперед. написание загрузчиков в любом виде требует довольно глубоких познаний. судя по вопросам у него дистанция весьма большая. но почему бы нет. если задаться цель все возможно. я бы рекомендовал не вопросы задавать, а идти читать документацию.
Когда мне захотелось удаленно менять прошивку я перешел на ESP. Там целых два пути. Можна писать на lun и менять скрипты как перчатки. Или OTA использовать.
Когда мне захотелось удаленно менять прошивку я перешел на ESP. Там целых два пути. Можна писать на lun и менять скрипты как перчатки. Или OTA использовать.
тоже недавно попалась в руки платка на esp32, оказалось для нее есть отличная прошивка - micropython, заливаешь новый исполняемый скрипт(написанный на python'e) хоть по UART'у хоть удаленно через вай фай модуль и меняется логика программы.
настраиваеться не спеша за пол часа.
Питон - отстой для вебдизайнеров. На контроллере ему не место. Каждому свое. Ассемблерные вставки в html не делают. И питоном МК не управляют.
Ассемблерные вставки в html не делают
WASM-у всего три года и тру-кодеры ещё не слыхали про него :(
Он к ассемблеру отношения не имеет. Тру-програмеры помнят что ассемблер платформенно зависим, а html - нет.
Питон - отстой для вебдизайнеров. На контроллере ему не место. Каждому свое. Ассемблерные вставки в html не делают. И питоном МК не управляют.
с чего так категорично? объективности ради обычный скриптовый язык, точнее даже больше, там по моему и байткод возможен как на java
с ростом мощности МК (а ESP32 это фактически мини ПК) туча задач легко переваривается интерпретаторами. Последние существенно упрощают и разработку и поддержку.
мне вот lua на esp8266 видится все таки не лучшим решением, ибо сьедает заметно ресурсы которых много, но не настолько, чтобы о них не думать
а вот в esp32 возможно уже более чем достаточно ресурсов
Он к ассемблеру отношения не имеет. Тру-програмеры помнят что ассемблер платформенно зависим, а html - нет.
Зависим, но с клиентской стороны.
Питон - отстой для вебдизайнеров. На контроллере ему не место. Каждому свое. Ассемблерные вставки в html не делают. И питоном МК не управляют.
Э-эй! Брат! Ты, ну как водиццо, в пылу полемики и пр.... ;) Питон никакого отношения к вепдисигнерам не имеет.
Обычный язык 4+ поколения. Как C#, только более используемый ;) ...если совсем честно, то примерно одинаково - мелкософт и их подпевалы будут писать, что Шарп более распространен, а все остальные, что Питон ;) ;) ;).
Но оба - не про веб дизайн, а про интерфейсные приложения. Шарп - только под винду "богомерзкую", а Питон - кросплатформенно, ( это и не совсем так, сам понимаешь, все равно куски платформозависимые большие). По использованию и назначению - "два сапога пара". Более-менее кросплатформу можно получить на PyQt.
======================
а про то, что всему этому зоопарку - не место в контроллерах, так это согласен на 100500%!
Питон - отстой для вебдизайнеров. На контроллере ему не место. Каждому свое. Ассемблерные вставки в html не делают. И питоном МК не управляют.
а про то, что всему этому зоопарку - не место в контроллерах, так это согласен на 100500%!
Вобщет именно это я и написал.
ПС. Шарпу тоже не место ;)
После того, как ложик авторитетно заявил, что тот язык лучше, код из под которого работает быстрее, значение его мнения самоумножилось на ноль.
А чё, раньше оно отлично от нуля было? Уж полтора года как Влад чётко и точно определил типаж этого персонажа - "кустарь-ремесленник при полном отсутствии систематических знаний". Я бы ещё добавил - с непомерным самомнением и начисто отсутствующей способностью признавать свои ошибки даже когда возразить уже совсем нечего..
У репозитория майкропайтона на гитхабе окло 7к звезд и двух тысяч форков. Это сильно дофига, чтобы всерьез воспринимать мнения типа этого.
Как вебдизайнеров то корежит )))) Аж 7 тысяч!
Вебдизайнеров? Они вас преследуют? Расскажите об этом.
У репозитория майкропайтона на гитхабе окло 7к звезд и двух тысяч форков. Это сильно дофига, чтобы всерьез воспринимать мнения типа этого.
да я и сам подумал, что есть полно мелких задач, в стиле термостата, автополива и прочее, где нет нужды гоняться за каждым байтом и каждым тактом....
--------------
А популярность - сам ведь понимаешь, что не критерий... по большому счету. Самая популярная ОС - как ни крути - Виндоус. "миллионы мух не могут ошибаться" ;).
Это я не к полемике, про питон я согласен.
Питон (самый рейтинговый ЯП на сегодня по версии ieee) -- это низкий порог и средство быстрого получения результата в программировании. Платы Ардуино -- это тоже самое, только в области автоматики/электроники. Синергия этих двух сущностей просто напрашивается и обещает очень заманчивые перспективы.
Питон (самый рейтинговый ЯП на сегодня по версии ieee) -- это низкий порог и средство быстрого получения результата в программировании. Платы Ардуино -- это тоже самое, только в области автоматики/электроники. Синергия этих двух сущностей просто напрашивается и обещает очень заманчивые перспективы.
не в оспаривание доводов, а чисто про этот рейтинг. как то он очень лажово звучит, когда они то начем пишут для ардуино назвали ЯП Ардуино. Это обычный С++
Питон - отстой для вебдизайнеров. На контроллере ему не место. Каждому свое. Ассемблерные вставки в html не делают. И питоном МК не управляют.
Интересно, о чем это в Samsung не знают ))) Хороше знакомый прогер, лет 5 в одном R&D мотали пока он в Samsung не свалил. Пишет на сях. Вакансий от самсунга на питон и ассемблер не припомню (ну это так чтоб не категорично звучало;). На си, джаву, слеш еще фигню какуюто были, а там в месном филиале чел 800 сидит. Может конечно какой джуниор им сайт и на питоне пописывает. Будем считать что вы о нем ;) Поскольку даже гугл знает про питон и самсунг - только чехлы на телефон из шкуры змея.
ПС. Ахат, неужель уже стали абы пиз..нуть чего?
а чисто про этот рейтинг. как то он очень лажово звучит, когда они то начем пишут для ардуино назвали ЯП Ардуино. Это обычный С++
Так все эти рейтинги - просто средства манипуляции. Не стесняются разделить сишников на столько категорий, сколько надо, лиш бы заказаный язык продвинуть повыше. Примитивно, но дебилы ведутся, даже цитируют.
Синергия этих двух сущностей ..
Синергия слепого певеца и немого спортсмена дает немого слепого, а не спортивного певца. a5021 как всегда болван.
С "обычностью" там не все гладко. Даже не рассматривая сейчас, что для разных плат там могут использоваться разные компиляторы, на одном только AVR-G++ можно показать, "что обычный C++" там обычен не совсем: "However, there's currently no support for libstdc++, the standard support library needed for a complete C++ implementation. This imposes a number of restrictions on the C++ programs that can be compiled." С этой точки зрения ардуина будет некоторым подмножеством C++, но никак не "обычнм С++".
Следующий момент -- без специфического препроцессинга ардуиновские исходники не собрать даже арудиновским же GNU C/C++ компилятором. При этом я не случайно упоминаю здесь C/C++, т.к. для сборки ардуиновских проектов обычно используются оба сразу. Если включить вывод подробных сообщений в процессе сборки, то в нижнем окне Arduino IDE можно видеть, как GNU-шные компиляторы C и C++ запускаются попеременно для компиляции разных модулей и библиотек проекта. Если в проекте есть модули на ассемблере, то будет еще и компиляция с ассемблера. Как полагаете, AVR-овский ассемблер является органической частью "обычного C++"? Вот и я как-то на сей счет не особо уверен.
В итоге получается, что для ардуино-проекта характерен микс из исходников C и C++ (подмножетсва), плюс расширения и надстройки. И как-то лажово звучит, когда кто-то пытается представить это "обычным С++", не находите?
С "обычностью" там не все гладко. Даже не рассматривая сейчас, что для разных плат там могут использоваться разные компиляторы, на одном только AVR-G++ можно показать, "что обычный C++" там обычен не совсем: "However, there's currently no support for libstdc++, the standard support library needed for a complete C++ implementation. This imposes a number of restrictions on the C++ programs that can be compiled." С этой точки зрения ардуина будет некоторым подмножеством C++, но никак не "обычнм С++".
Следующий момент -- без специфического препроцессинга ардуиновские исходники не собрать даже арудиновским же GNU C/C++ компилятором. При этом я не случайно упоминаю здесь C/C++, т.к. для сборки ардуиновских проектов обычно используются оба сразу. Если включить вывод подробных сообщений в процессе сборки, то в нижнем окне Arduino IDE можно видеть, как GNU-шные компиляторы C и C++ запускаются попеременно для компиляции разных модулей и библиотек проекта. Если в проекте есть модули на ассемблере, то будет еще и компиляция с ассемблера. Как полагаете, AVR-овский ассемблер является органической частью "обычного C++"? Вот и я как-то на сей счет не особо уверен.
В итоге получается, что для ардуино-проекта характерен микс из исходников C и C++ (подмножетсва), плюс расширения и надстройки. И как-то лажово звучит, когда кто-то пытается представить это "обычным С++", не находите?
Не расказуйте ему про GCC и make! еще хоч поржать с наблюдений "в нижнем окне Arduino IDE". Такой забавный даун. Интересно, а если я в GCC таки собиру текст блинка из примеров ардуино, ну например под винду, этот тип через свое очко вывернется доказывая что это всеравно не С++?
a5021 смотрите в корень. Как писал классик
я конечно про ардуино на атмега. Там toolchain avr-gcc. Самый себе стандартный Си/Си++ компилятор и как любой embedded компилятор имеет некоторые ограничения в подлержке элеметов стандарта. Все это не имеет отношения к ардуине никакого, все это относится к toolchain
К ардуино относится только особенность использования прекомпилятора. Язык С++ при этом никуда не девается
Ложик, мне определенно доставляет удовольствие наблюдать, как вас корежит. Интересно, когда вы мне отвечаете, у вас идет пена изо рта?
Это два разных компилятора, двух разных языков. Причем, C++ там такой офигенно-стандартный, что в нем даже нет операторв new и delete. Проекты ардуины так же написаны на смеси этих двух языков. В рейтинге C и С++ разделены. Куда и на каком основании будете плюсовать ардуину? К C++ ? Это при том, что весь вайринг почти целиком написан на Си-просто?
Сами придумали? Препроцессором тулчейна исходники ардуины не довести до пригодного для компиляции вида. Не умеет оно такого.
И Си никуда не девается. С этим, что собираетесь делать?
Плюс ардуиновские надстройки над AVR-GCC никуда не деваются. И вайринг. Стоит убрать любое и ваш исходник будеть годиться только на то, чтобы распечать и перед сном читать. Ну или ложику отдать, чтобы он усрался, но таки собрал исходники для винды.
Именно потому, что в Ардуино используется синтаксис Си и С++, тулчейн AVR-GCC, плюс всякие примочки , типа, ардуино-билдер и т.п., а осмысленный результат получается только при использовании всего вместе, ардуину вынесли отдельным пунктом, чтобы не городить огород с тысячей оговорок, как и почему это должно считтаться "просто Си" или "просто С++".
А вообще, конечно, напишите в IEEE. Думаю ваш авторитет заставит их немедленно изменить свое мнение по любому вопросу.
Интересно, о чем это в Samsung не знают ))) Хороше знакомый прогер, лет 5 в одном R&D мотали пока он в Samsung не свалил. Пишет на сях. Вакансий от самсунга на питон и ассемблер не припомню (ну это так чтоб не категорично звучало;). На си, джаву, слеш еще фигню какуюто были, а там в месном филиале чел 800 сидит. Может конечно какой джуниор им сайт и на питоне пописывает. Будем считать что вы о нем ;) Поскольку даже гугл знает про питон и самсунг - только чехлы на телефон из шкуры змея.
ПС. Ахат, неужель уже стали абы пиз..нуть чего?
На фейсбуке общался с тремя представителями embeded в т.ч. работающих и на Samsung .. настаивать не буду, но все трое практически в один голос жаловались именно в этом ключе: "Да, работаем с Samsung и даже на STM32, и да на питоне. Потому что питонца я найму за 60-90к, а Вы знаете сколько даже не шибко сильный сионист стоит? От 130к., а про профи - так ваще молчу"
Это скопипастил с месенджера фейсбука, ежели вчё.
P.S. Ну и в целом. Жаль Вы не читали (снисли таки в ноль) темку на амперке за применение JS на Искрах .. там и любители LUA отметились нефигово.. есть некоторые БАЗОВЫЕ понятия, инструменты, коих совсем не много и есть много гумна намазанного сверху. Так вот сейчас "программист" - это вовсе не тот кто знает базу и способен сваять нечто самостоятельно. Теперича этот тот, кото быстрее других возьмет ЗАДАННЫЙ верхний уровень и помажет на нем решение задачи ПОВЕРХ. То есть .. пользователь чужого гумна.
Самое пичальное в этом, что такому пользователю вовсе не требуется (и даже часто вредно!) знать что лежит на 1-2 слоя ниже того, чем он пользуется. Низкий порог вхождения означает совсем не то, что под ним интуитивно понимают, а именно он означает: запрет изучать базовые понятия. И ничего больше. Тебе дали "простой" интсрумент - пользуйся так и вот так. Остальное тебя НЕ КАСАЕТСЯ.
P.P.S. В частносит из той темки, следует что начало на JS - это меньший порог вхождения чем на С++, несмотря на то что С++ ПРОЩЕ JS .. вот так-то. Причина? А просто всё: на JS всё чему Вас учат - это "возьми готовую библиотеку и прикрути к своему проекты так и вот так" - позволяет избежать изучения сложностей языка в силу его большей гибкости, ибо "интерпретатор".
Только таким методом нельзя написать НИЧЕГО отличного от использования готового, исключительно готовым способом.
Это не "низкий порог вхождения". Это дибилизм и деградация.
Это не "низкий порог вхождения". Это дибилизм и деградация.
Да норм всё, обычное жизненное явление - переход из сферы творчества в сферу ремесленничества, конъюнктура требует, nobody cares.
Неужели кто-то не видел фильма "Человек с бульвара Капуцинов"? За мистером Фёрстом всегда приходит мистер Секонд. Это может кому-то нравится, или не нравится, но жизнь устроена именно так ("жизнь такова, какова она есть, и больше никакова")