• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

EspLua вместо NodeMCU

pvvx

Активный участник сообщества
Вот команда Reset этой версии NodeMCU:
...
system param error
....
Прочтите инструкцию по прошивке в git:
Прошивка Flash
0x00000.bin: 0x00000
0x0C000.bin: 0x0C000
esp_init_data_default.bin: 0x7C000
blank.bin: 0x7E000

  • Flash любого размера прошивается c опциями как 512 килобайтная. Анализ реального размера производится в ходе исполнения прошивки.
такой результат я и на китайской прошивке получаю если отключу анализ ошибки.
Поэтому Вам и написал про обход ошибки.
У них и у всех других ошибка в кэш spiffs. Вылет происходит из-за неё. Описал-же Что там не понятно и требует доп. описания?

PS @nikolz по поводу и без :): А то и так нерешенных и не протестированных вопросов в EspLua ещё много. Вообще не ясно зачем столько модулей налеплено в NodeMCU. Считаю, что их большую часть просто выкинуть из-за того, что они не отвечают стандартам и созданы исключительно ради “галочки” – типа у нас это есть, но работать правильно не будет. :) Большую часть этих модулей можно реализовать на самом Lua, даже примеры даны.
Основные насущные вопросы: как и куда в Lua встроить события подключения WiFi к AP и прочие указанные в https://github.com/pvvx/EspLua/blob/master/include/user_interface.h#L333
Без них работа с любыми WiFi соединениями в Lua с обработкой событий не представляется возможной.
Второй вопрос - куда девать возможный организуемый буфер в IRAM на 20 килобайт?
Это не отнимает памяти "heap".
Ну и ещё осталась куча просто не тестированных и не реформированных модулей....
 
Последнее редактирование:

pvvx

Активный участник сообщества
pvvx,
понятно.
Почему разработчикам spiffs не напишите?
А , дайте угадаю.
Что им писать,
хоть и не китайцы,
а все равно - г..но сделали!
угадал?
Неа. Это мнение из вашей среды обитания. У меня проще - разработчик давно бросил проект, а так-же spiffs не отвечает необходимым нам условиям и морочится с ним нет никакого смыслу. "Пишите в спортлото" :)
 
Задание максимума мощности передатчика WiFi.
Что это я знаю, нет описания Вашей процедуры, синтаксис, пример.
Сколько "попугаев" (82?) в скобочках допустимо, если не трудно.
Спасибо.
Код:
> =wifi.sta.rssi() 
-61
> =wifi.max_tpw(2)
stdin:1: attempt to call field 'max_tpw' (a nil value)
>
 
Последнее редактирование:

pvvx

Активный участник сообщества
pvvx,
возможно проблема в том что портируют на ESP,
где надо соблюсти кратность 4 ?
И виноватых нет, а есть особенность ESP?
Опять Нет. Виноват избранный метод описания у автора. При делении там всегда выходит не кратное значение....
А заниматься кляузами и подхалимством - это ваша задача - пишите авторам. Каждому - своё. Мне и так хватает своих забот по адаптации того что есть...
 

pvvx

Активный участник сообщества
Что это я знаю, нет описания Вашей процедуры, синтаксис, пример.
Сколько "попугаев" (82?) в скобочках допустимо, если не трудно.
Спасибо.
Инструкция EspLua ещё не создавалась. Можете принять в ней активное участие.
Попугаев там: maximum value of RF Tx Power, unit : 0.25dBm, range [0, 82]
 

pvvx

Активный участник сообщества
Вы ошибаетесь разработчик spiffs выпустил новую версию 0.3.2.
Вопрос: А зачем Вы дублируете описание структуры eraminfo в iram_buf.c ?
Чтобы у других ошибки были? или это такой стиль программирования продвинутый?
Это такой метод тестирования, до выхода релиза. Чтобы было проще и быстрее что-то проверить, особо не утруждаясь. После проверки, перед релизом, код переписывается на более менее "касивый"... Релиза ещё не было :)
Не вижу тут такой системы, как spiffs = https://ru.wikipedia.org/wiki/Список_файловых_систем Измените статью.
И не забывайте - здесь тема не про spiffs и ваши мытарства по поиску авторов и создания им ПО под их имя, а про EspLua :)
Тем более ссылка на ошибку дана в https://github.com/pellepl/spiffs (ver 0.3.2)
 
