Easyelectronics.ru • Просмотр темы - Как изменить логику работы МК без изменения прошивки

Easyelectronics.ru

Электроника для всех
Текущее время: 18 авг 2018, 07:45

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



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 24 ] 
Автор Сообщение
 Заголовок сообщения: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 14:04 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1674
Откуда: Харьков
Допустим есть некий проприетарный визуальный редактор, который в виде диаграммы позволяет разрабатывать логику.
Как лучше реализовать выполнение этой логики в МК конкретно STM32? Пока придумал варианты:
1) сохраняем логику в виде некоего собственного набора команд, который потом будет выполняться прошивкой.
плюсы: относительно безопасное исполнение на МК. Можно написать кучу проверок в прошивке которая выполняет команды и просто прекратить исполнение если что пошло не так. Так же можно в любой момент прервать выполнение и восстановить состояние периферии МК.
минусы - без изменения прошивки нового не добавить. размер прошивки растет. фактическая скорость выполнения команд меньше.
2) компилируем сразу в исполняемый код МК и передаем управление.
плюсы: быстро работает, исходная прошивка не толстеет, не нужно ее менять если добавились новые команды
минусы: если что-то пошло не так то у же можно не вернуться, не безопасно с точки зрения если попал в плохие руки (но тут скорее сам себе злобный Буратино), непонятно что происходит после передачи управления, нельзя ничего контролировать.
3) ???


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

Зарегистрирован: 14 апр 2014, 11:06
Сообщения: 1283
Откуда: Курск
Какой нибудь интерпретатор запилить. BASH, Perl, Python, Basic
Может проект LEDE подойдет?


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

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1674
Откуда: Харьков
Зачем мне эти монстры?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 15:29 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1558
Откуда: Киев
foooooorth!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 15:37 
Старожил

Зарегистрирован: 15 янв 2018, 18:52
Сообщения: 608
Цитата:
2) компилируем сразу в исполняемый код МК и передаем управление.

все визуальные языки программирования (с которыми сталкивался) - работали именно так)


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

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 1909
alexsam писал(а):
Допустим есть некий проприетарный визуальный редактор, который в виде диаграммы позволяет разрабатывать логику.
Как лучше реализовать выполнение этой логики в МК конкретно STM32? Пока придумал варианты:
1) сохраняем логику в виде некоего собственного набора команд, который потом будет выполняться прошивкой.
плюсы: относительно безопасное исполнение на МК. Можно написать кучу проверок в прошивке которая выполняет команды и просто прекратить исполнение если что пошло не так. Так же можно в любой момент прервать выполнение и восстановить состояние периферии МК.
минусы - без изменения прошивки нового не добавить. размер прошивки растет. фактическая скорость выполнения команд меньше.
2) компилируем сразу в исполняемый код МК и передаем управление.
плюсы: быстро работает, исходная прошивка не толстеет, не нужно ее менять если добавились новые команды
минусы: если что-то пошло не так то у же можно не вернуться, не безопасно с точки зрения если попал в плохие руки (но тут скорее сам себе злобный Буратино), непонятно что происходит после передачи управления, нельзя ничего контролировать.
3) ???


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 16:47 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1165
alexsam писал(а):
Допустим есть некий проприетарный визуальный редактор, который в виде диаграммы позволяет разрабатывать логику.
Как лучше реализовать выполнение этой логики в МК конкретно STM32?

В каком виде этот редактор сохраняет эту логику?

_________________
less is more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 17:01 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 858
alexsam писал(а):
Зачем мне эти монстры?

А кто ж знает насколько у вас там сложная "логика" требуется? Если довольно-таки просто, лучше конечно свой "интерпретатор" написать. Так безопаснее, чем код сразу пихать. И ошибки обрабатывать можно.
А так пожалуйста, вот целый список маленьких (всё относительно) интерпретаторов, нацеленных на встраиваемые системы: https://github.com/dbohdan/embedded-scripting-languages

