skyled
Jul 27 2010, 08:44
По сути задачи поясняю, что в устройстве на МК предполагается постоянное наличие "главной" программы, обладающей основным функционалом и управляет набором периферийных устройств. При этом стоит задача чтобы клиент мог на свой выбор в зависимости от того какое ему угодного поведения управляемых периферийных устройств скачивать с сайта соответствующий файлик и с помощью программы на ПК "заливать" нужные ему файлики в "головной модуль" на место ненужных или в дополнение к имеющимся. Оно бы может можно было заливать прошивку целиком, но нельзя ее давать, поскольку интеллектуальная собственность и секрет произвродства. Как лучше реализовать такой подход? Спасибо.
MrYuran
Jul 27 2010, 08:53
Можно встроить в ядро программы виртуальную машину или скриптовой движок, который будет выполнять скрипты верхнего уровня.
Сам мечтаю такое сделать, да всё пока руки не доходят.
Другой вариант - использовать bootloader собственной конструкции, можно с шифрованием, чтобы прошивку не открывать.
Dima_G
Jul 27 2010, 09:28
Архитектура какая? Если фоннейман, то может получится через указатели на функции? Те основная программа заливает бинарник в определенное место и запускает код на исполнение (ес-но подгружаемый код должен быть слинкован с учетом этого)
skyled
Jul 27 2010, 09:44
Цитата
Архитектура какая?
Пока Мега128, но с перспективой на LPC2368
Все варианты хороши. Какой проще? Такой вероятно надежней.
sigmaN
Jul 27 2010, 09:56
ИМХО проще с бутлоадером и шифрованной прошивкой...
Надежней в плане криптостойкости/секретности или безглючность?
Когда прошивка целиком(шифрованная) вы целиком её и отлаживаете, так что может оказаться, что это будет надежнее, чем скрипт-машина и различные скрипты, которые могут составлять причудливые сочетания.... возможно не всегда 100% протестированные и надёжные...хотя как знать, если их будет не много - то такой подход даст даже бОльшую гибкость...
Решать Вам.
skyled
Jul 27 2010, 10:53
Я не совсем точно описал задачу. Дело в том, что клиент саи скачивает с сайта то, что ему сейчас нужно и сам с помощью специальной программы на ПК подключает к головной программе. Одновременно подключенных модулей не много будет 16-32 примерно. Ну совем для понимания полного представим себе кнопку на головном блоке. По нажатию или печатается что-то или включается лампочка или еще что, не суть. Суть в том, что реакцию на нажатие кнопки и будет проделывать подключаемый клиентом обработчик. Где-то так.
Мне больше нравится идея MrYuran - скрипты. Есть набор функций на все случаи жизни. Ну, как API в Windows. Они описаны, но как они реализованы - тайна. Из них составляется то, что нужно для конкретной задачи. Этот список и загружается в контроллер.
MrYuran
Jul 27 2010, 12:02
Вот это я почти попробовал, даже немного исходник поправил, у меня ошибка вываливалась при компиляции в Dev-С.
Это до предела урезанная и упрощённая форт-машина, которая исполняет байт-код пользователя, зашитый внутрь или загружаемый извне.
Примитивы определяются и компилируются на си, а байт-код представляет собой цепочку номеров этих примитивов.
Но, рутина засосала...
iosifk
Jul 27 2010, 12:02
Цитата(ViKo @ Jul 27 2010, 15:54)

Мне больше нравится идея MrYuran - скрипты. Есть набор функций на все случаи жизни. Ну, как API в Windows. Они описаны, но как они реализованы - тайна. Из них составляется то, что нужно для конкретной задачи. Этот список и загружается в контроллер.
У меня есть статья еще от 2002 (кажется) о форт процессорах. Так вот англичане загружали в микроконтроллер интерпритатор Форта. А саму программу на форте можно было загружать откуда угодно... Но это будет несколько медленно исполняться. Гораздо проще, если клиент формирует задачу, Вы ее компилите у себя "дома" или на сервере. И клиенту отдаете уже зашифрованный бинарник...
Цитата(iosifk @ Jul 27 2010, 15:02)

Гораздо проще, если клиент формирует задачу, Вы ее компилите у себя "дома" или на сервере. И клиенту отдаете уже зашифрованный бинарник...
Это не проще, а выгоднее, если за каждую программу брать с клиента деньги. А если - сдал, получил свое, и забыл, то интерпретатор предпочтительнее. А потом, и сам интерпретатор можно модернизировать, добавлять и совершенствовать функции. И за новую версию уже брать мзду на законных основаниях.
MrYuran
Jul 27 2010, 12:09
Цитата(iosifk @ Jul 27 2010, 16:02)

У меня есть статья еще от 2002 (кажется) о форт процессорах. Так вот англичане загружали в микроконтроллер интерпритатор Форта. А саму программу на форте можно было загружать откуда угодно... Но это будет несколько медленно исполняться.
Медленно - понятие относительное.
Если большинство слов скомпилировано заранее на си, а форт-машина только оперирует этими большими кусками программы, то особого замедления не будет. Разве что на ARM, с их глубоким конвейером, частые переходы противопоказаны. Да и то не особо заметно будет.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.