Последнее редактирование:

nikolz

Well-known member
pvvx,
Загрузил как у вас написано 4 файла с параметрами 512 к.
Эксперимент делал два раза.
Результат без изменений.
--------------------------------
Параметры у своего теста я писал ранее,
Вы тоже очевидно не дочитали.
-----------------------------
Повторяю еще раз:
TT - время записи всего (сек) ts время записи байта (мкс) s- записано всего Кбайт
--------------------------------
Результат не изменился :
name=x1.txt,E=30000000
TT=5.4,ts=16.4,s=160.038
TT=10.9,ts=17.4,s=320.117
TT=16.4,ts=17.5,s=480.091
TT=21.9,ts=17.5,s=640.173
TT=27.5,ts=17.4,s=800.125
TT=33,ts=17.5,s=960.137
TT=38.5,ts=17.5,s=1120.112
TT=44,ts=17.7,s=1280.067
TT=49.6,ts=17.5,s=1440.073
TT=55.1,ts=17.4,s=1600.062
TT=94.4,ts=16.4,s=1759.988
TT=153.5,ts=17.8,s=1919.903
TT=212.9,ts=17.5,s=2079.86
TT=282.1,ts=17.5,s=2239.836
-----------------------------
Знать, не выходит у Данилы чаша малахитовая.
 

pvvx

Активный участник сообщества
Это про что? Там нет автора spiffs. :) Вы не туда пишите и не представили решения.
Если лезете туда, то соблюдайте их правила. Предоставьте решение и код как надо писать, а то у них не работает - "Крокодил не ловится не растет кокос" (c) К/ф Бриллиантовая рука.
 
Последнее редактирование:

nikolz

Well-known member
Это про что? Там нет автора spiffs. :) Вы не туда пишите и не представили решения.
все туда, две ошибки они исправили.
исправят и остальное.
Так как Ваша чаша хоть и не китайская но очень похожа на нее.
Чуда нет,
Будем ждать выступления начальника транспортного отдела.
 

nikolz

Well-known member
возможно, что Вы пускаете мой тест для файла в половину флеш.
либо флеш более скоростная, но результат у меня такой же как на китайской сборке с блокировкой ошибки.
 

nikolz

Well-known member
ладно, пусть будет как есть.
Вот я сегодня робота обучил - это интересно,
а ковыряться в этом ... как-то не очень привлекает.
Успехов Вам в познании китайского чуда.
Ушел. Всем хорошего настроения.
 

pvvx

Активный участник сообщества
возможно, что Вы пускаете мой тест для файла в половину флеш.
либо флеш более скоростная, но результат у меня такой же как на китайской сборке с блокировкой ошибки.
Что за "блокировка ошибки"? Это как? Как может работать какая-то блокировка, если CPU нарывается на протектед при сортировке какой ему сектор стирать в spiffs?
 

nikolz

Well-known member
pvvx,
У меня флеш вроде бы всего 4 Мб
а программы все пишет и пишет:
TT=814.2,ts=17.3,s=5920.372
TT=817,ts=17.4,s=6080.367
TT=819.9,ts=17.4,s=6240.307
TT=822.8,ts=17.3,s=6400.281
TT=825.6,ts=17.3,s=6560.259
TT=828.5,ts=17.4,s=6720.21
TT=831.3,ts=17.4,s=6880.225
TT=834.2,ts=17.4,s=7040.262
TT=837.1,ts=21.5,s=7200.189
TT=839.9,ts=17.4,s=7360.17
TT=842.8,ts=17.4,s=7520.186
смотрю каталог:
Total : 3366161 bytes
Used : 2666624 bytes
Remain: 699537 bytes
записали всего 2.6 МB
Чудеса да и только.
 

