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

EspLua вместо NodeMCU

потом попробуйте тест1
PS: а тем временем тот тест записи/перезаписи файла всё тикает...
Код:
if file.open("x.txt","w") then
local i=1
while 1  do
    print("heap="..node.heap())
file.writeline("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
    file.flush()
    tmr.wdclr()
    i=i+1
    print(i)
         end
end
 

pvvx

Активный участник сообщества
-Uart по умолчанию 230, 460, 921
-Буферы UART увеличить с 100/256 до 1024 или по более.
Данное не возможно. Не совместимо с текущей реализацией системы Lua и прерывания побайтного чтения из Flash/IRAM. Не позволяет скорость обработки строки и опроса новой. Приемный буфер у UART используется от ROM-BIOS. Он там 256 байт. Время ожидания и опроса новой строки = 80 ms и работает по таймеру. При скоростях более 9600 Baud данный буфер можно переполнить за эти 80 ms тысячу раз.
потом попробуйте тест1

Код:
if file.open("x.txt","w") then
local i=1
while 1  do
    print("heap="..node.heap())
file.writeline("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
    file.flush()
    tmr.wdclr()
    i=i+1
    print(i)
         end
end
Когда потом? Тот тест в текущей ситуации никогда не закончится - модуль включен к БП от бесперебойника, не давшего уже десяток лет ни оной секунды отключения питания (смена акк производится) :) Ну может когда flash протрется и начнет сбоить, то он и выскачит :) Это же тест от самого nikolz !
 
Время ожидания и опроса новой строки = 80 ms
То же непонятно, если строка по таймеру 80mc.
я получаю исполнение кода gpio.write за 200мкс.
Код:
Red=1
gpio.mode(Red, gpio.OUTPUT)
while 1 do
gpio.write(Red, gpio.LOW)
gpio.write(Red, gpio.HIGH)
gpio.write(Red, gpio.LOW)
gpio.write(Red, gpio.HIGH)
gpio.write(Red, gpio.LOW)
gpio.write(Red, gpio.HIGH)
end
или я опять не догоняю?
подправил код, не тот сунул...
 

pvvx

Активный участник сообщества
То же непонятно, если строка по таймеру 80mc.
я получаю исполнение кода gpio.write за 200мкс.
....
или я опять не догоняю?
Описывал же:
READLINE_INTERVAL
1) При инициализации, устанавливается на время до первой обработки строки в dojob() : https://github.com/pvvx/EspLua/blob/master/app/lua/lua.c#L467
2) И далее в цикле приема и обработки строк по UART: https://github.com/pvvx/EspLua/blob/master/app/lua/lua.c#L670
А так-же что попало в UART анализируется так-же, через READLINE_INTERVAL
https://github.com/pvvx/EspLua/blob/master/app/lua/lua.c#L664
https://github.com/pvvx/EspLua/blob/master/app/lua/lua.c#L716
Но так, как SDK замедлена в беспредел системой чтения переменных по прерываниям "протектед" для красивой цифры heap, то и 80 ms иногда не хватает.
Надо ставить 300 Baud, если работаете с 16 Mbytes flash со spiffs и тем, что наворотили NodeMCU-шуники. Иначе возникают пропуски - передаете символы программы на 9600, а Lua не успевает их обрабатывать. От этого никакое увеличение приемного буфера не спасает.
PS: а тест от Nikolz всё идет... :) Нафиг - прерываю...
 
Последнее редактирование:
выкладываю прошивку сделайте тест на большом объеме
пришлось долго чистить 25q128.
Запустил test1, без закрытия файла.
где то на 23710 запись резко замедлилась до 1 сек.:eek:
что то не так , остановил.
прошивка более не запускается затерта инициализация.:(
 

pvvx

Активный участник сообщества
это с закрытием файла.
сколько набежало?
Код:
NodeMCU firmware detected.
=node.heap()
30160
> file.remove("script1.lua");
> file.open("script1.lua","w+");
> w = file.writeline
> w([[local i=1]]);
> w([[while 1 do]]);
> w([[file.open("x.txt","a") ]]);
> w([[file.writeline("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")]]);
> w([[file.close() ]]);
> w([[tmr.wdclr()]]);
> w([[i=i+1]]);
> w([[print(i)]]);
> w([[end]]);
> file.close();
> dofile("script1.lua");
> node.compile('script1.lua')

----------------------------
http-example.lc : 540 bytes
http-example.lua : 1419 bytes
http.lc         : 2680 bytes
http.lua        : 6624 bytes
init.lc         : 232 bytes
init.lua        : 91 bytes
script1.lc      : 352 bytes
script1.lua     : 209 bytes
----------------------------
Total file(s)   : 8
Total size      : 12147 bytes

> r,u,t=file.fsinfo() print("Total : "..t.." bytes\r\nUsed  : "..u.." bytes\r\nRemain: "..r.." bytes\r\n") r=nil u=nil t=nil
Total : 14932241 bytes
Used  : 15060 bytes
Remain: 14917181 bytes

> dofile("script1.lc")
2
3
4
5
6
.... Вырезал, т.к. очень длинное
6893
6894
6895
8џю‚ѓѓ›cXћ†}ЋОэ <- Нажал RTS в ESPLorer

EspLua.ru 1.2.0 build 20150710  powered by Lua 5.1.4
>
----------------------------
http-example.lc : 540 bytes
http-example.lua : 1419 bytes
http.lc         : 2680 bytes
http.lua        : 6624 bytes
init.lc         : 232 bytes
init.lua        : 91 bytes
script1.lc      : 352 bytes
script1.lua     : 209 bytes
x.txt           : 696294 bytes
----------------------------
Total file(s)   : 9
Total size      : 708441 bytes

Total : 14932241 bytes
Used  : 717358 bytes
Remain: 14214883 bytes

> =file.fsstat()
   0 idid/dd/d/d/d/d    era_cnt: N/A
   1 i/ddd/i////////    era_cnt: N/A
   2 ///////////////    era_cnt: N/A
   3 ///////////////    era_cnt: N/A
   4 ///////////////    era_cnt: N/A
   5 ///////////////    era_cnt: N/A
   6 ///////////////    era_cnt: N/A
   7 /////dd/d/d/d/d    era_cnt: N/A
   8 /d/d/d/d/d/d/d/    era_cnt: N/A
   9 d/d/d//d/d/d/d/    era_cnt: N/A
  10 d/d/d/d/d/d/di/    era_cnt: N/A
  11 ddd/d/d/d/d/d/d    era_cnt: N/A
  12 /d/d/iid/ddi/d/    era_cnt: N/A
  13 d//d///d//d///d    era_cnt: N/A
  14 //d///d//d///d/    era_cnt: N/A
  15 /d///d//d///d//    era_cnt: N/A
  16 d///d//d///d//d    era_cnt: N/A
  17 ///d//d///d//d/    era_cnt: N/A
  18 //d//d///d//d//    era_cnt: N/A
  19 /d//d///d//d///    era_cnt: N/A
  20 d//d///d//d//d/    era_cnt: N/A
  21 //d//d///d//d//    era_cnt: N/A
  22 /d//d///d//d///    era_cnt: N/A
  23 d//d///d//d///d    era_cnt: N/A
  24 //d///d//d///d/    era_cnt: N/A
  25 /d///d//d///d//    era_cnt: N/A
  26 d///d//d///d//d    era_cnt: N/A
  27 ///d//d///d//d/    era_cnt: N/A
  28 //d//d//d///d//    era_cnt: N/A
  29 d///d//d///d//d    era_cnt: N/A
.... Вырезал, т.к. очень длинное
652 d///d//d///d//d    era_cnt: N/A
653 ///d//d///d//d/    era_cnt: N/A
654 //d//d///d//d//    era_cnt: N/A
655 /d//d///d//d///    era_cnt: N/A
656 d//d///d//d///d    era_cnt: N/A
657 //d//d///d//d//    era_cnt: N/A
658 /d//d///d//d///    era_cnt: N/A
659 d//d///d//d///d    era_cnt: N/A
660 //di___________    era_cnt: N/A
661 _______________    era_cnt: N/A
662 _______________    era_cnt: N/A
663 _______________    era_cnt: N/A
664 _______________    era_cnt: N/A
665 _______________    era_cnt: N/A
666 _______________    era_cnt: N/A
667 _______________    era_cnt: N/A
.... Вырезал, т.к. очень длинное
3964 _______________    era_cnt: N/A
3965 _______________    era_cnt: N/A
3966 _______________    era_cnt: N/A
3967 _______________    era_cnt: N/A
phys_addr:   0x00080000
phys_size:   16252928
era_cnt_max: 1
last_errno:  -10072
blocks:      3968
free_blocks: 3307
page_alloc:  2858
page_delet:  7046
used:        717358 of 14932241
>
Ваш тест ещё не пробовал.
Запустил этот http://esp8266.ru/forum/threads/esplua-vmesto-nodemcu.449/page-7#post-8714
жду завершения... Сколько ждать? Счас он пишет
~1200
heap=28336
 
Последнее редактирование:

pvvx

Активный участник сообщества
Код:
33782
heap=28336
2Т_ЗRSvоcXљ†щЋОэ

EspLua.ru 1.2.0 build 20150710  powered by Lua 5.1.4
>
----------------------------
http-example.lc : 540 bytes
http-example.lua : 1419 bytes
http.lc         : 2680 bytes
http.lua        : 6624 bytes
init.lc         : 232 bytes
init.lua        : 91 bytes
script1.lc      : 352 bytes
script1.lua     : 209 bytes
script2.lua     : 277 bytes
x.txt           : 3411881 bytes
----------------------------
Total file(s)   : 10
Total size      : 3424305 bytes

Total : 14932241 bytes
Used  : 3455266 bytes
Remain: 11476975 bytes
>
Полный лог не влез в буфер ESPLorer (256 к)
В итоге имеем:
Код:
=file.fsstat()
   0 idid/dd/d/d/d/d    era_cnt: N/A
   1 i/ddd/i////////    era_cnt: N/A
   2 ///////////////    era_cnt: N/A
   3 ///////////////    era_cnt: N/A
   4 ///////////////    era_cnt: N/A
   5 ///////////////    era_cnt: N/A
   6 ///////////////    era_cnt: N/A
   7 /////dd/d/d/d/d    era_cnt: N/A
   8 /d/d/d/d/d/d/d/    era_cnt: N/A
   9 d/d/d//d/d/d/d/    era_cnt: N/A
  10 d/d/d/d/d/d/di/    era_cnt: N/A
  11 ddd/d/d/d/d/d/d    era_cnt: N/A
  12 /d/d/iid/ddi///    era_cnt: N/A
  13 ///////////////    era_cnt: N/A
---- повторы ///////////////    era_cnt: N/A 
789 ///////////////    era_cnt: N/A
790 ///////////////    era_cnt: N/A
791 ////////d/d//d/    era_cnt: N/A
792 //d//d///d//d//    era_cnt: N/A
793 /d//d///d//d///    era_cnt: N/A
794 d//d///d//d///d    era_cnt: N/A
795 //d///d//d///d/    era_cnt: N/A
---- повторы примерно этого //d///d//d///d/    era_cnt: N/A
3961 //d///d//d///d/    era_cnt: N/A
3962 /d///d//d///d//    era_cnt: N/A
3963 d///d//d///d//d    era_cnt: N/A
3964 i______________    era_cnt: N/A
3965 _______________    era_cnt: N/A
3966 _______________    era_cnt: N/A
3967 _______________    era_cnt: N/A
phys_addr:   0x00080000
phys_size:   16252928
era_cnt_max: 1
last_errno:  -10072
blocks:      3968
free_blocks: 3
page_alloc:  13766
page_delet:  45695
used:        3455266 of 14932241
>
Записалась вся Flash, запись сорвалась на последнем блоке файловой системы и что там вошло в описание файла - неизвестно, т.к. скрипт Lua не остановился (не проверяет ошибок и ограничений).

Напомню: В web, запись диска через HTTP:
"Файл диска с десятком PDF на 14 642 368 байта записывается из MS Explorer в W25Q128 за 88.22 сек, считая первый пакет открытия соединения по TCP/IP до закрытия соединения." 160..180 килобайт в сек, со стиранием :) Упирается в скорость Flash (W25Q128FV)
 
Последнее редактирование:
Допустимый размер файла понятен.
Какой размер у диска?
вот тест5
Код:
--Test5
local i=1
local n=1
fname="x1.txt"
--
function wr_file()
local n=1
--print("heap="..node.heap())
file.open(fname,"w")
while n<=10000  do
file.writeline("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
tmr.wdclr()
n=n+1
print(n)
end
--file.flush()
file.close()
                  end
--
while i<=5 do
fname="x"..i..".txt"
print(fname)
wr_file()
i=i+1
end
Получилось что и размер диска равен максимальному размеру файла
Код:
5048
5049
5050
5051
ь!¤§
жЗ!ќя
жЗ�њLКми

NodeMCU 0.9.6 build 20150627  powered by Lua 5.1.4
lua: cannot open init.lua
>
----------------------------
Test5.lua       : 437 bytes
x1.txt          : 1000000 bytes
x2.txt          : 504800 bytes
----------------------------
Total file(s)   : 3
Total size      : 1505237 bytes

> r,u,t=file.fsinfo() print("Total : "..t.." bytes\r\nUsed  : "..u.." bytes\r\nRemain: "..r.." bytes\r\n") r=nil u=nil t=nil
Total : 3426401 bytes
Used  : 1518550 bytes
Remain: 1907851 bytes
В ревизии 20150627 не затерла инициализацию...:),
но где же сообщение "Full Disk"?:(
 
Еще 2 теста прошивок уважаемых Nikols и Pvvx

Код:
Прошивка от  Nikols

5954
5955
5956
здесь зависла
---reset---

NodeMCU 9.9.9 build 20150713  powered by Lua 5.1.4
lua: cannot open init.lua
>
Total : 3201705 bytes
Used  : 1603134 bytes
Remain: 1598571 bytes

>
----------------------------
Test5.lua       : 437 bytes
x1.txt          : 1000000 bytes
x2.txt          : 595000 bytes
----------------------------
Total file(s)   : 3
Total size      : 1595437 bytes

Total : 3201705 bytes
Used  : 1603134 bytes
Remain: 1598571 bytes

>

Прошивка от  Pvvx

4785
4786
4787
Љ¦Цт¤ћ€    д

EspLua.ru 1.2.0 build 20150710  powered by Lua 5.1.4
lua: cannot open init.lua
>
----------------------------
Test5.lua       : 437 bytes
x1.txt          : 1000000 bytes
x2.txt          : 478400 bytes
----------------------------
Total file(s)   : 3
Total size      : 1478837 bytes

> r,u,t=file.fsinfo() print("Total : "..t.." bytes\r\nUsed  : "..u.." bytes\r\nRemain: "..r.." bytes\r\n") r=nil u=nil t=nil
Total : 3366161 bytes
Used  : 1491693 bytes
Remain: 1874468 bytes

>
Наверное старые ревизии скачал, поправьте если так.
Резюме.
Ни одна не затерла инициализацию - это хорошо.
но где же сообщение "Full Disk"?:p
Как использовать остальную Flash, 1,8 мБайт для 25q32 или 13,5 мБайт для 25q128 ? :(
 
Поставил память 25q32 из другой партии (упаковки) на Nodemcu Board 1.0.

Залил прошивку NodeMCU 9.9.9 build 20150713 powered by Lua 5.1.4 от Nikols
в Nodemcu Board 1.0 (наш оживший "Татагочи")
Работает.
Код:
NodeMCU 9.9.9 build 20150713  powered by Lua 5.1.4
lua: cannot open init.lua
>
Прошивка от Pvvx упорно не хочет запускаться на
Код:
Can't autodetect firmware, because proper answer not received.
load 0x40100000, len 156, room 16
tail 12
chksum 0xef
csum 0xef
csum err
ets_main.c
Эта загадка не решаемая ;)
 
Пишется bin в память, это совсем другое.

Там же FS такая же, а перетащить?:p
 

pvvx

Активный участник сообщества
Прошивка от Pvvx упорно не хочет запускаться на
Код:
Can't autodetect firmware, because proper answer not received.
load 0x40100000, len 156, room 16
tail 12
chksum 0xef
csum 0xef
csum err
ets_main.c
Эта загадка не решаемая ;)
Если плата не хочет запускать простой короткий лоадер, ни байта, то с чем это связано?
gpio.write(Red, gpio.LOW)
gpio.write(Red, gpio.HIGH)
Во всех прошивках ~400 us от фронта до следующего. А в UART прием от 80 ms мин. строка.
Spiffs не работает ни где. Так он написан и совмещен с Lua :) Проверка на ошибку записи в файл не проходит. После записи файла до выхода по ошибке ничего нового на диск не записать, хотя место остается :)
 
Последнее редактирование:
Если плата не хочет запускать простой короткий лоадер, ни байта, то с чем это связано?
Заинтересовало потому что это не неисправность платы.
Все остальные прошивки работают!
Кто то на форуме писал о защите кода в ESP, вот оно!:p
по этому и интересно...
 

pvvx

Активный участник сообщества
Заинтересовало потому что это не неисправность платы.
Все остальные прошивки работают!
Кто то на форуме писал о защите кода в ESP, вот оно!:p
по этому и интересно...
Да это китайцы. Понавешали транзисторов на GPIO0 и RESET, а при старте в GPIO0 выводится 26 MHz и что там твориться - только вам и известно, но найти и исправить пока не можете :)
Во вторых вы грузите не мой код. У моего контролька другая - chksum 0x71
 
Сверху Снизу