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