Easyelectronics.ru

Электроника для всех
Текущее время: 16 окт 2018, 19:31

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



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

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

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


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

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


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

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


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

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


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

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

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


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

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


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


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

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

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


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

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 1078
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
Сообщения: 771
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
Сообщения: 1078
Ну это далеко не полный список само-собой.

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


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

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

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


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

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

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

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


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

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

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

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


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

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

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


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

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

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


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

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

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


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

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

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

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


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

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


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

Зарегистрирован: 27 апр 2013, 13:53
Сообщения: 771
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
Сообщения: 487
Доброго времени суток !

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
Сообщения: 1740
Откуда: Харьков
Да нет синтаксиса никакого. Это визуальный редактор в виде блок-схем.
А данные все в формате том, что я привел выше.

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


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

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

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

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


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

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


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

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

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


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

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


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

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


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

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

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