PS: Вообще мне Espruino нравится... может потому-что на JS/Node.JS немного приходится писать. https://github.com/espruino/Espruino - на STM32 портирован.

EDIT: Вот еще нашел: http://we.easyelectronics.ru/STM32/prik ... stm32.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 17:09 
Старожил

Зарегистрирован: 27 апр 2013, 13:53
Сообщения: 740
NStorm писал(а):
А так пожалуйста, вот целый список маленьких (всё относительно) интерпретаторов, нацеленных на встраиваемые системы: https://github.com/dbohdan/embedded-scripting-languages.

Форт представлен в единственном варианте :)

P.S. Прошивка, всё равно, может изменяться через режим самопрограммирования часто используемый в автономных Форт системах контроллеров.
На Github есть и отдельная ForthStar подборка
ПЛК контроллеры на Форт ForthLogic


Последний раз редактировалось KPG 20 апр 2018, 19:01, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 17:11 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 858
Ну это далеко не полный список само-собой.

Вот x893 вообще оказывается picoC портировал на STM32: http://akb77.com/g/stm32/uc/ :)


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

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 1909
NStorm писал(а):
Вот x893 вообще оказывается picoC портировал на STM32: http://akb77.com/g/stm32/uc/ :)

Забавная штука. Только в описании английский хромает на обе ноги, читать тяжело :)


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

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1674
Откуда: Харьков
vt340 писал(а):
alexsam писал(а):
Допустим есть некий проприетарный визуальный редактор, который в виде диаграммы позволяет разрабатывать логику.
Как лучше реализовать выполнение этой логики в МК конкретно STM32?

В каком виде этот редактор сохраняет эту логику?

Сейчас сохраняет в своем формате чтоб потом восстановить.
По сути это JSON объект. А ректор на NodeJS.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 19:52 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1165
alexsam писал(а):
vt340 писал(а):
В каком виде этот редактор сохраняет эту логику?

Сейчас сохраняет в своем формате чтоб потом восстановить.
По сути это JSON объект. А ректор на NodeJS.

Нет, я имел в виду не формат, а структуру
Там синтаксический разбор структуры картинки надо будет делать или уже разобрано всё на операции логики?

_________________
less is more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 21:53 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1674
Откуда: Харьков
Там уже логика, массив типа такого:
Код:
[
action: if,set,reset,add,substract...,
values: [xx,yy...],
anotherField: ...
],
[...]

т.е. можно и в исполняемый код собрать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 22:51 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1165
alexsam писал(а):
Там уже логика, массив типа такого:
Код:
[
action: if,set,reset,add,substract...,
values: [xx,yy...],
anotherField: ...
],
[...]

Это готовый байткод, о котором evsi выше писал
Осталось только данные привязать, самое простое - фиксированный набор идентификаторов данных, как в ПЛК

_________________
less is more


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 20 апр 2018, 23:09 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 3721
Откуда: г. Липецк
vt340 писал(а):
...фиксированный набор идентификаторов данных, как в ПЛК

В ПЛК используется промежуточный слой представления данных между контроллером и программой пользователя. Это позволяет на этом уровне поддерживать множество языков программирования. Для МК это будет очень ресурсоемко...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 21 апр 2018, 01:02 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1165
anakost писал(а):
vt340 писал(а):
...фиксированный набор идентификаторов данных, как в ПЛК

В ПЛК используется промежуточный слой представления данных между контроллером и программой пользователя. Это позволяет на этом уровне поддерживать множество языков программирования. Для МК это будет очень ресурсоемко...

Фиксированный набор идентификаторов данных в ПЛК называется "регистры"

_________________
less is more


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

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 1175
Откуда: Китай, Пекин
Developing in Lua for STM32


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 21 апр 2018, 12:18 
Старожил

Зарегистрирован: 27 апр 2013, 13:53
Сообщения: 740
cheblin писал(а):

