• Система автоматизации с открытым исходным кодом на базе 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 пишет что беда со стеком, а где не говорит :) Странное сообщение вылазит - что стек переполнен, но не указывает у какой задачи...
 
Сверху Снизу