Общие баги/глюки/проблемы в пакете Sming

anakod, pvvx, во вложенном файле лог tcpdump при запросе "большой" веб-странички из инета, за ним лог запроса маленького json-а и в конце лог запроса той же "большой" странички из локалки.
Если криво предоставил логи - пните, попробую как-то иначе...
 

Вложения

alexhi

Member
Не совсем, в Sming полностью свой сетевой стек, никак не завязанный с Ардуино библиотеками (на базе LWIP).

pvvx тут совершенно прав, чтобы сказать что-либо о причинах проблем нужен wireshark лог.


Попробуйте первым делом пересобрать проект SmingFramework.
Cпасибо, после пересборки Sming все заработало.
 

pvvx

Активный участник сообщества
Не совсем, в Sming полностью свой сетевой стек, никак не завязанный с Ардуино библиотеками (на базе LWIP).
Но обращения к TCP-стеку строят через интерфейс Arduino. А он "не заточен" под сетевые протоколы. Будите долго биться, пока не напишете раздельные драйвера по классам. HTTP - это уже не TCP-стек, а протокол уровнем над ним и имеет отличия для клиента и сервера. Класса драйвера - сервер-HTTP или клиент-HTTP я в Sming не наблюдаю...
Web-socket-а тоже нет... Вижу только очередное обрамление LwIP, как у espconn. :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
pvvx, дык как не наблюдаете классов под http сервер и клиент.. они ж есть.. https://github.com/anakod/Sming/tree/master/Sming/SmingCore/Network
Там поддержка не выше HTTP 0.9. :) А такого стандарта даже нет.
"HTTP/2 - 11 февраля 2015 года опубликованы финальные версии черновика следующей версии протокола."
К "серверу HTTP" клиент лезет с запросом HTTP 1.1 и , а разбора этого нет...
И очень желательна всем поддержка ответа в "Transfer-Encoding: chunked". Для её реализации не требуется памяти, а наоборот сокращает расходы на большие буфера..
 
Последнее редактирование:

programmer

New member
Продолжая тему I2C - теперь не могу наладить связь с Arduino (ATmega***). I2C сканер находит, да, но дальше дело не идет - прочитать что-нибудь у Slave на базе Arduino не получается (естественно Arduino легко читает у другой Arduino - это я проверил, на всякий). Логический анализатор мне тоже особо не помог... anakod, попробуйте, пожалуйста - наверняка у вас есть Arduino :)

Код для Arduino:
Код:
#include <Wire.h>

void setup()
{
  Wire.begin(0x55);
  Wire.onRequest(requestEvent);
}

void loop()
{

}

// function that executes whenever data is received from master
void requestEvent()
{
  Wire.write(100);
}
Код для Sming:
Код:
#include <user_config.h>
#include <SmingCore/SmingCore.h>

Timer loopTimer;

void loop()
{
    WDT.alive();

    Serial.print(millis() / 1000);
    Serial.print(": ");

    Wire.beginTransmission(0x55);
    Wire.requestFrom(0x55, 1);
    while(Wire.available()) {
        Serial.print("READ ");
        Serial.print((int)Wire.read());
        Serial.println("");
    }
    Wire.endTransmission(true);

    Serial.println("");
}

void init()
{
    Serial.begin(SERIAL_BAUD_RATE);
    Serial.systemDebugOutput(true);

    Wire.pins(2, 4); // ваши пины
    Wire.begin();

    WifiAccessPoint.enable(false);
    WifiStation.enable(false);

    Wire.beginTransmission(0x55);
    if (Wire.endTransmission() == 0) {
        Serial.println("EXISTS!");
    } else {
        Serial.println("NOT EXISTS :(");
    }

    loopTimer.initializeMs(500, loop).start();
}
Arduino к Arduino (для сравнения..)
Снимок экрана 2015-06-11 в 23.47.48.png

ESP к Arduino
Первый раз:
Снимок экрана 2015-06-11 в 23.48.06.png

Последующие:
Снимок экрана 2015-06-11 в 23.53.46.png
 

