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

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

alashkin

Разработчик Smart.js
Команда форума
Они читаются без прерываний по исключению, простой процедурой в одну строку.
Это вы про spi_flash_read или memcpy?

В итоге, ради перемещения rodata от SDK (+ там от Iot_demo половина) в 6820 байта, smart.js использует тормоз в виде побайтного чтения через прерывание исключения? :).
Не от SDK, от V7.
 

pvvx

Активный участник сообщества

alashkin

Разработчик Smart.js
Команда форума
https://github.com/cesanta/smart.js/blob/master/platforms/esp8266/user/v7_flash_bytes.c

Я про вот это:
>>Они читаются без прерываний по исключению, простой процедурой в одну строку.

Какую процедуру вы имеете ввиду?

>>Она может иметь свои процедуры обращения к данным.

И может и не может. Строки (названия пропертей, тексты исключений etc) вольно раскиданы по коду V7.
Если когда-то мы заменим строки вида `v7_throw("Oops")` на `v7_throw(get_text(text_Oops))` - тогда можно будет убрать переливку .rodata на флеш.

Сейчас важнее освободить память.
 

pvvx

Активный участник сообщества
Сейчас важнее освободить память.
Перекиньте все переменные (в основном bss) имеющие структуру dword align(4) в IRAM.
Туда перекидывается и часть структур от LwIP и т.д..
IRAM расширяется до 48 килобайт за счет 'кэша', а 16 килобайт 'кэша' хватает чипу для исполнения довольно требовательных к "кэшу" flash приложений...
Как итог у вас получается общая RAM = 0x20000 - rodata - data - bss(1 и 2) и при оптимизации китай-SDK heap выходит к 50 килобайт, а общей свободной памяти к 80 (из 128 имеющейся, + стек в области (16к) RAM-BIOS 0x3FFFE360..0x40000000 = 7328 байт).
Т.е. использовать 30 кило свободной IRAM можете по своему усмотрению...
Это и хотел проделать, но такая "сборка" V7 пока не вышла, т.к. понял, что использовать V7 как внутренний драйвер для обработки скриптов Java на ESP8266 не выйдет (т.к. он создан исключительно ради самого себя)... а хотелось бы... позже может опять попробую. :)
Как бы ещё наблюдается тенденция в китай-RTOS-SDK 1.0.1 по выносу всех процедур работающих со стрингами в отдельную либу:
libminic.a: strtol, strcat, strncat, strspn, strcspn, strtok_r, strtok, strrchr, strdup, strchr, atoi, atol, sprintf, snprintf, sscanf
Это тоже дает варианты по собственной обработке байтовых строк в области 'кэша flash'...
 
Последнее редактирование:

Astrey

New member
Эм, ребята, я что то упустил?
Теперь файл можно выполнить посредством команды File.load(«имя файла»), набрав эту команду в консоле, или добавив её в файл init.js (тогда файл автоматически выполнится при старте устройства).
Нет такой функции. В любом случае у меня не работает:
Executing init.js

HELO! Type some JS. See https://github.com/cesanta/smart.js for more info.



smartjs 24896/2148$ File.list("");

["gpio.js","I2C.js","init.js","MC24FC.js","MC24FC_test.js","MCP9808.js","MCP9808_test.js","MPL115A1.js","smart.js"]

smartjs 24504/2304$ File.load("init.js");

Exec error:{"message":"value is not a function"}

smartjs 24504/2304$

Так как же запустить файл?
 

alashkin

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

Нет такой функции. В любом случае у меня не работает:
Executing init.js

HELO! Type some JS. See https://github.com/cesanta/smart.js for more info.

smartjs 24896/2148$ File.list("");

["gpio.js","I2C.js","init.js","MC24FC.js","MC24FC_test.js","MCP9808.js","MCP9808_test.js","MPL115A1.js","smart.js"]

smartjs 24504/2304$ File.load("init.js");

Exec error:{"message":"value is not a function"}

smartjs 24504/2304$

Так как же запустить файл?
Я дико извиниюсь, её переименовали в File.eval(...).
 

Alexei

New member
Добрый день,

Прошил свой NodeMCU Smart.js прошивкой, подключился, пытаюсь "замкнуть" GPIO 4, как GPIO.write(4,true), но ничего не выходит.. я что то делаю не так?

Спасибо
 

ixbase

New member
linux ???
smart.js-alpha1.1
./make.sh
CC user/sj_hal_esp.c -> build/sj_hal_esp.o
user/sj_hal_esp.c:1:20: fatal error: sj_hal.h: No such file or directory
[HASHTAG]#include[/HASHTAG] "sj_hal.h"
^
compilation terminated.
make: *** [build/sj_hal_esp.o] Error 1
Где искать недостающие файлы?
 

64-core CPU

New member
А есть ли где справочник, где указаны все функции этого языка программирования? Я имею ввиду не обычные функции JS, а те, которые были добавлены для "обвязки".
 

lsm

Разработчик Smart.js
Команда форума
А есть ли где справочник, где указаны все функции этого языка программирования? Я имею ввиду не обычные функции JS, а те, которые были добавлены для "обвязки".
Мы нового языка не делали, а только добавили функции для работы с сетью и железом.
Вот документация: https://www.cesanta.com/developer/smartjs#_javascript_api_reference

Дайте знать если будут вопросы!
 

alexsk

New member
Попробовал данную прошивку/фреймворк. Из коробки не полетело. Точнее с грехом пополам поставить удалось, но сервер поднять так и не вышло - нет у объекта Http метода createServer. Ставил последнюю "бету" из гита - https://github.com/cesanta/smart.js/releases

С загрузкой файлов тоже были танцы с бубнами - через чипс файлы заливаются с ошибками (в содержимом местами мусор).

Собственно вопроса два - поддерживается ли esp8266 201 (может в этом дело?), и как правильно поднять http-сервер?
 

lsm

Разработчик Smart.js
Команда форума
@alexsk - пробуйте не бету, а текущий билд, ссылки на https://github.com/cesanta/smart.js#documentation-and-downloads
С загрузкой файлов через чипс - да, есть такая проблема. Мы для этого DAV сделали, но и он пока работает нестабильно, работаем над этим.
 

alexsk

New member
@lsm, спасибо, вечером попробую еще раз. :) Еще вопрос, насколько реализация JS соответствует стандарту? И какому, кстати? В доках вроде бы где-то ES6 упомянался... Какие вообще в этом плане сейчас есть ограничения?
 
Последнее редактирование:

lsm

Разработчик Smart.js
Команда форума
@lsm, спасибо, вечером попробую еще раз. :) Еще вопрос, насколько реализация JS соответствует стандарту? И какому, кстати? В доках вроде бы где-то ES6 упомянался... Какие вообще в этом плане сейчас есть ограничения?
Стандарт - ES5.
Сейчас есть ряд несоответствий стандарту. Мы используем ECMA 262 test suite , который для ES6. Покрытие на данный момент - около 60%.
 
"А сейчас же нам важно получить фидбек. Нравится ли? Чего не хватает? Что лишнее? Интересно ВСЁ!"
Asm, СИ, С++, Arduino, Lua, Питон, ява есть на ESP8266. Не хватает Бейсика и Фортрана :)
При этом у всех систем выше C++ одни и те-же ошибки. :(
На яве можно писать под ESP8266? можно по подробнее что то не нашёл не какой инфы по этому поваду.
 

joviallix

New member
А как собрать новый билд через докер? Скачал последнюю версию и видимо инструкция уже весьма устарела.
Я же не могу просто набрать make в докер консоли, тупо make нет в системе.
Запустил C:/Users/smart.js/smartjs/platforms/esp8266/tools/make.sh, скачались образы докера и запустилась компиляция (что нужно запускать make.sh из tools нигде не написанно)
но сборка завершилась неудачей:

Код:
  CC    /cesanta/smartjs/platforms/esp8266/build/posix_sjs_build/sys_config.c -> /cesanta/smartjs/platforms/esp8266/build/posix_sjs_build/sys_config.o
  GEN   /cesanta/smartjs/platforms/esp8266/build/posix_sjs_build/build_info.c
: No such file or directory
make[1]: *** [/cesanta/smartjs/platforms/esp8266/build/posix_sjs_build/build_info.c] Error 127
make[1]: Leaving directory `/cesanta/smartjs/platforms/posix'
make: *** [/cesanta/smartjs/platforms/esp8266/build/posix_sjs_bin/smartjs] Error 2
 

alashkin

Разработчик Smart.js
Команда форума
А как собрать новый билд через докер? Скачал последнюю версию и видимо инструкция уже весьма устарела.
Я же не могу просто набрать make в докер консоли, тупо make нет в системе.
Приветствую.
На вопрос как - могу ответить "запустить make.sh" =). Но похоже это сломалось.
Я погляжу что как, но давайте уточним сначала:
1. Widows какой версии?
2. Docker какой версии?
3. Вы make.sh запускаете из консоли докера, его SSH, из cmd.exe или ещё как?
4. Как я понимаю, всяческих mingw в системе не установалено?
5. Вы что собираете? Текущую версию с github/smartjs?
 

joviallix

New member
@alashkin Спасибо за ответ. Поехали:
1. Windows 10 (обновляется регулярно)
2. Docker самый свежий, вчера скачал
Код:
$ docker -v
Docker version 1.10.3, build 20f81dd
3. После установки докера, появилось приложение Docker Quickstart Terminal, через него и запустил. Это консоль mingw64 (Кстати, этот момент в Вашей документации совсем не описан. Я понимаю что есть и cmd и PowerShell и консолько самой виртуалки и тд, но нет даже названия образа, получается без make.sh и образ не скачать и на его консоль не попасть. Можно конечно посмотреть в файле sdk.version, но это ведь уже ковырять надо все)
4. У меня стоит git с его mingw оберткой и может еще какой-то mingw завалялся, но в PATH врялти прописаны
5. Выкачал последнюю версию с репозитория "GitHub - cesanta/smart.js: Smart.js is a full-stack IoT platform including firmware and cloud components available for ESP8266." хочу собственно собрать smart.js

PS. Не сочтите это все за претензию :) Я очень рад что есть Ваш проект и собираюсь им так же радостно пользоваться.
Просто пока документация немного розниться с новыми версиями, и это нормально, так часто бывает.
 

alashkin

Разработчик Smart.js
Команда форума
@alashkin Спасибо за ответ. Поехали:
PS. Не сочтите это все за претензию :) Я очень рад что есть Ваш проект и собираюсь им так же радостно пользоваться.
Просто пока документация немного розниться с новыми версиями, и это нормально, так часто бывает.
Ok, сейчас попробую.
Даже если и претензия - то это OK =).
У нас Windows постоянно выпадает из поля зрения, стараемся это изменить, но у нас в команде нет никого, что бы Windows использовал на постоянной основе, поэтому с ней чудеса временами происходят.
PS: пошёл проверять, отпишусь по результатам.
 
Сверху Снизу