|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
скриптовый язык для МК29.03.2016, 22:41. Показов 26466. Ответов 92
Метки нет (Все метки)
Возникла потребность скриптовать простые действия - термометр, таймер, пара входов, пара выходов. Наподобие - включили подогрев - разогрели - подождали - остудили. Естественно с кучей проверок на недопустимые ситуации - если греем, а температура падает - алярма. И т.д.
Базовый МК - stm32f030, памяти 4к, флеша 16к Вот хочу какой-то компактный байткод. Или машину состояний. Загрузка через UART Сейчас впихнул форт, вроде завелся. Но терзают смутные сомнения, что есть еще варианты.
0
|
|
| 29.03.2016, 22:41 | |
|
Ответы с готовыми решениями:
92
Посоветуйте скриптовый язык для всякой повседневной мелочи
|
|
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
|
|
| 30.03.2016, 11:23 | |
|
И это еще совершенно не означает, что оно для чего-то тут нужно. Во всяком случае задача не выглядит требующей DSL.
0
|
|
|
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
|
|
| 30.03.2016, 11:30 | |
|
А грузить исполняемый участок кода в ROM никак нельзя, по тому же UART? Или скрипт объемом поменьше будет? Все операции никак не залезут во FLASH, чтобы потом только кидать команду типа - сделай подогрев с такими-то параметрами? Можно даже перезапись контроллера сделать по UART, не используя штатный бутлоадер. Функция, которая будет перезаписывать флеш переносится в ROM. По UART принимаем новую прошивку, которую функция складывает в свободный флеш. Затем перетирает новой прошивкой старую прошивку, и ресетит контроллер. Разве что расход флеша увеличится вдвое, но такое вполне работает, причем новую прошивку можно получать по любому каналу данных, от UART до Ethernet.
0
|
|
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
|
||
| 30.03.2016, 12:07 | ||
и усе, гарантийный случай с ремонтом у производителя а вот идея грузить бинарный машинный код в рам с тем, чтобы гарантированно не попортить флэш - по моему вполне вариант но опять же, если речь идет о независимости от средств компиляции (предполагаю, что это одна из задач ТС) то не вариант
0
|
||
|
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
|
|
| 30.03.2016, 12:17 | |
|
В процессе приема мы грузим прошивку в нерабочую область флеша, с помощью функции, которая висит в ROM, потом проверяем контрольные суммы, и только после этого переписываем родную прошивку. Если прошивка придет битая - можем еще раз её запросить.
0
|
|
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
|
||
| 30.03.2016, 12:20 | ||
аа я тогда это не уловил с первого прочтения
0
|
||
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
| 30.03.2016, 12:59 | |
|
http://dunkels.com/adam/ubasic/ или http://www.stroustrup.com/dc.c вполне можно допилить до нужного состояния очень простеньекого интерпретатора с минимальным потреблением памяти.
0
|
|
|
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
|
|
| 30.03.2016, 13:02 | |
|
С бутлоадерами OTA все гораздо проще, чем вам кажется.
Делается обычный "построчный" бутлоадер, с принудительным выходом в него из приложения. Естественно, бутлоадер должен поддерживать коммуникационные интерфейсы, как правило это тот же интерфейс, который обычно используется для взаимодействия с устройством. Бутлоадер работает вместе с ответной частью на хосте. Прошивка принимается "построчно", то есть небольшими блоками, проверяется целостность блоков, после чего они пишутся в постоянную память. По окончании процесса все проверяется целиком, и перезапускается в режиме приложения. Если что-то произойдет в процессе загрузки, она просто повторяется, потому что с бутлоадером при этом ничего не происходит. Восстанавливаете канал, и прошиваете заново. Если нужна еще большая надежность - бутлоадер делается на пару приложений. То есть за раз шьется только одно, второе гарантированно работоспособно. Аналог Dual BIOS в некоторых материнских платах. Чаще всего это излишне, особенно "на этапе отладки". Впрочем, вполне возможно, тем более что ТС явно готов пожертвовать ресурсами МК. Можно даже сделать так, что работа основного алгоритма в процессе прошивки не прервется. У меня таким образом работают реально большие и сложные системы, эта часть не создает никаких проблем.
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
|
|
| 30.03.2016, 13:11 | |
|
Ну, ну - вызов бутлоадера из приложения!
Неудачно прошились - не запустится приложение, прощай бутлоадер... Бутлодер должен всегда запускаться первым! При запуске проверяем некое условие и принимаем решение - запускать приложение или перепрошивать.
0
|
|
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
||
| 30.03.2016, 13:13 | ||
1. на время обновления прошивки процесс нужно останавливать, выходы переводить в безопасное состояние 2. чтобы собрать прошивку, на компе надо иметь тулчейн. Кроссплатформенность, бла-бла.
0
|
||
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
||
| 30.03.2016, 13:15 | ||
Если аппликуха поломана, то она не запустится.
0
|
||
|
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
|
|
| 30.03.2016, 13:15 | |
|
Тоже озадачивался выполнение скриптов либо байт-кодов.
Тема интересная.
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
|
||
| 30.03.2016, 13:16 | ||
Если аппликуха поломана, то она не запустится. Не надежно, ИМХО - зависло приложение - и усё! Не... пусть будет такой вариант, но полагаться на него на 100% нельзя.
0
|
||
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
|
||
| 30.03.2016, 13:19 | ||
при этом складывать в буфер может само приложение используя более высокий уровень протокола, чем можно сделать на бутлоадере даже если тот же физический интерфейс, хотя можно использовать и другой, более сложный (ethernet например) и только после этого передавать управление бутлоадеру который буфер зашьем вместо приложения и запустит его конечно это как писал выше Hotd - двойной расход флэш. Но затраты не существенные, или МК с двойным запасом или внешний флэш
0
|
||
|
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
|
|
| 30.03.2016, 13:21 | |
|
Давайте не будем уводить в сторону - бутлоадеры я бы тоже обсудил с удовольствием, но тема другая.
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
|
|
| 30.03.2016, 13:23 | |
|
Я склоняюсь к байт-коду.
То есть пишем некий "компилятор" который с "человеческого" языка формирует набор кодов. А в прошивке работает switch/case - машина.
0
|
|
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
|
||
| 30.03.2016, 13:23 | ||
зависит от емкости проекта. Для чего то значимого можно сделать свой компилятор из инструкций пользователя (смысловых, текстовых или графических) в машинный код МК это по факту будет не компиляция а сборка (по сути линковщик) готовых бинарных процедур с данными и упаковка их в работающий код не думаю, что это будет сильно сложнее чем делать свой байт код и к нему интерпретатор минусом будет только непереносимость между разными МК
0
|
||
|
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
|
|
| 30.03.2016, 13:44 | |
|
Ну парсить простые команды несложно.
Ресурсов даже у этого камня - хватит. В том числе - с передаваемыми аргументами. А вот как сделать условные/безусловные переходы (не линейное исполнение скрипта) или вызывать для выполнения другой скрипт - тут уже интересней. С переменными опять же - как быть?
0
|
|
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
|
| 30.03.2016, 14:57 | |
|
Использовать принцип программирования как в калькуляторах, типа МК-34/54. Там и ветвления и переменные и кодом ничего нельзя испортить. И реализуется просто. Только добавить команды специфичные работе устройства, вроде считать температуру, включить лампочку.
0
|
|
|
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
|
||
| 30.03.2016, 15:01 | ||
0
|
||
| 30.03.2016, 15:01 | |
|
Помогаю со студенческими работами здесь
40
C# как скриптовый язык Какой скриптовый язык лучше? Использовать язык Go как скриптовый Скриптовый язык который можно встроить в C++ Может ли скриптовый язык быть объектно ориентированным? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|