nikolz

Well-known member
Что за "блокировка ошибки"? Это как? Как может работать какая-то блокировка, если CPU нарывается на протектед при сортировке какой ему сектор стирать в spiffs?
я же выкладывал прошивку китайскую с исправлением которая пишет файлы больше половины.
вот в ней и было исправлено. результаты ровно такие же как сейчас
за исключением последнего (запись файлов размером больше флеш)
Это только у Вас так сделано. Круче чем у китайцев. Те еще не додумались до такого.
 

pvvx

Активный участник сообщества
У меня флеш вроде бы всего 4 Мб
а программы все пишет и пишет:
....
смотрю каталог:
Total : 3366161 bytes
Used : 2666624 bytes
Remain: 699537 bytes
записали всего 2.6 МB
Чудеса да и только.
Прочтите что писал - нет ограничения у spiffs + Lua в записи.
Вы ошибку так и не диагностировали, а уже им всем пишите. Она возникает при уже занятых секторах, при поиске какой стирать.
В NodeMCU файловая система одноразовая - сделали формат, записали файл до половины размера и свободные сектора в spiffs кончились. Для следующей записи в NodeMCU, даже если удалили все файлы, надо делать формат. :) Иначе баг в процедуре сортировки поиска сектора с наименьшим кол-вом стираний для стирания - вылет CPU по протетктед... И это ещё не один баг.
А в spiffs было задумано по другому. По тому идите к автору spiffs, смотрите там уже есть ещё поправки и вникайте в систему... :)
А я просто скручу её так, как мне хочется - выкину и заменю на другую, как найду что более подходящее...
 
Последнее редактирование:

pvvx

Активный участник сообщества
@nikolz - вот запись файла предельной длины на малой flash:
Код:
> file.format()
format done.
> file.remove("script2.lua");file.open("script2.lua","w+");
> w = file.writelinew([[print("Test save max size file")]]);w([[a=0]]);w([[e = file.fsinfo()]]);
> w([[e = e/2-2048]]);w([[while(1) do]]);w([[ i=0;]]);w([[ if(e < 0) then break end]]);w([[ print("Save next max ~"..e.." bytes block")]]);w([[ T=tmr.now()]]);w([[ if (file.open("test.txt","a")) then]]);w([[  while ((i < e) and (file.write("0123456789012345678901234567890123456789012345678901234567890123")))   do]]);w([[   a=a+64]]);w([[   i=i+64]]);w([[  end]]);w([[  file.close()]]);w([[  x=i/((tmr.now()-T)/1000000)]]);
> w([[  print("Saved block "..i.." bytes, speed "..x.." bytes/sec...")]]);w([[ end]]);
> w([[ if(i < e) then break end]]);w([[ e = file.fsinfo()]]);w([[ e = e/2-2048]]);w([[ if(e>10240) then e = 10240 end]]);w([[end]]);w([[print("Saved "..a.." bytes. Disk full.")]]);file.close();dofile("script2.lua");
Test save max size file
Save next max ~14518 bytes block
Saved block 14528 bytes, speed 41641.467196739 bytes/sec...
Save next max ~7113.5 bytes block
Saved block 7168 bytes, speed 8098.7486936135 bytes/sec...
Save next max ~3474 bytes block
Saved block 3520 bytes, speed 4245.6545363974 bytes/sec...
Save next max ~1717 bytes block
Saved block 1728 bytes, speed 1493.7333219229 bytes/sec...
Save next max ~713 bytes block
Saved block 768 bytes, speed 878.64012136217 bytes/sec...
Save next max ~336.5 bytes block
Saved block 384 bytes, speed 657.11005053245 bytes/sec...
Save next max ~211 bytes block
Saved block 256 bytes, speed 876.64628007479 bytes/sec...
Save next max ~85.5 bytes block
Saved block 128 bytes, speed 434.42550620753 bytes/sec...
Saved 28480 bytes. Disk full.
>
----------------------------
script2.lua     : 592 bytes
test.txt        : 28480 bytes
----------------------------
Total file(s)   : 2
Total size      : 29072 bytes