cheblin Интересно, а есть ли китайцы, в твоём окружении, знакомые с Forth?

P.S. Какие то книги по Форт ("китайскими" людьми) выпускаются
Пример в записи из блога More Thoughts SIMPL and eForth

Как я понимаю, для "массового" программерского сознания (кроме парадигмы мышления) принципиально видеть оператор присваивания в виде А = В, а не в форме А to B или А @ B @ ! (прямая работа с ячейками памяти)
а оператор сравнения А != Б, а не в форме А Б <>
ну и до кучи ветвление IF Flag Then ... Else ... , а не Flag IF .... ELSE .... THEN (ближе к ассемблерному варианту)
т.е. постоянно "фрагментировать" код именованными переменными, вместо использования, почти всегда, в потоке алгоритма вычисления безымянных данных-переменных (учитывая, что слово в Форт почти всё "что угодно")
Один, из возможных промежуточных выводов, в дискуссии может быть такой - Изменить логику мышления :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 21 апр 2018, 14:30 
Старожил

Зарегистрирован: 17 дек 2014, 04:38
Сообщения: 456
Доброго времени суток !

alexsam писал(а):
Там уже логика, массив типа такого:
Код:
[
action: if,set,reset,add,substract...,
values: [xx,yy...],
anotherField: ...
],
[...]

т.е. можно и в исполняемый код собрать.


Я бы делал по принципу специализированного интерпретатора. Со следующей моделью - интерпретатор в флэш, программа во внешней SPI флэш (их можно много набрать на конторах по ремонту компов, на старых мамках), ОЗУ для переменных и текущего исполняемого кода. Синтаксис выбрал бы блочный ({},[],() и т.п.) так как легко рекурсивно парсить. К тому же все команды и блоки сделал бы предикативными, к примеру:
Код:
a = b - c;
       NZ_{pwm(100);}
       Z_{pwm(0);}
       C_pwm(1000);

то есть из b вычитаем c, по результату изменяем флаги C, P, S, Z. Где с помощью предикатов определяем будет ли исполнятся следующий блок или функция. На основании тех же флагов можно организовать и циклы (repeat). Таким образом парсер выбирает функцию или начало блока, анализирует флаги и если флаги не устраивают то сразу ищет или закрытие блока или ; . Функции нужно сделать специализированными по специализации вашего устройства (допустим pwm, rfid, motor, tenso). Для того что бы программировать интерпретатором только логику устройства и не возится с портами и периферией stm32. По этой же причине не стал бы связываться с готовыми интерпретаторами (JS, basic, lisp и т.д.). Так как они разрабатывались для работы в инфосистемах (ПК, терминалы, потоковые исполнение программ).


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

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1674
Откуда: Харьков
Да нет синтаксиса никакого. Это визуальный редактор в виде блок-схем.
А данные все в формате том, что я привел выше.

P.s. компиляторы я писал еще в универе на диплом бакалавра, но не МК.
Тут как бы компилятор не нужен, нужно просто в байт код правильно сконвертить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как изменить логику работы МК без изменения прошивки
СообщениеДобавлено: 22 апр 2018, 00:32 
Старожил

Зарегистрирован: 27 апр 2013, 13:53
Сообщения: 740
alexsam писал(а):
Да нет синтаксиса никакого. Это визуальный редактор в виде блок-схем..

А что за редактор?

P.S. К сведению: Здесь есть некоторая подборка книг по Форт


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

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1674
Откуда: Харьков
я ж писал в первом посте: проприетарный визуальный редактор - т.е. разрабатываемый нами.


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

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 858
alexsam писал(а):
проприетарный визуальный редактор - т.е. разрабатываемый нами.

В каком слове по вашему в "проприетарный визуальный редактор" есть значение "разрабатываемый нами"? Проприетарный - значит чей-то, но вовсе не прям ваш. Винда - проприетарная. Но совсем не моя.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ] 

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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

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