helicopter 0 30 сентября, 2013 Опубликовано 30 сентября, 2013 · Жалоба Нужно встроить в контроллер поддержку исполнения скриптов, загружаемых извне. Почитав в интернете про ECMAScript/tcl/lua/Forth решил, что lua будет наиболее подходящим вариантом. Кроме того - для lua был обнаружен вот такой сайт http://www.eluaproject.net/, где указаны требования 64к RAM и 128/256 Flash в зависимости от того - поддерживаются ли числа с плавающей точкой. Правда этот проект подразумевает установку на контроллер виртуальной машины lua и, в дальнейшем, программирование контроллера уже на lua. Для чего там делаются обёртки для всех функций работы с периферией. Мне же нужно только поддерживать вызов некоторых C-функций конткроллера. На том же сайте написано, что eLua может требовать 10 кб RAM в минимальной конфигурации, "но при этом вы не сможете сделать ничего больше, чем поморгать светодиодом" (ц). Отсюда вопрос - пробовал ли кто встраивать lua в ARM и сколько ресурсов при этом требует только виртуальная машина без всяких обёрток для доступа к периферии ? Контроллер lm3s5r31 48кб RAM/256 кб FLASH, поэтому полный вариант eLua точно не подходит. А вот сколько потребует голая виртуальная машина - я не нашёл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 30 сентября, 2013 Опубликовано 30 сентября, 2013 · Жалоба пробовал ли кто встраивать lua в ARM и сколько ресурсов при этом требует только виртуальная машина без всяких обёрток для доступа к периферии ? На ARM Thumb без компилятора LUA занимала 64 кбайт Flash. С компилятором около 100 кбайт. Статически RAM нужно только 8 байт. Остальное через динамическую память, поэтому и трудно оценить, поскольку надо иметь перехватчик для динамической памяти. Но с 48 кбайт лучше не соваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
сарматъ 0 30 сентября, 2013 Опубликовано 30 сентября, 2013 · Жалоба а какие есть альтернативы надежные? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 30 сентября, 2013 Опубликовано 30 сентября, 2013 · Жалоба Мне же нужно только поддерживать вызов некоторых C-функций конткроллера. Я использовал Pawn. Там вызов сишных функций делается совсем легко. И памяти требует в разы меньше, чем Lua. И работает в разы быстрее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
сарматъ 0 30 сентября, 2013 Опубликовано 30 сентября, 2013 · Жалоба какой версией павн? и на сколько он адекватно работает? я читал обсуждения в инете что он не корректно считает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 30 сентября, 2013 Опубликовано 30 сентября, 2013 · Жалоба какой версией павн? и на сколько он адекватно работает? я читал обсуждения в инете что он не корректно считает Версия 4026, проблем не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 8 30 сентября, 2013 Опубликовано 30 сентября, 2013 · Жалоба все эти интерпретаторы: lua, tcl и т.п. жрут память (upd: во время исполнения) со страшной силой, поэтому, мне кажется, нужно искать какие-то специальные встраиваемые варианты. возможно придется пожертвовать "красотой и мощью" языка upd: даже если и удасться засунуть машину исполнения, то код, который на ней будет исполняться нужно будет сильно ограничивать - можно для ПК собрать и посмотреть (я собственно так и делал когда-то) ------------------------ сам не пробовал, но смотрел на вариант исполняемой машины LEGO NXT (она опенсорсная и специально RAM-лимитед) и какого-нибудь NQC NXC (ну их там полно) - плюс, протестированность, минус - может придется вычищать какие-то специфические лего-заморочки типа от стандартных сенсоров/двигателей Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ukpyr 0 30 сентября, 2013 Опубликовано 30 сентября, 2013 · Жалоба по памяти самый экономный вариант - Форт, но не всякий юзверь его осилит. Читабельность более-менее сложного кода (вычисления, стейт-машины) ниже плинтуса Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 30 сентября, 2013 Опубликовано 30 сентября, 2013 · Жалоба На том же сайте написано, что eLua может требовать 10 кб RAM в минимальной конфигурации, Делал виртуальный ПЛК на аврке, мега 1284, у нее на все про все 16кб ОЗУ, причем на ней крутилось 3 задачи, ФС, 2 уарта в пакетном режиме, и еще кое, что по мелочи. В первой задаче работала прога, которая обслуживает платежную систему(купюрник+монетник+хоппер) и логи в файл, вторая - интерфейс с ПК для настройки, и 3я задача - сам процесс приготовления сиропа. Скорость задач не очень большая, порядка 400-600 команд.сек, но для 8и битки, на частоте 11059200Мгц вполне неплохо. Сейчас хочу сделать на АРМе - порядка на 2 быстрее и памяти в нем дохрена. Так что все не так плохо. Единственный минус такого подхода - система понимает псевдоассемблер, который должен подготовить компилятор на ПК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
helicopter 0 2 октября, 2013 Опубликовано 2 октября, 2013 (изменено) · Жалоба Делал виртуальный ПЛК на аврке, мега 1284, у нее на все про все 16кб ОЗУ, причем на ней крутилось 3 задачи, ФС, 2 уарта в пакетном режиме, и еще кое, что по мелочи. В первой задаче работала прога, которая обслуживает платежную систему(купюрник+монетник+хоппер) и логи в файл, вторая - интерфейс с ПК для настройки, и 3я задача - сам процесс приготовления сиропа. Скорость задач не очень большая, порядка 400-600 команд.сек, но для 8и битки, на частоте 11059200Мгц вполне неплохо. Ничего себе частота у аврки :D А если без шуток, то были ли какие-то особенности конфигурации ? Или стандартная виртуальная машина + модули для выозва Си-функций и всё ? Я использовал Pawn. Там вызов сишных функций делается совсем легко. И памяти требует в разы меньше, чем Lua. И работает в разы быстрее. Интересная штука. Си-подобный синтаксис и малое потребление ресурсов очень привлекают, но, насколько я понял, оно не поддерживает структуры ? Без поддержки структур довольно грустно, т.к. надо будет работать с Си-функциями, принимающими/возвращающими структуры. Изменено 2 октября, 2013 пользователем helicopter Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 3 октября, 2013 Опубликовано 3 октября, 2013 (изменено) · Жалоба Ничего себе частота у аврки :D А если без шуток, то были ли какие-то особенности конфигурации ? Или стандартная виртуальная машина + модули для выозва Си-функций и всё ? Интересная штука. Си-подобный синтаксис и малое потребление ресурсов очень привлекают, но, насколько я понял, оно не поддерживает структуры ? Без поддержки структур довольно грустно, т.к. надо будет работать с Си-функциями, принимающими/возвращающими структуры. Да, с частотой я че-то погорячился Виртуальная машина не стандартная конечно. Задумывалось сие чудо для простых задачек, типа принять пакетик с уарта, проверить парой IFов, и дрыгнуть парой ножек, но чтоб не писать постоянные инициализации портов АЦПшек УАРТов и прочей периферийки, вобщем избавится от рутины. Плюс были заинтересованные клиенты, и у них запрос типа "не умею программить контроллеры, а вот пару -тройку сишных команд нарисовать могу" :rolleyes: - таким пришлось в самую пору... Делалось все очень просто - сишный текст парсился компилятором в командной строке типа GCC и создавался бинарник на сд-карту, потом эта карта вставлялась в контроллер и запускалась прога. Потом я уже "наворотил" там всяких менюшек, протоколов связи и т.п. Сделал систему прерываний прооптимизировал код и сделал 3х задачную систему... ЗЫ. Единственное что могу сказать по поводу ресурсов - 1 оператор у меня занимал примерно 3-5 псевдоассемблерных команд, а каждая команда 2 байта в памяти. Быстродействие примерно 3000 таких команд в сек. Соотв выполнялось 500-900 операторов в сек. Исключение операторы с большим кол-вом параметров. Т.е. из 12кб ОЗУ, хватало на 700-1000 операторов, согласитесь, в такой проге можно не только светодиодами помигать)))))) Изменено 3 октября, 2013 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 4 октября, 2013 Опубликовано 4 октября, 2013 · Жалоба Интересная штука. Си-подобный синтаксис и малое потребление ресурсов очень привлекают, но, насколько я понял, оно не поддерживает структуры ? Без поддержки структур довольно грустно, т.к. надо будет работать с Си-функциями, принимающими/возвращающими структуры. Вместо структур - массивы с именованными элементами. Типов только 2: cell (32 бита) и текст, поэтому сишная функция должна будет подстраиваться под них. Ну или можно сделать вспомогательные функции для упаковки/распаковки данных и вызывать их из скрипта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 4 октября, 2013 Опубликовано 4 октября, 2013 · Жалоба Вместо структур - массивы с именованными элементами. Типов только 2: cell (32 бита) и текст, поэтому сишная функция должна будет подстраиваться под них. Ну или можно сделать вспомогательные функции для упаковки/распаковки данных и вызывать их из скрипта. Да, я так и делал - структуры было лень ваять в парсере, а 32х битные числа и плавающую точку упаковывал в массив из 2х элементов по 16 бит каждый. Пользователь этого чуда не видел, а думал что с 32х биткой работает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться