Easyelectronics.ru

Электроника для всех
Текущее время: 29 сен 2020, 02:53

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 93 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 13:07 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5358
Hold писал(а):
В процессе приема мы грузим прошивку в нерабочую область флеша, с помощью функции, которая висит в RAM, потом проверяем контрольные суммы, и только после этого переписываем родную прошивку. Если прошивка придет битая - можем еще раз её запросить.

под двойным расходом флэш подразумевалось, что основная прошивка должна быть не более 8к, а 8к надо держать свободными как буфер?
аа я тогда это не уловил с первого прочтения


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 13:46 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3459
http://dunkels.com/adam/ubasic/ или http://www.stroustrup.com/dc.c вполне можно допилить до нужного состояния очень простеньекого интерпретатора с минимальным потреблением памяти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 13:49 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6095
Откуда: Москва
С бутлоадерами OTA все гораздо проще, чем вам кажется.

Делается обычный "построчный" бутлоадер, с принудительным выходом в него из приложения. Естественно, бутлоадер должен поддерживать коммуникационные интерфейсы, как правило это тот же интерфейс, который обычно используется для взаимодействия с устройством. Бутлоадер работает вместе с ответной частью на хосте. Прошивка принимается "построчно", то есть небольшими блоками, проверяется целостность блоков, после чего они пишутся в постоянную память. По окончании процесса все проверяется целиком, и перезапускается в режиме приложения.

Если что-то произойдет в процессе загрузки, она просто повторяется, потому что с бутлоадером при этом ничего не происходит. Восстанавливаете канал, и прошиваете заново.

Если нужна еще большая надежность - бутлоадер делается на пару приложений. То есть за раз шьется только одно, второе гарантированно работоспособно. Аналог Dual BIOS в некоторых материнских платах. Чаще всего это излишне, особенно "на этапе отладки". Впрочем, вполне возможно, тем более что ТС явно готов пожертвовать ресурсами МК. Можно даже сделать так, что работа основного алгоритма в процессе прошивки не прервется.

У меня таким образом работают реально большие и сложные системы, эта часть не создает никаких проблем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 13:58 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
Ну, ну - вызов бутлоадера из приложения!
Неудачно прошились - не запустится приложение, прощай бутлоадер...

Бутлодер должен всегда запускаться первым!
При запуске проверяем некое условие и принимаем решение - запускать приложение или перепрошивать.


Последний раз редактировалось Pingvin 31 мар 2016, 14:01, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 14:00 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
akatenev писал(а):
С бутлоадерами OTA все гораздо проще, чем вам кажется.


не спорю. Я умею бутлоадеры. Вариант рассматривался. Не нравятся две вещи:
1. на время обновления прошивки процесс нужно останавливать, выходы переводить в безопасное состояние
2. чтобы собрать прошивку, на компе надо иметь тулчейн. Кроссплатформенность, бла-бла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 14:02 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
Тоже озадачивался выполнение скриптов либо байт-кодов.
Тема интересная.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 14:02 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
Pingvin писал(а):
Ну, ну - вызов бутлоадера из приложения!
Неудачно прошились - не запустится приложение, прощай бутлоадер...


имеется в виду, что бутлоадер запускается при старте процессора, проверяет и запускает аппликуху. А вот в работающей аппликухе есть команда выхода в бутлоадер.
Если аппликуха поломана, то она не запустится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 14:03 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
Steel.ne писал(а):
Pingvin писал(а):
Ну, ну - вызов бутлоадера из приложения!
Неудачно прошились - не запустится приложение, прощай бутлоадер...


имеется в виду, что бутлоадер запускается при старте процессора, проверяет и запускает аппликуху. А вот в работающей аппликухе есть команда выхода в бутлоадер.
Если аппликуха поломана, то она не запустится.

Не надежно, ИМХО - зависло приложение - и усё!
Не... пусть будет такой вариант, но полагаться на него на 100% нельзя.


Последний раз редактировалось Pingvin 31 мар 2016, 14:07, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 14:06 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5358
akatenev писал(а):
С бутлоадерами OTA все гораздо проще, чем вам кажется.

