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

smart.js : общие вопросы

worm

New member
Спасибо за новую прошивку!
Примерно 2:00 потратил чтобы начало шиться ! К сожалению мало инфы . сейчас делаю из под Win 7 , долго не видел файлов прошивки. Затем интуетивно сделал попе папки Smart.js и переименовал . Тада и здесь пошло . Буду тестить
 

alashkin

Разработчик Smart.js
Команда форума
Спасибо за новую прошивку!
Примерно 2:00 потратил чтобы начало шиться ! К сожалению мало инфы . сейчас делаю из под Win 7 , долго не видел файлов прошивки. Затем интуетивно сделал попе папки Smart.js и переименовал . Тада и здесь пошло . Буду тестить
А что такое "попе"?
Можете рассказать почему не работало, может мы поправить что-то сможем, что бы out-of-box заводилось?
 

pvvx

Активный участник сообщества
Не получается собрать проект из исходников на win7 c помощью Unofficial Developer Kit, т.е. привести его к виду стандартного проекта в UDK c Eclipse (makefile(s) + esptool.py).
Сдался после исправления дцатой несовместимости...
 

rojer

Разработчик Smart.js
Команда форума
Не получается собрать проект из исходников на win7 c помощью Unofficial Developer Kit, т.е. привести его к виду стандартного проекта в UDK c Eclipse (makefile(s) + esptool.py).
Сдался после исправления дцатой несовместимости...
а в чём там основные проблемы?
мы сами не пользуемся windows для разработки и пока не будем обещать поддержку её в таком качестве, но патчи примем, при условии что они не сильно инвазивные.
 

pvvx

Активный участник сообщества
[inline]f=File.open("test.txt","wa");i=0;while(f.write("0123456789012345678901234567890123456789012345678901234567890123")==64){print(i++);OS.wdt_feed();};f.close();[/inline]
Код:
Executing init.js
HELO! Type some JS. See https://github.com/cesanta/smart.js for more info.

smartjs 9160/2148$ f=File.open("test.txt","wa");i=0;while(f.write("0123456789012345678901234567890123456789012345678901234567890123")==64){print(i++);OS.wdt_feed();};f.close();
0
1
2
3
4
5
6
7
8
9
10
11
Далее висит.
 

pvvx

Активный участник сообщества
Можно поставить boot2docker и собирать нашим Makefile'ом :)
Именно из-за того, что ваш Makefile ужасен и пытался перевести в другой вид.
Получается что у вас не исходники, а шифр, т.к. большинство названий процедур, сегментов и define задается во внешнем файле, который является дешифратором :)
К примеру где прописан 'printf' ? Где declaration используемых процедур? :)
 
Последнее редактирование:

imax

Разработчик Smart.js
Команда форума
Получается что у вас не исходники, а шифр, т.к. большинство названий процедур, сегментов и define задается во внешнем файле, который является дешифратором :)
Мы хотим как можно больше кода шарить между разными платформами, потому пытаемся использовать привычные имена функций и переопределять их для каждой платформы отдельно. Впрочем, добавление второй платформы покажет в чём мы были правы и где ошиблись :)
К примеру где прописан 'printf' ? Где declaration используемых процедур? :)
Makefile: [inline]-Dprintf=c_printf[/inline], а c_printf живёт в v7_uart.c

Возможно это не самое лучшее решение и оно мешает работе xref engine, но посмотрим, вполне вероятно что скоро мы придумаем что-то получше.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Makefile: [inline]-Dprintf=c_printf[/inline], а c_printf живёт в v7_uart.c
Возможно это не самое лучшее решение и оно мешает работе xref engine, но посмотрим, вполне вероятно что скоро мы придумаем что-то получше.
Такое и не дает возможности в среде, к примеру Eclipse, видеть что там за printf. Выходит кодированный СИ, понятный только после заучивания внешних переназначений.
А так основные беды в порте на ESP8266:
1) Применение побайтного чтения IRAM и области кэширования Flash через прерывание исключения. Очень тормозит сетевые коммуникации и все чтения строк ( в более чем 100 раз)
2) Ошибки в используемых библиотеках (они у вас не исправлены).
 
Последнее редактирование:

imax

Разработчик Smart.js
Команда форума
Такое и не дает возможности в среде, к примеру Eclipse, видеть что там за printf. Выходит кодированный СИ, понятный только после заучивания внешних переназначений.
Что делает printf приблизительно понятно и без заучиваний :)
 

rojer

Разработчик Smart.js
Команда форума
к вопросу о Makefile - я его подчистил, хотя дефайнов там по-прежнему много.

строки в IRAM - это необходимое зло, без него никак. SDK сжирает половину памяти (вот подо что, интересно?), и так еле помещаемся.
сейчас вот ещё SSL добавляю, памяти еле хватает... увы, чудес не бывает
если вас волнует скорость чтения строк из флеша - увы, вам подойдёт только C.
 

pvvx

Активный участник сообщества
строки в IRAM - это необходимое зло, без него никак. SDK сжирает половину памяти (вот подо что, интересно?), и так еле помещаемся..
Ничего подобного - в последних версиях SDK и RТOS SDK китайцы навели порядок и heap за 50 килобайт + за 30 килобайт свободной IRAM.
Просто скажите что пока не понимаете как ужать код на lx106 с использованием IRAM
 

rojer

Разработчик Smart.js
Команда форума
вчера проапдейтились до 1.2.0 + патч, получили 8K. спасибо братьям-китайцам, но это не решает проблему.
мы делаем всё, что в наших силах, но повторяю - на данный момент строки во флеше - насущная необходимость.
приложения, критичные к скорости, пока что не наша цель и в обозримом будущем не станут.
 

pvvx

Активный участник сообщества
вчера проапдейтились до 1.2.0 + патч, получили 8K. спасибо братьям-китайцам, но это не решает проблему.
мы делаем всё, что в наших силах, но повторяю - на данный момент строки во флеше - насущная необходимость.
Они читаются без прерываний по исключению, простой процедурой в одну строку.
Т.е. 80 килобайт памяти и к 1 Мегабайту flash для smart.js недостаточно? :eek:
Все китай-библиотеки из SDK 1.2.0 в сумме жрут (пример Iot_demo):
Код:
Section info:
   Section|                   Description| Start (hex)|   End (hex)|Used space
------------------------------------------------------------------------------
      data|        Initialized Data (RAM)|    3FFE8000|    3FFE8C2C|    3116
    rodata|           ReadOnly Data (RAM)|    3FFE8C30|    3FFEA6D4|    6820
(На bss SDK влиять невозможно, но там много от LwIP)
+ на поддержку включенной AP и ST ещё к 2 кило из Heap после инициализации.
В итоге, ради перемещения rodata от SDK (+ там от Iot_demo половина) в 6820 байта, smart.js использует тормоз в виде побайтного чтения через прерывание исключения? :)

Минималистическая версия SDK 1.2.0 (свой LwIP + SSL и китай-либы: libpp.a, libwpa.a, libnet80211.a, части libphy.a, user_interface.o) жрет:
data: 1 кило
rodata: 2 кило
bss: 26 кило
lit4(данные в IRAM = bss_iram): до 1 кило
Остальное только динамические данные в heap на время обработки запросов.
 
Последнее редактирование:

rojer

Разработчик Smart.js
Команда форума
AnonymUser, да, сделаем.

pvvx, спасибо за инфу. пусть alashkin ответит, он про это больше знает.
 
Сверху Снизу