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

Sming Open Source Framework для нативной разработки прошивок ESP8266

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

Метки:
  1. verzi

    verzi Новичок

    Сообщения:
    23
    Симпатии:
    1
    Подскажите, что нужно убрать в Маке файле, что бы каждый раз при прошивке не стиралась файловая система?
     
  2. Negor

    Negor Новичок

    Сообщения:
    13
    Симпатии:
    1
    У меня тоже вопрос про Makefile. Заюзал grunt чтобы собирать webgui для проекта - куда вставить вызов команды чтобы перед заливкой файлов(сборкой spiff image) запускался grunt ?
     
  3. GFX

    GFX Новичок

    Сообщения:
    3
    Симпатии:
    0
    Добрый день. Переустановил виндовс и снова проблема, не компилируются примеры.
    Ошибка (раскрыть)

    21:57:51 **** Build of configuration Sming for project Basic_Blink ****
    make all
    LD out/build/app.out
    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'
    c:/Espressif/ESP8266_SDK/lib\libmain.a(app_main.o): In function `user_uart_wait_tx_fifo_empty':
    (.irom0.text+0x458): undefined reference to `user_rf_pre_init'
    collect2.exe: error: ld returned 1 exit status
    make: *** [out/build/app.out] Error 1

    21:58:05 Build Finished (took 14s.641ms)
    Ставил через команду
    choco install sming -y, в настройках эклипс прописал, что ему опять не нравится непонятно
    SMING_HOME C:\tools\sming\Sming
    ESP_HOME C:\Espressif

    "Починил" - переименовал папку с SDK, взял версию _110, но как правильно починить чтобы с последней версией работало?
    Рано обрадовался, работают не все примеры, выдает теперь
    2 (раскрыть)

    22:25:16 **** Build of configuration Sming for project Basic_AirUpdate ****
    make all
    C+ /C/tools/sming/Sming/appinit/user_main.cpp
    C+ app/application.cpp
    AR out/build/app_app.a
    LD out/build/app.out
    out/build/app_app.a(application.o): In function `connectOk()':
    c:/tools/sming/Sming/SmingCore/Boards.h:17: undefined reference to `StationClass::waitConnection(Delegate<void ()>)'
    out/build/app_app.a(application.o): In function `init()':
    C:\tools\sming\Basic_AirUpdate/app/application.cpp:41: undefined reference to `StationClass::waitConnection(Delegate<void ()>)'
    collect2.exe: error: ld returned 1 exit status
    make: *** [out/build/app.out] Error 1

    22:25:19 Build Finished (took 3s.97ms)

    Заработало, после добавления строчки extern "C" void __attribute__((weak)) user_rf_pre_init(void);
     
    Последнее редактирование: 15 июн 2015
  4. anakod

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

    Сообщения:
    314
    Симпатии:
    100
    GFX, по последнему SDK кое что обновляли (буквально сегодня) можете протестировать на последней версии.

    Но, имхо, не стоит гнаться за цифорками в китайских SDK, далеко не всегда вместе с ними следует реальная стабильность или функциональность. Кроме того, в наиболее проблемных моментах типа espconn, Sming и так уже предоставляет собственное решение. Так что возможно Вам вовсе не стоит торопиться переходить с версии 1.1.0, которая себя точно хорошо зарекомендовала.
     
  5. programmer

    programmer Читатель

    Сообщения:
    33
    Симпатии:
    7
    Я тут про Memory Layout почитал, вроде разобрался.. Сейчас в Sming PROGMEM и сопутствующие функции являются просто заглушками, а что если заменить их на что-то примерно такое:
    Код (Text):
    1. #define PROGMEM __attribute__((aligned(4))) ICACHE_RODATA_ATTR
    2.  
    3. uint8_t pgm_read_byte(const void* pgm_addr) {
    4.     uint8_t pgm_tmp_byte[4];
    5.     uint32_t addr = (uint32_t)pgm_addr;
    6.     ets_memcpy(&pgm_tmp_byte, (const void *)(addr & ~3), 4);
    7.     return pgm_tmp_byte[addr & 3];
    8. }
    А то, в тот же шрифт из Adafruit_GFX занимает RAM и как-то это нехорошо :) Пусть PROGMEM по аналогии с AVR/Arduino сидит в флеше.
     
    Последнее редактирование: 16 июн 2015
  6. anakod

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

    Сообщения:
    314
    Симпатии:
    100
    programmer, я думаю что это хорошая идея.
     
    programmer нравится это.
  7. programmer

    programmer Читатель

    Сообщения:
    33
    Симпатии:
    7
    Ок, допишу и сделаю pull request.
     
  8. anakod

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

    Сообщения:
    314
    Симпатии:
    100
    Прекрасно, спасибо.
     
  9. GFX

    GFX Новичок

    Сообщения:
    3
    Симпатии:
    0
    Добрый день. Скажите, пожалуйста, как перевести из float в string или массив char, printf не работает и все его вариации?
     
  10. jcmvbkbc

    jcmvbkbc Читатель

    Сообщения:
    179
    Симпатии:
    17
    Альтернативные варианты доступа к данным размещённым во FLASH: https://github.com/SuperHouse/esp-open-rtos/issues/11
     
    Victor и programmer нравится это.
  11. programmer

    programmer Читатель

    Сообщения:
    33
    Симпатии:
    7
    Спасибо, изучаю... А то уже бахнул пулл-реквест, используя код выше.
     
  12. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.225
    Симпатии:
    389
    Заодно посмотрите как в Arduino IDE сделано
     
    programmer нравится это.
  13. programmer

    programmer Читатель

    Сообщения:
    33
    Симпатии:
    7
    Но я думал (раскрыть)
    Но я думал.png
     
  14. pvvx

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

    Сообщения:
    10.345
    Симпатии:
    1.352
    Тогда не работает объединение одинаковых констант и строк в имеющихся версиях gсс и от этого скоро ограничение в 1 Mегабайт "кешируемой" области от начала flash :).
    Все эти варианты - временные, для совместимости с Китай-глюко-SDK и с такими ухищрениями не работает более половины функций из SDK и либ gсс.
     
  15. programmer

    programmer Читатель

    Сообщения:
    33
    Симпатии:
    7
    Victor нравится это.
  16. anakod

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

    Сообщения:
    314
    Симпатии:
    100
    Добавлена поддержка WebSockets.
    А так же хороший пример визуализации некоторых возможностей этой технологии.
     
    programmer нравится это.
  17. pvvx

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

    Сообщения:
    10.345
    Симпатии:
    1.352
    А зачем там, в прошивке, код sha1 ? Он есть в ROM-BIOS и работает.
    Код в ROM-BIOS аналогичен этому.
    Пример работы с ключом websocket.
    base64enc_tab[] есть в RAM_BIOS: [HASHTAG]#define[/HASHTAG] base64enc_tab ((const uint8 * )(0x3FFFD600))
    base64dec_tab тоже есть в RAM_BIOS, но только 128 символов.
    Правда процедуры из ROM-BIOS с base64 не катят - они заточены для подпрограмм паролей WiFi, если работаем с WiFi управляемым ROM-BIOS в спец. "сикретном" режиме* ...
    * "сикретном" для Espressif.
     
    Последнее редактирование: 20 июн 2015
    programmer нравится это.
  18. anakod

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

    Сообщения:
    314
    Симпатии:
    100
    pvvx, да Вы правы, изначально я как раз планировал использовать встроенный в ROM хешер, но затем лень стало заморачиваться когда увидел несколько компактна данная реализация. Но думаю порефакторю эту часть, особенно если начну работу над HTTPS.
     
  19. pvvx

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

    Сообщения:
    10.345
    Симпатии:
    1.352
    Компактна? Итоговый код не такой и компактный, да занимаете и так малую RAM :)
    Тьфу, забыл, для УрДурино всё пойдет - там безразлично. :)

    Надо перерабатывать LwIP - там много лишнего и много ресурса жрет, т.к. не адаптирован под архитектуру проца ESP8266. Не пробовали ещё странслировать только его и посмотреть итого?
     
    Последнее редактирование: 20 июн 2015
  20. anakod

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

    Сообщения:
    314
    Симпатии:
    100
    А где можно информацию по base64 функциям/таблицам в ROM посмотреть более подробно? В OpenSDK оно уже есть?

    Память потребует любая реализация хеша, в том числе и встроенная в ROM (она требует выделения структуры).

    Что-то конкретное?
     
    Последнее редактирование: 20 июн 2015

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