pvvx

Активный участник сообщества
Логический анализатор мне тоже особо не помог...
Почему-же? Он четко показывает, что I2C на первом скрине на скорости до 100кГц, а на последующих - более 600кГц.
"Первым общедоступным микропроцессором был 4-разрядный Intel 4004, представленный 15 ноября1971 года корпорацией Intel. Он содержал 2300 транзисторов, работал на тактовой частоте 92,6 кГц"
Старые датчики, низкие скорости .... :) Телетайп на катушках ещё не подключали?
(Пятница)
PS: Увеличьте задержку low CLK в I2C драйвере.
 
Последнее редактирование:

programmer

New member
PS: Увеличьте задержку low CLK в I2C драйвере.
Спасибо, до этого пробовал только ускорить I2C в Arduino - не помогло. Увеличил (пробовал разные и смотрел, что выходит) задержку в I2cMaster.h - появилась надежда, но... не особно помогло, стало принимать мусор, который и софт анализатора понять не может.

Погуглил и нашел, что люди успешно состыковали ESP с Arduino, используя NodeMCU. Посмотрел их реализацию, адаптировал как есть в Sming - заработало! Работает правда медленно, на 50 кГц. Завтра буду смотреть в чем отличие от Sming'a.
 
Последнее редактирование:

clinkme

New member
Ошибка в Sming при использовании с SDK 1.1.0 и выше:
Код:
c:/Espressif/ESP8266_SDK/lib\libmain.a(app_main.o): In function`user_uart_wait_tx_fifo_empty':
(.irom0.text+0x340): undefined reference to `user_rf_pre_init'
В appinit/user_main.c пропущено extern "C" при определении функции, должно быть
Код:
extern "C" void __attribute__((weak)) user_rf_pre_init(void)
 

Tohakrat

New member
Обновился сегодня, до этого не обновлялся недели 2. Всплыла проблема - при передачи файла в окне терминала появляются строки onreadytosenddata, т.е загрузка прерывается. Проблема на httpserverbootstrap и airupdater при закачке прошивки.
 

Вложения

Tohakrat

New member
Соединялся с точкой доступа на ноуте. На следующий день все стало ок, т.е проблема была в точке доступа (передергивал ее несколько раз).
Тестировал airupdater

if (outputDebug) ets_uart_printf("Firmware upgrade finished\n");
((void (*)(void))0x40000080)(); // Hardcore reset vector
ets_wdt_enable();
while (1)
; // Reboot anyway!

В посл строке вы зацикливаетесь, возможно моя точка доступа от этого ложится? Может стоит сначала от нее отключиться?
 

anakod

Moderator
Команда форума
В этом месте должна происходить перезагрузка. Для того чтобы она была возможно перезагрузить ESP один раз после прошивки (чтобы он вышел из режима программирования). После этого AirUpdate будет перезагружаться сам.
 

glonium

