Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Sming Open Source Framework", создана пользователем JustACat, 23 мар 2015.

  1. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    В их сдк всегда так - сегодня добавили ошибку, завтра убрали, послезавтра опять добавили, при чем ту же.
     
  2. pvvx

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

    Сообщения:
    9.379
    Симпатии:
    1.320
    Выпиливайте только необходимые obj из их SDK. Я так поступаю - проблем уже долго нет, кроме программных патчей-обходов их ошибок. Совсем лажевые obj меняю на свои.
    В новом SDK 1.0.1 они понавтыкали кое как примеров из LwIP - только память жрет. SNTP к примеру. Пример от LwIP и так стыкуется и компилится, без их внедренных ошибок.
     
    Последнее редактирование: 29 апр 2015
  3. Alexander V. Ribchansky

    Alexander V. Ribchansky Читатель

    Сообщения:
    35
    Симпатии:
    9
    Собрал под esp-open-sdk сегодняшнем (в котором espressif sdk 1.0.1) MeteoControl под старым Smig-om и новым. Старый - работает. новый - нет. Собирал, как Вы просили make rebuild.

    Вот размеры РАБОЧЕЙ прошивки

    shurik@bobooka:~/dev/Sming.good/MeteoControl$ ls -l out/firmware/
    итого 576
    -rw-r--r-- 1 shurik admins 43248 Апр 29 20:09 eagle.flash.bin
    -rwxr-xr-x 1 shurik admins 261388 Апр 29 20:09 eagle.irom0text.bin
    -rw-r--r-- 1 shurik admins 277772 Апр 29 20:09 eagle.irom0text.fs.bin

    Вот размеры НЕ РАБОЧЕЙ прошивки
    shurik@bobooka:~/dev/Sming/MeteoControl$ ls -l out/firmware/
    итого 484
    -rw-r--r-- 1 shurik admins 37936 Апр 29 20:14 eagle.flash.bin
    -rwxr-xr-x 1 shurik admins 214501 Апр 29 20:14 eagle.irom0text.bin
    -rw-r--r-- 1 shurik admins 230885 Апр 29 20:14 eagle.irom0text.fs.bin

    Пробовал собирать проект с новым Смигом и СТАРЫМ правленым мною мейком - прошивка сперва выдавала ошибки, сразу после заливки, а после рестарта - просто мусор в консоли и вис.
    Вроде даже пробовал подпихивать в сегодняшний esp-open-sdk esp sdk в плоть до 1.0.1 и новый смиг с новым мейком не создавал рабочие прошивки.. хелп.. :(
     
  4. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    А Вы точно не перепутали местами рабочий и нет? По размером похоже как будто бы наоборот.
     
  5. Alexander V. Ribchansky

    Alexander V. Ribchansky Читатель

    Сообщения:
    35
    Симпатии:
    9
    Неа.. сам удивился.. листинг привел спеиально бОльший, чем надо.. глянте, в первом листинге каталог sming.good зовется.. полные штаны странности; (
     
  6. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    Alexander V. Ribchansky, попробуйте пожалуйста на последней версии из репозитория. Я перевел Sming на обновленную библиотеку libgcc, что дало существенный объем дополнительного пространства в IROM.
    Спасибо @pvvx за research!

    PS Не забудьте предварительно обновить Makefile, если Вы работаете на собственном проекте.
     
    Alexander V. Ribchansky нравится это.
  7. Alexander V. Ribchansky

    Alexander V. Ribchansky Читатель

    Сообщения:
    35
    Симпатии:
    9
    В результате тестов выяснилось, что самый новый Smig из репозитория РАБОТАЕТ с esp-sdk 1.0.0 и 1.0.1_b1
    и НЕ работает с 1.0.1_b2 и просто 1.0.1.
    Для теста собирал HttpServer_Bootstrap - с рабочими сдк оно просто запускалось и :) работало. с НЕ рабочими сдк оно запускалось и входило в вечный цикл scandone-reconnect, то же, что уже тут мелькало. То есть собака живет в некоторой несовместимости китайского с русским, а именно сдк и Смиг-а.
    Но радует то, что хоть с двумя сдк от китайцоФ смиг работает! И субъективно - работает как-то лучше, чем то, что я на тех же тестах наблюдал с сдк 1.0.0 и старым смигом. Раньше странички от МетеоКонтрол могла через три на десятый раз загрузиться при перманентном обновлении ее в браузере, а с новым комплектом сдк + смиг у меня так и не получилось "задолбать" МетеоКонтрол, чтоб страничка не загрузилась при рефреше. Может ли это улучшение с работами внутри смига быть связано или мне просто кажется?

    Ну и давно пора от меня СПАСИБО сказать всем причастным к проекту Smig! Я даже мечтать не мог, чтоб такой функционал на такой мелочевке, как esp8266 можно было заиметь! ФС и темплейты для веба с возможностью грузить jquery + bootstrap etc это нечто... Надеюсь со временем глюки отловятся и это станет нашим надежным инструментарием разработки.
     
    JustACat нравится это.
  8. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    Ну вот и у меня, видимо, так же. Так как пока что висит (у меня) именно 1.0.1_b1 - на нем все работает нормально.
     
  9. pvvx

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

    Сообщения:
    9.379
    Симпатии:
    1.320
    Я же говорил, что поехали конфиги Lwip. Сдвиг в структуре pсb. Добавился один dword в середке. По этой причине OpenLwip 1.4.1 несовместим.
    workspace\Web_Base\app\main\eagle_lwip_if.c дан в моей "свалке", но в нем так и не найдено "???"
    ??? = queue;
    ???+4 = queue;
    И практика показала, что использовать "обгрызанную" либу liblwip.a от Espressif пока проще и надежнее.
    Иначе, при OpenLwip 1.4.1 вам грозит:
    1) Потери памяти при работе.
    2) Несовместимость функционирования всех процедур использующих ссылки в pcb.
     
    Последнее редактирование: 30 апр 2015
  10. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    Да, проблема именно в Open LWIP, в нашем это чате уже протестировали и подтвердили.
    pvvx, может быть Вы в таком случае еще можете подсказать конкретное место? Или простым добавлением поля данная проблема не решается?
     
  11. pvvx

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

    Сообщения:
    9.379
    Симпатии:
    1.320
    Я ошибся - не struct tcp_pcb поехала, а struct netif. В Lwip были добавлены опции, похоже связанные с broadcast. Дальше не разбирал - нет смысла.
    Добавка была переписана на свой лад китайцами. Т.е. стандарт заменен на что-то своё.
    У себя я добавил поле какую-то опцию в lwipopts.h (счас не помню. погляжу, но смысл то в этом есть, пока не найдены "???" ?)
    В eagle_lwip_if_alloc() выделяется память под queue = (void *) pvPortMalloc(sizeof(struct ETSEventTag) * QUEUE_LEN); // pvPortZalloc(80 байт)
    При включенной AP и ST разные размеры занятой heap в SDK. Разница на включение каждой более 1.5 килобайта. При выключении не вся память освобождается. Только рестарт помогает. Но потерь при включении/отключении нет. А эти "???" и есть указатель сохранения на занятую память и может быть задействовано далее в коде. Но проц и компилятор используемый Espressif (от xtensa) любит работать по указателям со смещением для лучшей оптимизации кода чем ваш транслятор и дизасм с поиском где эта переменная может быть задействована усложняется... Для этого необходим доскональный разбор всего SDK, а этого ещё нема...
     
    Последнее редактирование: 30 апр 2015
  12. ntil

    ntil Новичок

    Сообщения:
    8
    Симпатии:
    0
    метод TcpClient::send при попытке повторного использования сразу подряд приводит к крашу. в результате все что его пользует или наследует не может отпрвалять более 255 байт.
    выявлено при попытке переделать HttpClient для поддержки кастомных запросов (пилю REST)
     
  13. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    ntil, HTTP клиент отправляет даные блоками по ~1.5 КБ. Так что дело точно не в этом, чтобы сказать что-то более определённое нужно видеть код. На что завязана отправка - onReadyToSendData?
     
  14. ntil

    ntil Новичок

    Сообщения:
    8
    Симпатии:
    0
    а где у HTTP клиента можно определить такой каллбэк? это тот, который наследуется из TcpClient ?
    как им пользоватся?
     
  15. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    ntil, посмотрите в примере отправки данных на NarodMon. Там есть правда именно на TCP клиенте, но суть та же должна быть.
     
  16. pvvx

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

    Сообщения:
    9.379
    Симпатии:
    1.320
    А для Google Chrome надо отправлять по ~3 килобайта (2 x MSS). И сделайте выключатель nagle в LwIP. Иначе тормоз - народ жалуется :) Как вырубите Нейгла сразу пойдет по 3 кило в Хроме (двумя пакетами на опережение ACK)
    Далее будите бороться с этим http://esp8266.ru/forum/threads/esp...abotaj-1000-za-60-sekund.171/page-3#post-5780
     
    Последнее редактирование: 1 май 2015
  17. ntil

    ntil Новичок

    Сообщения:
    8
    Симпатии:
    0
    проблема с TcpClient решена .
    проблема с HttpClient будет решена в процессе его переделки для поддержки кастомных запросов.
     
  18. verzi

    verzi Новичок

    Сообщения:
    23
    Симпатии:
    1
    Подключил обычный светодиод и залил следующий код:
    код (раскрыть)

    Код (Text):
    1. #include <user_config.h>
    2. #include <SmingCore/SmingCore.h>
    3.  
    4. // Put you SSID and Password here
    5. #define WIFI_SSID "******"
    6. #define WIFI_PWD "******"
    7. #define LED_PIN 2 // GPIO2
    8.  
    9. Timer procTimer;
    10. int state = 0;
    11.  
    12. FTPServer ftp;
    13.  
    14. // Will be called when WiFi station was connected to AP
    15. void connectOk()
    16. {
    17.     Serial.println("\r\nI'm CONNECTED:");
    18.     Serial.println(WifiStation.getIP().toString());
    19.  
    20.     // Start FTP server
    21.     ftp.listen(21);
    22.     ftp.addUser("me", "123"); // FTP account
    23.     // You can also use special FTP comand: "fsformat" for clearing file system (for example from TotalCMD)
    24. }
    25.  
    26. // Will be called when WiFi station timeout was reached
    27. void connectFail()
    28. {
    29.     Serial.println("I'm NOT CONNECTED. Need help!!! :(");
    30.  
    31.     // .. some you code for configuration ..
    32. }
    33.  
    34. void blink()
    35. {
    36.     analogWrite(LED_PIN, state);
    37.     Serial.println(state);
    38.     state = state+1;
    39.     if (state == 255) state = 0;
    40. }
    41.  
    42. void init()
    43. {
    44.     Serial.begin(SERIAL_BAUD_RATE); // 115200 by default
    45.     Serial.systemDebugOutput(true); // Enable debug output to serial
    46.  
    47.     fileSetContent("example.txt", "hello world!");
    48.     fileSetContent("data.bin", "\1\2\3\4\5");
    49.  
    50.     WifiStation.enable(true);
    51.     WifiStation.config(WIFI_SSID, WIFI_PWD);
    52.     WifiAccessPoint.enable(false);
    53.  
    54.     // Run our method when station was connected to AP (or not connected)
    55.     WifiStation.waitConnection(connectOk, 20, connectFail); // We recommend 20+ seconds for connection timeout at start
    56.     pinMode(LED_PIN, OUTPUT);
    57.     procTimer.initializeMs(200, blink).start();
    58. }
    59.  

    При подключении по ftp, передаче и приеме файлов он начинает моргать.
    Это нормально или PWM надо как то по другому делать?
    Заранее спасибо за конструктивные ответы.
     
  19. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    verzi, емнип, проблема именно в GPIO2. Как-то где-то обсуждалось это. Если вешать на другой GPIO там на 12-13-14, то не моргает. Ну и питание еще хорошее, т.к. оно как раз при передаче может просаживаться, кондер хороший не помешал бы. Ну и последнее - начинает моргать - это как? Яркость просто чуть меняется, или вот прямо гаснет и зажигается?
    У меня сейчас на GPIO13 статусный светодиод висит - с ним все четко, горит только по команде, при передаче не мерцает вроде вообще. Резистором ток через диод ограничен всего на 2-5 mA. (все равно для ноги ESP 12 mA - максимум)
    На GPIO12 повесил перезагрузку подключенной к ESP аврки (Arduino). Пришлось через оптопару для согласования уровней :) Конкретно до перепрошивки Arduino руки еще не дошли, но уже работает запуск режима OTA программирования по команде извне (по UDP), скачивание уже подготовленной (из Intel HEX) прошивки с поднятого Wed-сервера во flash модуля и перезагрузка Arduino. Дальше по плану: оно должно загрузить эту прошивку через бутлоадер в Arduino.
     
  20. verzi

    verzi Новичок

    Сообщения:
    23
    Симпатии:
    1
    Хорошо так моргает, как будто дублирует этот статусный светодиод. Питание нормальное подключил, разные ноги попробовал, не помогает. Еще, если присмотреться, то видно что диод чуть чуть тухнет примерно раз в секунду, даже если передача данных не происходит. Предполагаю что это какой то системный таймер срабатывает. После залил свою старую прошивку на nodemcu, на ней все нормально. Светодиод горит как ему и положено, на заданном уровне яркости. При передачи данных не моргает.
     

Поделиться этой страницей