• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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) встроить другую флеш-систему хранения скриптов(какую?)
 
Сверху Снизу