New member
Установил всё как по мануалу, установил примеры. Почему то не компилиться, пишет
Description Resource Path Location Type
'PIN_PULLDWN_DIS' was not declared in this scope Digital.cpp /SmingFramework/SmingCore line 78 C/C++ Problem
'PIN_PULLDWN_DIS' was not declared in this scope Digital.cpp /SmingFramework/SmingCore line 78 C/C++ Problem
'PIN_PULLDWN_DIS' was not declared in this scope Digital.cpp /SmingFramework/SmingCore line 78 C/C++ Problem
'PIN_PULLDWN_DIS' was not declared in this scope Digital.cpp /SmingFramework/SmingCore line 92 C/C++ Problem
'PIN_PULLDWN_DIS' was not declared in this scope Digital.cpp /SmingFramework/SmingCore line 92 C/C++ Problem
'PIN_PULLDWN_DIS' was not declared in this scope Digital.cpp /SmingFramework/SmingCore line 92 C/C++ Problem
'PIN_PULLDWN_EN' was not declared in this scope Digital.cpp /SmingFramework/SmingCore line 86 C/C++ Problem
'PIN_PULLDWN_EN' was not declared in this scope Digital.cpp /SmingFramework/SmingCore line 86 C/C++ Problem
'PIN_PULLDWN_EN' was not declared in this scope Digital.cpp /SmingFramework/SmingCore line 86 C/C++ Problem
Function 'PIN_PULLDWN_DIS' could not be resolved Digital.cpp /SmingFramework/SmingCore line 78 Semantic Error
Function 'PIN_PULLDWN_DIS' could not be resolved Digital.cpp /SmingFramework/SmingCore line 92 Semantic Error
Function 'PIN_PULLDWN_EN' could not be resolved Digital.cpp /SmingFramework/SmingCore line 86 Semantic Error
mingw32-make.exe: *** [out/build/../Sming/SmingCore/Digital.o] Error 1 HttpServer_AJAX C/C++ Problem
mingw32-make.exe: *** [out/build/../Sming/SmingCore/Digital.o] Error 1 Humidity_DHT22 C/C++ Problem
mingw32-make.exe: *** [out/build/../Sming/SmingCore/Digital.o] Error 1 Light_BH1750 C/C++ Problem
recipe for target 'out/build/../Sming/SmingCore/Digital.o' failed Makefile /HttpServer_AJAX line 330 C/C++ Problem
recipe for target 'out/build/../Sming/SmingCore/Digital.o' failed Makefile /Humidity_DHT22 line 330 C/C++ Problem
recipe for target 'out/build/../Sming/SmingCore/Digital.o' failed Makefile /Light_BH1750 line 330 C/C++ Problem
Suggested parenthesis around expression 'PIN_FUNC_SELECT((EspDigitalPins[pin].mux), (EspDigitalPins[pin].gpioFunc))' Digital.cpp /SmingFramework/SmingCore line 16 Code Analysis Problem
В чём дело не понятно
 

glonium

New member
Всё переустановил ничего не изменилось, не может найти PIN_PULLDWN_DIS и PIN_PULLDWN_EN
 

pvvx

Активный участник сообщества
Всё переустановил ничего не изменилось, не может найти PIN_PULLDWN_DIS и PIN_PULLDWN_EN
В https://github.com/anakod/Sming этих [HASHTAG]#define[/HASHTAG] нет. Они были в старых SDK (менее 1.1.0, в esp_iot_sdk/include/eagle_soc.h ) и всё-равно не работают. Вы пытаетесь страслировать что-то очень старое...
 
Установил по мануалу, через чоко (https://github.com/anakod/Sming/wiki/Windows-Quickstart). Установил примеры. ВЫбрал Basic_Blink, изменил Makefile-user.mk. При компиляции пишет это:
22:43:35 **** Incremental Build of configuration Sming for project Basic_Blink ****
make all
makefile:20: c:\tools\sming\Sming: Permission denied
makefile:20: /Makefile-project.mk: No such file or directory
make: *** No rule to make target `/Makefile-project.mk'. Stop.

Так понимаю виной всему вот это: makefile:20: c:\tools\sming\Sming: Permission denied Но я на всю папку изменял права на "Полный доступ" для всех. В чем косяк? На двух машинах (дом, работа) такая бяка)
 

alexhi

Member
Поставил свежий Sming стал перезагружаться модуль при таком коде:
int i = 0;
while (!digitalRead(0))
{
WDT.alive();
delay(1000);
Serial.print("Setting mode=");
Serial.print(i++);
}

В предыдущем все работало ок. delay делал меньше не помогает. В чем может быть дело? Спасибо.
 

Def461

New member
Поставил свежий Sming стал перезагружаться модуль при таком коде:
...
В предыдущем все работало ок. delay делал меньше не помогает. В чем может быть дело? Спасибо.
Попробуйте вместо 1 задержки на 1000мс:
Код:
WDT.alive();
delay(500);
WDT.alive();
delay(500);
Но я бы рекомендовал посмотреть в сторону Timer.
 

alexhi

Member
Я уменьшать delay уже пробывал пробывал , все равно перезагружается.
 
Сверху Снизу