• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

динамическая загрузка байт-кода

nikolz

Well-known member
Добрый день,
Как известно, основная проблема работы с NodeMCU - это малый объем хипа.
Так как байт-код сркиптов VM LUA исполняется лишь их хипа т е RAM,
то на все про все есть 22 кбайта.
----------------------------------------
Один из способов экономного расходования хипа предложен здесь:
http://www.esp8266.com/viewtopic.php?f=19&t=1940
-------------------------------------------
Однако этот способ имеет ряд ограничений.
Одно из них низкая скорость работы с файловой системой.
-------------------------------------------------
Моя идея заключается в том, чтобы реализовать хранение и динамическую загрузку (в дальнейшем, по- возможности, исполнение) байт-кода LUA из флеш, выше занятой NodeMCU области.
------------------------------------------
Так как с флеш памятью не работал на программном уровне,
то просьба привести любые примеры (исходники)
на любом языке программирования обращение к флеш по SPI желательно конкретно для 25Q40BT и им подобные.
------------------------------------------
Приветствуется любая информация о размещении занятой и свободной памяти,
а также организации файловой системы в NodeMCU.
Всем спасибо.
 

Victor

Administrator
Команда форума
Нигде не встретил средств как расширить (и даже как определить)
почитайте это http://esp8266.ru/forum/threads/rasshirenie-flesh-pamjati.36/
Т е если есть 10 функций пользователя каждая по 5000 байт, то при загрузке скрипт займет 50 000 байт хипа сейчас
и 5000-7000 в реализуемом варианте.
это я понял. Тогда в NodeMCU надо обрезать использование всей памяти под файловую систему и оставить место для таких штук, либо вообще все скрипты подкачивать динамически.
Идея отличная, тока с учетом текущих глюков SDK (кстати там что-то есть про кэш - поищите) очень труднореализуема.
В итоге потратите кучу времени, а работать будет не стабильно.
Но я оптимист, так что надеюсь, что у вас все получится - это будет настоящий прорыв, потому что кроме глюков в SDK многих останавливает именно малый размер памяти для выполнения lua скриптов на NodeMCU
 

Victor

Administrator
Команда форума
ESD-12 с увеличенным объемом
Нашел я этот ESD-12
порадовало наличие перемычки для прошивки
А вот размер памяти смущает - никакой подробной информации. Не доверяю я китайцам, как бы их 4M по факту не оказались 4Mbit
Отпишитесь, что там за память
 

nikolz

Well-known member
Добрый день Всем,
Есть следующая проблема.
По моим измерениям время для исполнения одного из скриптов командой dofile состоит из следующих составляющих.
----------------------------
Поиск файла скрипта ,его загрузка, исполнение и удаление NODEMCU (ms):
open=264,
load=53.9,
run=348(подключение по WIFI, настройка сервера TCP и клиента UDP, инициализация датчиков)
del=0.086,
всего=666
размер скрипта не более 1 Кбайта
Как видим, 50% времени уходит на поиск его в файловой системе и загрузки в heap.
Получаем скорость поиска и загрузки скрипта из файловой системы примерно 1-3 Кбайта в секунду.
---------------------------
Вопрос.
Какие есть идеи по устранению данной проблемы.
У меня пока есть следующие:
1) подкачивать скрипты через WIFI ( время обмена через UDP примерно 25 ms на пакет)
2) встроить другую флеш-систему хранения скриптов(какую?)
 
Сверху Снизу