• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

RTLHTTPD

pvvx

Активный участник сообщества
Там нужно openocd, сначала он у меня вообще не заработал, оказалось, что нужно другой драйвер для jlink, я его поставил (при этом перестал работать JlinkGDB, ну да ладно)
Выкинуты уже OpenOCD. Батники просто так теперь валяются, для примера... Медленно развивается проект у sharikov-а - я его только адаптирую к своему SDK, а в глубину HTTPD не лезу.
Придется вам обратно переставлять драйвер к Jlink :)
 

pvvx

Активный участник сообщества
проверил, все на месте:
librtlhttpd/include/httpd.h
А я не обновил все куски, раскиданные по разным репозиториям...
Собрал.
WiFi конфиг всё равно не работает. Scan тоже пишет какую-то ерунду от ESP.
В RTL scan работает в любом режиме WiFi.
Кошек убрал - заменил на собак, теперь наверно скоро всё заработает. :)
 

aloika

Active member
Выкинуты уже OpenOCD. Батники просто так теперь валяются, для примера... Медленно развивается проект у sharikov-а - я его только адаптирую к своему SDK, а в глубину HTTPD не лезу.
Придется вам обратно переставлять драйвер к Jlink :)
Может, пригодится кому:
1. У меня заработала прошивка через openocd только когда я раскомментировал строчку [inline]adapter_khz 500[/inline] в rtl8710.ocd
2. Переставить драйвер от JlinkGDB к openocd удобно программой zadig_2.2.exe, там нужно выбрать jlink и потом libusb.
3. А вот обратно этой прогой драйвер не переставить, надо снова устанавливать JLink от Segger (JLink_Windows_V612a.exe)

Безымянный.png
 
Последнее редактирование:

pvvx

Активный участник сообщества
Может, пригодится кому:
1. У меня заработала прошивка через openocd только когда я раскомментировал строчку [inline]adapter_khz 500[/inline] в rtl8710.ocd
2. Переставить драйвер от JlinkGDB к openocd удобно программой https://www.amebaiot.com/en/_2.2.exe, там нужно выбрать jlink и потом libusb.
Удаляете драйвер в Windows в устройствах и Jlink встанет при пере-подключении к USB. Ничего переустанавливать не требуется.
OpenOCD работает раза в 2 медленнее и нестабильна при отладке. По этому, на время построения SDK и разработки - приоритет у Jlink. В paths.mk теперь переключается:
FLASHER_TYPE ?= Jlink
FLASHER_TYPE ?= OCD
Но OpenOCD я не полностью не проверял. Возможна работа и c оригинальным STLink и т.д. Для этого у меня накиданы примеры в батниках..
 

aloika

Active member
После крайнего обновления репозитория от pvvx перестал проект собираться...
 

aloika

Active member
Наверно stat.exe не хватает в MinGW :)
Такого файла действительно нет, а какой пакет нужно установить в MinGW, чтобы этот файл появился?

сейчас выдает такую ошибку при попытке компиляции:

12:33:45 **** Build of configuration Release for project RTLHTTPD ****
mingw32-make.exe -s -j all
mingw32-make.exe[1]: *** No rule to make target 'RTL00_SDKV35a/component/soc/realtek/8195a/fwlib/src/hal_dac.c', needed by 'RTL00_SDKV35a/component/soc/realtek/8195a/fwlib/src/hal_dac.o'. Останов.
mingw32-make.exe[1]: *** Ожидание завершения заданий...
===========================================================
Compile (build)
Makefile:7: recipe for target 'ram_all' failed
mingw32-make.exe: *** [ram_all] Error 2
 

pvvx

Активный участник сообщества
Перекинуто на Eclipse Cpp Neon + ARM плугин. Пробуйте - есть нюансы вызова среды (mingw и win) из Eclipse...
----
Пришлось ещё кое что махнуть, чтобы работало в Eclipse Cpp Neon... Он по какой-то причине вызывает среду win-ды в другом конфиге и не всегда работают некоторые команды винды...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Такого файла действительно нет, а какой пакет нужно установить в MinGW, чтобы этот файл появился?
Не знаю, наверно в пакете MSYS, в списке, указанном на git необходимого ПО для сборки...
Пробуйте вставить путем копирования в C:\MinGW\msys\1.0\bin приложенного файла...
А ошибка у вас от кривой Windows. Что-то не так с драйверами к CPU и многопочные обращения к файловой структуре с кол-вом более какого-то числа у вас вызывают ошибки в системе... Ограничивайте кол-во тредов или вообще собирайте в один поток.
 