а если все таки аккуратно складывать полную прошивку в буфер, там проверять и только после этого затирать приложение?
при этом складывать в буфер может само приложение используя более высокий уровень протокола, чем можно сделать на бутлоадере
даже если тот же физический интерфейс, хотя можно использовать и другой, более сложный (ethernet например)
и только после этого передавать управление бутлоадеру который буфер зашьем вместо приложения и запустит его

конечно это как писал выше Hold - двойной расход флэш. Но затраты не существенные, или МК с двойным запасом или внешний флэш


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 14:08 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
Давайте не будем уводить в сторону - бутлоадеры я бы тоже обсудил с удовольствием, но тема другая.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 14:10 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
Я склоняюсь к байт-коду.
То есть пишем некий "компилятор" который с "человеческого" языка формирует набор кодов.
А в прошивке работает switch/case - машина.


Последний раз редактировалось Pingvin 31 мар 2016, 14:12, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 14:10 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5358
Steel.ne писал(а):
2. чтобы собрать прошивку, на компе надо иметь тулчейн. Кроссплатформенность, бла-бла.

мое предположение оправдалось)

зависит от емкости проекта. Для чего то значимого можно сделать свой компилятор из инструкций пользователя (смысловых, текстовых или графических) в машинный код МК
это по факту будет не компиляция а сборка (по сути линковщик) готовых бинарных процедур с данными и упаковка их в работающий код
не думаю, что это будет сильно сложнее чем делать свой байт код и к нему интерпретатор
минусом будет только непереносимость между разными МК


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 14:31 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
Ну парсить простые команды несложно.
Ресурсов даже у этого камня - хватит.
В том числе - с передаваемыми аргументами.

А вот как сделать условные/безусловные переходы (не линейное исполнение скрипта) или вызывать для выполнения другой скрипт - тут уже интересней.

С переменными опять же - как быть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 15:44 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Использовать принцип программирования как в калькуляторах, типа МК-34/54. Там и ветвления и переменные и кодом ничего нельзя испортить. И реализуется просто. Только добавить команды специфичные работе устройства, вроде считать температуру, включить лампочку.

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 15:48 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5358
PRC писал(а):
Использовать принцип программирования как в калькуляторах, типа МК-34/54. Там и ветвления и переменные и кодом ничего нельзя испортить. И реализуется просто. Только добавить команды специфичные работе устройства, вроде считать температуру, включить лампочку.


Кстати да, а для переменных использовать регистры общего назначения как X, Y в калькуляторах и стек LIFO


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 16:04 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6095
Откуда: Москва
Pingvin писал(а):
Не надежно, ИМХО - зависло приложение - и усё!
Не... пусть будет такой вариант, но полагаться на него на 100% нельзя.

Зависшее приложение спокойно выходит по вотчдогу в тот же бутлоадер, если перезагрузка несколько раз не помогла. Это вообще не проблема.

Steel.ne писал(а):
1. на время обновления прошивки процесс нужно останавливать, выходы переводить в безопасное состояние
2. чтобы собрать прошивку, на компе надо иметь тулчейн. Кроссплатформенность, бла-бла.


1.В большинстве случаев можно организовать так, что в прошивке два независимых приложение, каждое из которых может обновлять другое. Работа при этом не прерывается. Кстати говоря со скриптами у вас будет ровно та же проблема, тут скрипты ничего не решают сами по себе. На STM32 это сделать можно.
2. Вот, именно это больше всего и похоже на решаемую скриптами задачу. Собственно, в основном для того и делаются скрипты. Если вы уверены, что это настолько важно, то других вариантов по сути нет. Все остальное лучше решать другими средствами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 16:19 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6095
Откуда: Москва
Да. Но у ТС есть одна классическая ошибка - он сначала выбрал платформу, а потом уже начал определяться с другими инструментами. Если бы сделал наоборот, вообще проблем не было бы, он бы спокойно выбрал тот или иной скриптовый язык (если уж не может без него обойтись по условиям задачи), а потом подобрал бы под него соответствующую платформу. Благо что они есть и под Lua, и даже под Python.