Total : 34136 bytes
Used  : 30120 bytes
Remain: 4016 bytes

> file.fsstat()
   0 dddddddddddd/di    era_cnt: 84
   1 ddddddd/dd/dd/d    era_cnt: 81
   2 ddddddddd/d/ddd    era_cnt: 78
   3 ddddddddddd/did    era_cnt: 82
   4 ddddddddd/d/ddd    era_cnt: 79
   5 idddddddddddd/d    era_cnt: 83
   6 ddddddddddd/d/d    era_cnt: 80
   7 _______________    era_cnt: 86
   8 _______________    era_cnt: 87
   9 dddddddddddd/dd    era_cnt: 85
  10 ddddddddd/d/ddd    era_cnt: 77
phys_addr:   0x00071000
phys_size:   45056
era_cnt_max: 88
last_errno:  -10072
blocks:      11
free_blocks: 2
page_alloc:  120
page_delet:  15
used:        30120 of 34136
>
Как видим сплошной era_cnt: 87 секторов, после впихивания файла более половины диска.
(Это же надо было, чтобы на диске в 11 секторов при записи test.txt в 28480 bytes стереть 87 секторов! - автор spiffs поражает - супер ситема записала файл 8 раз стерев и переписав все сектора :) )
На 15.5Мег диске первые 7 мег пишутся со скоростью ~50 килобайт в сек, а последующие - втискиваются со стиранием со скоростью менее 1 килобайта в сек.
print("Test save max size file")
a=0
e = file.fsinfo()
e = e/2-2048
while(1) do
i=0;
if(e < 0) then break end
print("Save next max ~"..e.." bytes block")
T=tmr.now()
if (file.open("test.txt","a")) then
while ((i < e) and (file.write("0123456789012345678901234567890123456789012345678901234567890123"))) do
a=a+64
i=i+64
end
file.close()
x=i/((tmr.now()-T)/1000000)
print("Saved block "..i.." bytes, speed "..x.." bytes/sec...")
end
if(i < e) then break end
e = file.fsinfo()
e = e/2-2048
if(e>10240) then e = 10240 end
end
print("Saved "..a.." bytes. Disk full.")
Как итог - spiffs ужасная файловая система и не годится ни для какого применения. По этому она горячо любима народом. Закон такой - народ всегда и везде выбирает всё самое худшее.
 
Последнее редактирование:

nikolz

Well-known member
Прочтите что писал - нет ограничения у spiffs + Lua в записи.
Вы ошибку так и не диагностировали, а уже им всем пишите. Она возникает при уже занятых секторах, при поиске какой стирать.
В NodeMCU файловая система одноразовая - сделали формат, записали файл до половины размера и свободные сектора в spiffs кончились. Для следующей записи в NodeMCU, даже если удалили все файлы, надо делать формат. :) Иначе баг в процедуре сортировки поиска сектора с наименьшим кол-вом стираний для стирания - вылет CPU по протетктед... И это ещё не один баг.
А в spiffs было задумано по другому. По тому идите к автору spiffs, смотрите там уже есть ещё поправки и вникайте в систему... :)
А я просто скручу её так, как мне хочется - выкину и заменю на другую, как найду что более подходящее...
Я рад что Вы это поняли. я это понял давно поэтому и пытался Вам объяснить что Вы ничего не исправили и как писало до середины так и осталось а дальше и у Вас и у китайцев ищем свободное в этих записанных
У Вас и у вариант мой у китайцев система лезет выше и пишет с каждым разом все медленнее и медленнее.
---------------------
Я понимаю, что Вам советовать что писать против ветра.
Но все же не надо стараться выглядеть умнее чем есть.
Как я понял Вы по программированию институтов не кончали (самооучка) Вот и пытаетесь самоутверждаться обливая всех дерьмом
Но я не обижаюсь на обиженных жизнью.
 
Сверху Снизу