Вложения

  • 21.7 KB Просмотры: 5

aloika

Active member
Все равно не собирается:

01:04:55 **** Build of configuration Debug for project RTLHTTPD ****
mingw32-make.exe -s -j 4 all
process_begin: CreateProcess(NULL, uname, ...) failed.
mingw32-make.exe[1]: *** No rule to make target 'RTL00_SDKV35a/component/soc/realtek/8195a/fwlib/src/hal_dac.c', needed by 'RTL00_SDKV35a/component/soc/realtek/8195a/fwlib/src/hal_dac.o'. Останов.
mingw32-make.exe[1]: *** Ожидание завершения заданий...
"==========================================================="
"Compile (build)"
Ошибка в синтаксисе команды.
sdkbuild.mk:60: recipe for target 'prerequirement' failed
mingw32-make.exe[1]: *** [prerequirement] Error 1
Непредвиденное появление: -x.
sdkbuild.mk:31: recipe for target 'build_info' failed
mingw32-make.exe[1]: *** [build_info] Error 255
Makefile:7: recipe for target 'ram_all' failed
mingw32-make.exe: *** [ram_all] Error 2

01:04:55 Build Finished (took 621ms)
 

aloika

Active member
В один поток:

e:\karpesh\RTL00\RTLHTTPD>mingw32-make.exe -j 1 all
process_begin: CreateProcess(NULL, uname, ...) failed.
mingw32-make.exe[1]: Entering directory 'e:/karpesh/RTL00/RTLHTTPD'
"==========================================================="
"Compile (build)"
Ошибка в синтаксисе команды.
sdkbuild.mk:60: recipe for target 'prerequirement' failed
mingw32-make.exe[1]: *** [prerequirement] Error 1
mingw32-make.exe[1]: Leaving directory 'e:/karpesh/RTL00/RTLHTTPD'
Makefile:7: recipe for target 'ram_all' failed
mingw32-make.exe: *** [ram_all] Error 2

А где в make-файлах прописано, во сколько потоков собирать?
 

Neov

Member
Перекинуто на Eclipse Cpp Neon + ARM плугин. Пробуйте - есть нюансы вызова среды (mingw и win) из Eclipse...
----
Пришлось ещё кое что махнуть, чтобы работало в Eclipse Cpp Neon... Он по какой-то причине вызывает среду win-ды в другом конфиге и не всегда работают некоторые команды винды...
И зачем нужно было зашивать проект в эклипс?
 

pvvx

Активный участник сообщества
И зачем нужно было зашивать проект в эклипс?
Как это "зашивать"? Сейчас из Eclipse (версии Neon) запускается mingw32-make.exe и он собирает проект. Но Eclipse дает какие-то пред-установки, меняет переменные среды и что-то там не вяжется с новой версией Eclipse Neon. Пока вроде как-то обошел эти неувязки. Вариантов, как реализовать требуемое в makefile существуют сотни. Не пойдет так, слепим по другому... Без Eclipse, проекты тоже собираются аналогично - запуском mingw32-make.exe с опциями.
--------
Сегодня тыкал Eclipse Neon и собрал elf его встроенным мейкером. Надо писать какой-то программатор, наверно на питоне...
Опять та-же беда - командная строчка его майкера для GCC-линкера вышла за 12 килобайт и её винда погрызла :) Он не может собрать напрямую весь проект, без закатывания частей в либы...
 
Последнее редактирование:

aloika

Active member
В общем, сервер хоть и с собаками - все равно глючит. При обновлении странички с вебсокетом падает:

Код:
L8195A[HAL]: Hard Fault Error!!!!
RTL8195A[HAL]: R0 = 0x10053182
RTL8195A[HAL]: R1 = 0x10051e50
RTL8195A[HAL]: R2 = 0x50000204
RTL8195A[HAL]: R3 = 0x10005708
RTL8195A[HAL]: R12 = 0xf
RTL8195A[HAL]: LR = 0x1000c25f
RTL8195A[HAL]: PC = 0x1000ad52
RTL8195A[HAL]: PSR = 0x21000000
RTL8195A[HAL]: BFAR = 0x5000071c
RTL8195A[HAL]: CFSR = 0x8200
RTL8195A[HAL]: HFSR = 0x40000000
RTL8195A[HAL]: DFSR = 0x0
RTL8195A[HAL]: AFSR = 0x0
RTL8195A[HAL]: PriMask 0x0
RTL8195A[HAL]: BasePri 0x0
RTL8195A[HAL]: SVC priority: 0x00
RTL8195A[HAL]: PendSVC priority: 0xf0
RTL8195A[HAL]: Systick priority: 0xf0
Верните кошек, может лучше будет.
 