Lua вполне годится для построения несложных контроллеров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 16:39 
Заглядывает иногда

Зарегистрирован: 15 окт 2015, 21:27
Сообщения: 136
Цитата:
имеется в виду, что бутлоадер запускается при старте процессора, проверяет и запускает аппликуху. А вот в работающей аппликухе есть команда выхода в бутлоадер.
Если аппликуха поломана, то она не запустится.

А в чем сложность прикрутить внешнюю влеш на SPI, грузить с программы во влеш прошивку, проверять ее (при чем на лету) а при следующем перегрузе загружаться с флешки нужна надежность? две влешки=)) одна состарой версией другая с новой... и память не жрет МК и надежность типа есть


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 17:16 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2012, 17:24
Сообщения: 525
Oставлю это здесь :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 18:22 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
akatenev писал(а):
Pingvin писал(а):
Не надежно, ИМХО - зависло приложение - и усё!
Не... пусть будет такой вариант, но полагаться на него на 100% нельзя.

Зависшее приложение спокойно выходит по вотчдогу в тот же бутлоадер, если перезагрузка несколько раз не помогла. Это вообще не проблема.


В принципе - да, как то я про сторожевую собачку забыл.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 18:24 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
PRC писал(а):
Использовать принцип программирования как в калькуляторах, типа МК-34/54. Там и ветвления и переменные и кодом ничего нельзя испортить. И реализуется просто. Только добавить команды специфичные работе устройства, вроде считать температуру, включить лампочку.

Стек - не очень удобно, это надо следить при написании кода, где там в данный момент твоя переменная, на каком уровне?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 18:37 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
Pingvin писал(а):
PRC писал(а):
Использовать принцип программирования как в калькуляторах, типа МК-34/54. Там и ветвления и переменные и кодом ничего нельзя испортить. И реализуется просто. Только добавить команды специфичные работе устройства, вроде считать температуру, включить лампочку.

Стек - не очень удобно, это надо следить при написании кода, где там в данный момент твоя переменная, на каком уровне?


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 18:41 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
Pawn

Pawn - это Си-подобный скриптовый язык
Вы можете подключать файлы (include) в Pawn, так что вы сможете организовать аккуратную структуру кода.
Pawn - это скриптовый язык с компилятором, который выполняет статические проверки и с абстрактной машиной, которая (статически) выполняет верификацию P-кода и динамическую проверку.
С целью портирования, Pawn был написан на ANSI C
Pawn поддерживает Unicode/UCS-4 и UTF-8, а также кодовые страницы. Компилятор может преобразовать введённый исходный код в особую кодовую страницу Unicode; он также поддерживает файлы исходного кода в кодировке UTF-8.
Он был установлен на микроконтроллеры Atmel ATmega128, Philips LPC2138 и LPC2106 (ядро ARM7TDMI с 32 КБ ОЗУ), а также на Texas Instruments MSP430F1611 (ядро MSP430 с 10 КБ оперативной памяти и 48 КБ Flash ROM), так как позволяет запускать большие скрипты с небольшим объемом памяти.
Документирование исходного кода может быть сделано с помощью "комментариев документации;", компилятор Pawn извлекает эти комментарии, объединяет их с информацией из исходного кода и записывает XML-файл, который можно просмотреть (и распечатать) с помощью веб-браузера.
Pawn поддерживает состояния и автоматоны, включая переменные локальных состояний.


https://ru.wikipedia.org/wiki/Pawn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 19:09 
Заглядывает иногда

Зарегистрирован: 28 апр 2010, 00:17
Сообщения: 124
Откуда: picping.lg.ua
Я вместо скриптов интерпритатор бейсика накатил, с web сервером. Все можно удаленно делать по сети. Но это PIC18.
http://picping.lg.ua/eth_pic_basic/index.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скриптовый язык для МК
СообщениеДобавлено: 31 мар 2016, 19:12 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
MrYuran писал(а):
Oставлю это здесь :)

не, форт у меня уже есть )


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 93 ]  На страницу Пред.  1, 2, 3, 4  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB