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

Разработка ‘библиотеки’ малого webсервера на esp8266.

Тема в разделе "SDK и создание собственных прошивок", создана пользователем pvvx, 3 янв 2015.

  1. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
    Не работает Pull Down у I/O пинов. Опять Espressif обманул и написал в include\eagle_soc.h для SDK, что работает :mad:. У меня он практически как Pull UP работает...

    В новой версии всё добавлено для теста Pull UP + Pull Down + "Открытый коллектор" для управления в табличку GPIO....
     
    Последнее редактирование: 20 апр 2015
  2. lvm1976

    lvm1976 Новичок

    Сообщения:
    13
    Симпатии:
    0
    pvvx, при частом сохранении настроек память области настроек переполняется и тогда сохранение не происходит? или предусмотрен механизм перезаписи?
    Код (Text):
    1. bool ICACHE_FLASH_ATTR flash_save_cfg(void *ptr, uint16 id, uint16 size)
     
  3. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
    Там три блока (сектора) и переносится последние данные (по id), с алгоритмом "пофиг отключение питание в любой момент".
    Сложнее от туда удалить запись и этого не предусмотрено в коде :)
    Всё это для уменьшения кол-ва итераций записи/стирания flash...
     
    Последнее редактирование: 20 апр 2015
    Serjkruch и lvm1976 нравится это.
  4. lvm1976

    lvm1976 Новичок

    Сообщения:
    13
    Симпатии:
    0
    pvvx, помогите пожалуйста с отправкой GETa без ответки:(:rolleyes:
     
  5. AnonymUser

    AnonymUser Новичок

    Сообщения:
    27
    Симпатии:
    2
    сервер может работать без жесткого прописания ip? чтоб что пользователь не ввел в адресной строке - выдавать ему то что нужно или - неправильный ип - кастомную страницу ошибки(не 404)
     
  6. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
    В связи с реверсом старта SDK стало легче делать разные загрузчики для опроса датчиков.
    Скопировал сюда, разные мои сообщения, "чтобы было в куче":
    "Измерил предельную достижимую скорость загрузки специального "лоадера", после "ресета" (или deep-sleep) до начала опроса датчика:
    StartBiosPvLoaderTime.gif
    30 ms и уже идет опрос - шевелит портами с загруженного куска кода первого (не стандартного!) загрузчика из flash... WiFi выключен до второго загрузчика, который запустится если надо передавать, и весь процесс потребляет копейки.
    Эти 30 ms говорят о том, что если требуется засыпание менее чем на 100 ms, то лучше отключить таймер и процессы и использовать внутреннюю команду sleep у CPU ( он в ней тоже жрет очень мало) для ожидания инициализации датчиков или между ожиданием результатов с них.
    Но главное, что у данного загрузчика в доступе более 100 килобайт RAM, т.к. без SDK, а результаты замеров он пишет в RTC и в flash. Потом монстр SDK перешлет :) "

    "Лоадером" можно грузить разные "прошивки" если стоит большая Flash. "Прошивку" WEB сервера при этом можно использовать для конфигурации модуля.
    Стандартная загрузка c SDK WEB "свалки" занимает от 310 ms и где-то так-же, до 0.5 секунды получен ответ от dns и время с интернета уже у модуля, если он подключается к роутеру...
    Т.е., если у нас не сервер, а передаем что-то, то к концу 1-ой секунды от старта уже может быть передано 500 килобайт и далее 1 мегабайт в секунду...
    В итоге, если используем deep-sleep, то достаточно 1 секунды активности модуля для полной передачи накопленных состояний. Но, безусловно, всё зависит от удаленности сервера, пинга к нему. По тому и надо иметь распределенную сеть - на роутре должен быть хотя-бы аналог MQTT и никаких обращений к дальним IoT серверам модулем. Пусть этим занимается роутер - у него обычно ресурсов достаточно.
     
    Serjkruch нравится это.
  7. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
    Маленький вопросик - питание RTC через пятую ногу у чипа надо организовывать?
     
  8. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
  9. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    414
    Симпатии:
    75
  10. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
    Проблема со скоростью в Chrome решена. Китайцы установили по умолчанию nagle в LwIP. Скоро в новой версии...
    Chrome2.gif
    Но появилась новая, китайская - вылет по: lmac.c 599 при записи flash с HTTP. Опять вылезла, а они писали, что устранили :) :)
    Наверно задержек навставляли, но теперь их в PvSDK не хватает...
    Исправлю - закину новую версию.
    Понижение частоты CLK CPU в момент записи flash и работы WiFi похоже спасает дело.
    Но ошибка "lmac.c 599" и так не стабильная, не всегда вылетает. Пока оставлю патч на понижение CLK...
     
    Последнее редактирование: 21 апр 2015
    Serjkruch нравится это.
  11. AnonymUser

    AnonymUser Новичок

    Сообщения:
    27
    Симпатии:
    2
    смотрел тему от начала...такие хорошие показатели скорости,но у меня(esp-01,память не расширенная) при замерах почему то не больше 60кб/с
    а если картинка на странице (вес примерно 25кб) - она прогружается около 1-2сек
    ну с картинкой могу предположить,что там отдельный запрос и оно притормаживает.. не критично, но общая скорость почему такая низкая?(
     
  12. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
    Это "вылечено" c ГуглХромом в текущей версии.
    timelll23.gif -> timell29.gif
    Передача HEX Damp всей Flash в тексте:
    speedll26.gif
    Все претензии к браузеру :)
     
    Последнее редактирование: 22 апр 2015
  13. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
    В новой версии немного оптимизировал либы и включил все "инклуды". Транслируется с -Wall опцией.
    На первом этапе выудил в Free IRam : 10429 байт:
    Код (Text):
    1.  
    2.    Section|                   Description| Start (hex)|   End (hex)|Used space
    3. ------------------------------------------------------------------------------
    4.       data|        Initialized Data (RAM)|    3FFE8000|    3FFE8AC0|    2752
    5.     rodata|           ReadOnly Data (RAM)|    3FFE8AC0|    3FFE9A60|    4000
    6.        bss|      Uninitialized Data (RAM)|    3FFE9A60|    3FFF2650|   35824
    7.       text|            Cached Code (IRAM)|    40100000|    40105755|   22357
    8. irom0_text|           Uncached Code (SPI)|    40240000|    4026F450|  193616
    9. Total Used RAM : 42576
    10. Free RAM : 39344
    11. Free IRam : 10429
    Идем к оверлеям. Но UDK имеет неверные внутренние опции сборки и оверлеев на ней пока не будет.
    На Xplorer-6.0.2 всё Ok...
     
  14. lincinus

    lincinus Новичок

    Сообщения:
    17
    Симпатии:
    3
    уважаемый pvvx, ошибки сборки под линуксом
    >Текущая свалка ver 0.2.8 (25.04.15) на PvSDK version: 0.0.0 (b1)

    1) переведите пожалуйста следующие имена папок в нижний регистр, для совместимости
    Web_Base/app/user/Include а в makefile используется Web_Base/app/user/include
    Web_Base/app/main/Include на Web_Base/app/main/include

    2)в файлах tcp_srv_conn.c, tcp_terminal.c, web_srv.c
    в [HASHTAG]#include[/HASHTAG] желательно заменить \ на / , вроде бы виндовые компиляторы должны понимать пути в [HASHTAG]#include[/HASHTAG] с прямыми слешами.
    я использовал такую команду

    Код (Text):
    1. find ./ -name web_srv.c -exec sed -i '/^#include/s&\\&/&g' '{}' \;
    для сборки использовал инструкцию по установке компилятора отсюда
    https://github.com/anakod/Sming/wiki/Linux-Quickstart#
    с установкой переменных окружения https://github.com/anakod/Sming/issues/10
    (anakod, спасибо)
     
  15. sharikov

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

    Сообщения:
    602
    Симпатии:
    52
    to pvvx
    я не большой знаток английского но по моему текст в вебморде "HexDamp..." неправильный.
    По моему надо писать HexDump.
     
  16. pvvx

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

    Сообщения:
    9.295
    Симпатии:
    1.319
    Да. Я знаю :) Это защита от коммерции. Чтобы без труда было не продать. :)
    Потом исправлю. Там много ошибок, да по английски писать не умею - только читать :)
    Т.е. винда значит круче линукса? :)
     
  17. lincinus

    lincinus Новичок

    Сообщения:
    17
    Симпатии:
    3
    можно и так сказать.
    Спасибо за ваш труд.

    ещё
    1) было бы здорово если PVFS2 был бы кросс платформенным, там вроде никаких особых зависимостей от винды нет.
    2) почему то последний этап как загрузить прошивку нигде не описан (или я не нашёл)
    3) галочку AutoConnect в профиле station mode желательно поднять повыше, а то режим STATIONAP_MODE включен по умолчанию, но не сразу понятно что для того чтобы station заработал нужно кроме SSID и пароля еще и эту галочку поставить.
    4) да ещё желательно отображать baudrate стандартными скоростями, а то крышу от таких записей уносит :), может встроить калькулятор на javascript в страничку, поле uart_0_baud сделать скрытым и добавить новое в которое нужно будет вводить стандартные скорости, а перед отправкой формы пересчитать.

    Вставка длинного текста проходит с ошибками, знаю что желательно использовать аппаратный flow control, но пока попробую без него.
     
    Последнее редактирование: 25 апр 2015
  18. sharikov

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

    Сообщения:
    602
    Симпатии:
    52
    +1
    У меня почему то крышу не уносит.
    baudrate отображается идеологически правильно.
    Если чип не может в точности установить заданное значение нехер вводить пользователля в заблуждение красивыми цифрами. Реальное значение битрейта должно быть в явном виде выдано пользователю а там он сам решает устраивает его это или нет.
    Общий принцип для профессиональных систем: всегда показываем правду даже если эта правда не очень красивая.
     
  19. lincinus

    lincinus Новичок

    Сообщения:
    17
    Симпатии:
    3
    Насколько я понял такой финт ушами только из за того что это именно то значение которое хранится во флеше и которое в последствии заносится в регистр конфигурации uart

    У меня на одном конце 115200 а на другом 115273
    Теперь я хочу установить скорость в 1000000 , какое значение я должен записать? поддерживается ли оно этим чипом, намного удобнее выбрать из доступных которые гарантированно рабочие, т.е. реальная скорость отличается не более 3%.
     
  20. PostLast

    PostLast Читатель

    Сообщения:
    56
    Симпатии:
    5
    pvvx, Подскажите, можно ли и где получить прерывание от UART когда нет подключения к сокету? Реализовал обработку буфера uart при отсутствии подключения по сокету на таймере, но это как-то неправильно.
    +1
    Планов по реализации загрузки кода по воздуху не возникает?
     

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