|
|
  |
Embedded lua ?, Сколько ресурсов ей требуется ? |
|
|
|
Sep 30 2013, 11:35
|
Группа: Новичок
Сообщений: 7
Регистрация: 20-10-10
Пользователь №: 60 302

|
Нужно встроить в контроллер поддержку исполнения скриптов, загружаемых извне. Почитав в интернете про 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 точно не подходит. А вот сколько потребует голая виртуальная машина - я не нашёл.
|
|
|
|
|
Sep 30 2013, 12:40
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(helicopter @ Sep 30 2013, 14:35)  пробовал ли кто встраивать lua в ARM и сколько ресурсов при этом требует только виртуальная машина без всяких обёрток для доступа к периферии ? На ARM Thumb без компилятора LUA занимала 64 кбайт Flash. С компилятором около 100 кбайт. Статически RAM нужно только 8 байт. Остальное через динамическую память, поэтому и трудно оценить, поскольку надо иметь перехватчик для динамической памяти. Но с 48 кбайт лучше не соваться.
|
|
|
|
|
Sep 30 2013, 13:27
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
все эти интерпретаторы: lua, tcl и т.п. жрут память (upd: во время исполнения) со страшной силой, поэтому, мне кажется, нужно искать какие-то специальные встраиваемые варианты. возможно придется пожертвовать "красотой и мощью" языка
upd: даже если и удасться засунуть машину исполнения, то код, который на ней будет исполняться нужно будет сильно ограничивать - можно для ПК собрать и посмотреть (я собственно так и делал когда-то)
------------------------
сам не пробовал, но смотрел на вариант исполняемой машины LEGO NXT (она опенсорсная и специально RAM-лимитед) и какого-нибудь NQC NXC (ну их там полно) - плюс, протестированность, минус - может придется вычищать какие-то специфические лего-заморочки типа от стандартных сенсоров/двигателей
|
|
|
|
|
Sep 30 2013, 17:25
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(helicopter @ Sep 30 2013, 14:35)  На том же сайте написано, что eLua может требовать 10 кб RAM в минимальной конфигурации, Делал виртуальный ПЛК на аврке, мега 1284, у нее на все про все 16кб ОЗУ, причем на ней крутилось 3 задачи, ФС, 2 уарта в пакетном режиме, и еще кое, что по мелочи. В первой задаче работала прога, которая обслуживает платежную систему(купюрник+монетник+хоппер) и логи в файл, вторая - интерфейс с ПК для настройки, и 3я задача - сам процесс приготовления сиропа. Скорость задач не очень большая, порядка 400-600 команд.сек, но для 8и битки, на частоте 11059200Мгц вполне неплохо. Сейчас хочу сделать на АРМе - порядка на 2 быстрее и памяти в нем дохрена. Так что все не так плохо. Единственный минус такого подхода - система понимает псевдоассемблер, который должен подготовить компилятор на ПК.
|
|
|
|
|
Oct 2 2013, 15:53
|
Группа: Новичок
Сообщений: 7
Регистрация: 20-10-10
Пользователь №: 60 302

|
Цитата Делал виртуальный ПЛК на аврке, мега 1284, у нее на все про все 16кб ОЗУ, причем на ней крутилось 3 задачи, ФС, 2 уарта в пакетном режиме, и еще кое, что по мелочи. В первой задаче работала прога, которая обслуживает платежную систему(купюрник+монетник+хоппер) и логи в файл, вторая - интерфейс с ПК для настройки, и 3я задача - сам процесс приготовления сиропа.
Скорость задач не очень большая, порядка 400-600 команд.сек, но для 8и битки, на частоте 11059200Мгц
вполне неплохо. Ничего себе частота у аврки :D А если без шуток, то были ли какие-то особенности конфигурации ? Или стандартная виртуальная машина + модули для выозва Си-функций и всё ? Цитата Я использовал Pawn. Там вызов сишных функций делается совсем легко. И памяти требует в разы меньше, чем Lua. И работает в разы быстрее. Интересная штука. Си-подобный синтаксис и малое потребление ресурсов очень привлекают, но, насколько я понял, оно не поддерживает структуры ? Без поддержки структур довольно грустно, т.к. надо будет работать с Си-функциями, принимающими/возвращающими структуры.
Сообщение отредактировал helicopter - Oct 2 2013, 15:54
|
|
|
|
|
Oct 3 2013, 18:40
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(helicopter @ Oct 2 2013, 18:53)  Ничего себе частота у аврки :D А если без шуток, то были ли какие-то особенности конфигурации ? Или стандартная виртуальная машина + модули для выозва Си-функций и всё ?
Интересная штука. Си-подобный синтаксис и малое потребление ресурсов очень привлекают, но, насколько я понял, оно не поддерживает структуры ? Без поддержки структур довольно грустно, т.к. надо будет работать с Си-функциями, принимающими/возвращающими структуры. Да, с частотой я че-то погорячился Виртуальная машина не стандартная конечно. Задумывалось сие чудо для простых задачек, типа принять пакетик с уарта, проверить парой IFов, и дрыгнуть парой ножек, но чтоб не писать постоянные инициализации портов АЦПшек УАРТов и прочей периферийки, вобщем избавится от рутины. Плюс были заинтересованные клиенты, и у них запрос типа "не умею программить контроллеры, а вот пару -тройку сишных команд нарисовать могу"  - таким пришлось в самую пору... Делалось все очень просто - сишный текст парсился компилятором в командной строке типа GCC и создавался бинарник на сд-карту, потом эта карта вставлялась в контроллер и запускалась прога. Потом я уже "наворотил" там всяких менюшек, протоколов связи и т.п. Сделал систему прерываний прооптимизировал код и сделал 3х задачную систему... ЗЫ. Единственное что могу сказать по поводу ресурсов - 1 оператор у меня занимал примерно 3-5 псевдоассемблерных команд, а каждая команда 2 байта в памяти. Быстродействие примерно 3000 таких команд в сек. Соотв выполнялось 500-900 операторов в сек. Исключение операторы с большим кол-вом параметров. Т.е. из 12кб ОЗУ, хватало на 700-1000 операторов, согласитесь, в такой проге можно не только светодиодами помигать))))))
Сообщение отредактировал mantech - Oct 3 2013, 18:56
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|