pvvx

Активный участник сообщества
В общем, сервер хоть и с собаками - все равно глючит. При обновлении странички с вебсокетом падает:
Верните кошек, может лучше будет.
В следующий раз тараканов вставлю :)
Сколько раз обновлений в websocket выдержал?
Тест не выдерживает и минуты - переполнение RAM. Это же ESPHTTPD и не рассчитан на много открытий-закрытий сокетов. Вылезает хвост из TIME_WAIT и heap каюк. Написан так - открываете страницу броузером и набираете ATLW и узреваете, что 5 соединений уже открыто :) Вторая страница в броузере и псё. Далее давим CTRL+F5 и через время всё падает. :)
Если аккуратно и медленно, не дыша, то работает стабильно, особенно в своих встроенных тестах.
sharikov его ещё не оптимизировал, судя по установкам для LwIP и использования буферов в килобайты в стеке, через одну процедуру... В любой момент может переполнить выделенный стек задаче...
 
Последнее редактирование:

sharikov

Active member
Вылезает хвост из TIME_WAIT и heap каюк.
Чтобы завалить по TIME_WAIT надо применять инструмент: например ab заваливает после ~400 запросов в многопотоке. Вручную в браузере словить TIME_WAIT затруднительно. И при TIME_WAIT оно сначала ругается в консоли.
Долбил рефреш WS на смартфоне:
Код:
atlw
UDP pcbs:
flg:00  192.168.4.1:53  0.0.0.0:0       recv:0x1000dd85
flg:00  0.0.0.0:137     0.0.0.0:0       recv:0x10016645
flg:00  0.0.0.0:67      0.0.0.0:0       recv:0x10016249
flg:00  0.0.0.0:55467   0.0.0.0:0       recv:0x10011b5d
Active PCB states:
none
Listen PCB states:
Port 80|0       flg:00  tmr:0xa5a5a5a5  LISTEN
TIME-WAIT PCB states:
Port 80|38012   flg:30  tmr:0x76        TIME_WAIT
Port 80|38007   flg:30  tmr:0x73        TIME_WAIT
Port 80|38005   flg:30  tmr:0x72        TIME_WAIT
Port 80|38002   flg:30  tmr:0x71        TIME_WAIT
Port 80|38000   flg:30  tmr:0x70        TIME_WAIT
Port 80|37996   flg:30  tmr:0x6c        TIME_WAIT
Port 80|37994   flg:30  tmr:0x57        TIME_WAIT
Port 80|37991   flg:30  tmr:0x55        TIME_WAIT
Port 80|37989   flg:30  tmr:0x54        TIME_WAIT
Port 80|37987   flg:30  tmr:0x54        TIME_WAIT
Port 80|37985   flg:30  tmr:0x53        TIME_WAIT
Port 80|37983   flg:30  tmr:0x50        TIME_WAIT
Port 80|37981   flg:30  tmr:0x37        TIME_WAIT
Port 80|37977   flg:30  tmr:0x5 TIME_WAIT
Port 80|37978   flg:30  tmr:0x5 TIME_WAIT
Port 80|37974   flg:30  tmr:0x2 TIME_WAIT

ATST

CLK CPU         166666666 Hz
RAM heap        116800 bytes
TCM heap        9840 bytes

CPU total run time is 124924
TaskName        DeltaRunTime    percentage
loguart         836             <1%
IDLE            115057          92%
Tmr Svc         1               <1%
wsbcast         11              <1%
TCP_IP          88              <1%
rtw_check       0               <1%
captdns_t       1201            <1%
esphttpd        7018            5%
cmd_threa       5               <1%
rtw_recv_       122             <1%
rtw_littl       56              <1%
rtw_inter       197             <1%
 

pvvx

Активный участник сообщества
Чтобы завалить по TIME_WAIT надо применять инструмент: например ab заваливает после ~400 запросов в многопотоке. Вручную в браузере словить TIME_WAIT затруднительно. И при TIME_WAIT оно сначала ругается в консоли.
Долбил рефреш WS на смартфоне
Уметь надо в броузере вызывать TIME_WAIT у ESPHTTPD :) Это целая наука.
Даже на RTL8711AM падет - в основном, RTOS пишет что беда со стеком, а где не говорит :) Странное сообщение вылазит - что стек переполнен, но не указывает у какой задачи...
 
Сверху Снизу