• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Web-свалка на RTL871x

pvvx

Активный участник сообщества
Кто подскажет, где взять нормальный gcc-arm-none-eabi для WSL win10 ?
Имеющийся:
Код:
pushd .
cd ~
# Install custom 64bit build of toolchain
wget https://github.com/SolinGuo/arm-none-eabi-bash-on-win10-/raw/master/gcc-arm-none-eabi-5_4-2017q2-20170512-linux.tar.bz2
tar -jxf gcc-arm-none-eabi-5_4-2017q2-20170512-linux.tar.bz2
exportline="export PATH=$HOME/gcc-arm-none-eabi-5_4-2017q2/bin:\$PATH"
if grep -Fxq "$exportline" ~/.bashrc; then echo " GCC path already set." ; else echo $exportline >> ~/.bashrc; fi
. ~/.bashrc
popd
не работает с опциями -j (много-поточными), выкидывает ошибки (неадекватные, на любом компе и CPU). В один поток собирает без проблем...
Или всё так плохо в linux? :) (по идее вроде да - глючит весь GCC на AMD Ryzen и что прикол - именно в многопотоке и исправить не могут... Теперь для тех, кто использует GCC надо заказывать личный процессор с тестом AMD через систему RMA :))
Может как его пересобрать?
 
Последнее редактирование:

aloika

Active member
В продолжение этой истории:
Web-свалка на RTL871x

Проблема сохранилась. Выяснил, что во время этого безобразия:

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

ситуация такая:

Total 19617 packets received (1276510 bytes), dropped 57780
Total 1444 packets transmitted (126519 bytes), dropped 0
RX fifo overflow count 0
Max skb 8 bufers used, buffers 5
Max skb 8 data used, data 5
Max 23 timers used

В то время, как когда всё работает, то так:

Max skb 4 bufers used, buffers 0
Max skb 4 data used, data 0

Проявляется это только с одним китайским старым телефоном. Кажется, как будто бы телефон что-то шлёт модулю и тому как-то плохеет.

Вопрос - можно ли как-то увидеть, что там приходит на модуль от интерфейса, до "входа" в Lwip? Или это всё в закрытой как раз библиотеке находится и шансов нет?
И еще - что это за буфера? Они определены в этой закрытой части...

Телефон выкинуть не предлагать, я им и так не пользуюсь, держу специально для моделирования этого случая.
 

pvvx

Активный участник сообщества
Total 19617 packets received (1276510 bytes), dropped 57780
Total 1444 packets transmitted (126519 bytes), dropped 0
RX fifo overflow count 0
Max skb 8 bufers used, buffers 5
Max skb 8 data used, data 5
Max 23 timers used
Вопрос тут в другом - куда и зачем телефон гонит 19617 packets на полную катушку, если ему там не отвечают? :eek:
Из простейшего, есть Wireshark и адаптер WiFi-USB в комп, в котором можно посмотреть куда и зачем гонит эти пакеты телефон.
Другой вариант - написать сниффер на RTL и направить поток в Wireshark, через UART, хотя-бы на пару мегабит....
Так-же для WiFi либы у Ameba вышел патч. Что там - я не разбирался...
4.0b_critical_patch_r25176_KRACK_gcc_(v01).zip:
Код:
[Description]
    Fix KRACK vulnerability.
    Test with detection tool vdt-v1.1 provided by Wi-Fi Alliance and pass all mandatory items (4.1.1 / 4.1.2 / 4.1.3 / 4.1.5 / 4.1.6 / 4.2.1).

[Files]
    1. component\soc\realtek\8195a\misc\bsp\lib\common\GCC\lib_wlan.a
    2. component\soc\realtek\8711b\misc\bsp\lib\common\GCC\lib_wlan.a
Что-то про Here's every patch for KRACK Wi-Fi vulnerability available right now
Возможно и ваш телефон пытается пропихнуть какую атаку-вирус или типа WiFi-Jammer :)
Так что не выкидывайте его - кому-то что-то надо с него получить :)
Реакцией на DDOS атаку является отключение на не определенное время... Именно это у вас и вышло?
У меня тут вчера Chrome стал валится на DDOS по простой ошибке в HTML с модуля... Explorer так не поступал. Перезагрузил комп - прошло :)
 
Последнее редактирование:

aloika

Active member
Вопрос тут в другом - куда и зачем телефон гонит 19617 packets на полную катушку, если ему там не отвечают? :eek:
Из простейшего, есть Wireshark и адаптер WiFi-USB в комп, в котором можно посмотреть куда и зачем гонит эти пакеты телефон.
upload_2017-12-3_20-45-25.png

Патч применил (т.е. файл заменил) - то же самое. MAC 58:12:43:25:e6:0d - это телефон.
 

pvvx

Активный участник сообщества
Последнее редактирование:

pvvx

Активный участник сообщества
Спасибо, но об этом уже писалось, как и о начальных исходниках, до отладки и встраивания в общий mbed, находились в другой репе (там на 60% было больше)...
Там всё равно большая и нужная часть закрыта и представлена вообще бинарниками (даже не либой.a), а серии "B" вообще ещё нет.
Mbed и Arduino берут корни от SDK 3.5. Есть SDK4.0, которая расходится с их путями.
Тут Ameba Arduino Github - больше заголовков и сами либы в Arduino жирнее, чем по указанной ссылке на mbed.
Всё, что есть по вашим ссылкам, уже давно обработано и включено в мои сборки SDK.
“Следить” за всеми источниками и адаптировать их в один общий SDK я безусловно не успеваю, да и временно отошел от RTL-ок. По этой причине не все исходные коды и файлы заголовков входящие в мою сборку SDK можно использовать простым подключением… Но это не Arduino и часть файлов дана как примеры-наброски для общей картины, в надежде, что кто-то их адаптирует (будет производить реверс и они сгодятся для сведения с уже назначенными именами и заголовками) или доведет, если они потребуются. Из принципа: больше информации – лучше, чем её полное отсутствие.
В Arduino недавно было обновление на "много-нового" в виде SDK 2.0.2-build20171117 - его ещё не смотрел...
 
Последнее редактирование:

Geniuser

New member
Спасибо, но об этом уже писалось, как и о начальных исходниках, до отладки и встраивания в общий mbed, находились в другой репе (там на 60% было больше)...
Там всё равно большая и нужная часть закрыта и представлена вообще бинарниками (даже не либой.a), а серии "B" вообще ещё нет.
Mbed и Arduino берут корни от SDK 3.5. Есть SDK4.0, которая расходится с их путями.
Тут Ameba Arduino Github - больше заголовков и сами либы в Arduino жирнее, чем по указанной ссылке на mbed.
Всё, что есть по вашим ссылкам, уже давно обработано и включено в мои сборки SDK.
“Следить” за всеми источниками и адаптировать их в один общий SDK я безусловно не успеваю, да и временно отошел от RTL-ок. По этой причине не все исходные коды и файлы заголовков входящие в мою сборку SDK можно использовать простым подключением… Но это не Arduino и часть файлов дана как примеры-наброски для общей картины, в надежде, что кто-то их адаптирует (будет производить реверс и они сгодятся для сведения с уже назначенными именами и заголовками) или доведет, если они потребуются. Из принципа: больше информации – лучше, чем её полное отсутствие.
В Arduino недавно было обновление на "много-нового" в виде SDK 2.0.2-build20171117 - его ещё не смотрел...

Код:
Linking
Error[Li006]: duplicate definitions for "InfraStart"; in "D:\RTL8710\sdk-ameba-v4.0b_without_NDA_GCC_V1.0.0\project\realtek_ameba1_va0_example\EWARM-RELEASE\Debug\Obj\startup.o", and "startup.o(lib_platform.a)"
как избавиться от подобных ошибок, при дополнении исходниками, как из IAR библиотеки убрать дубли, что скомпилированы из исходников? Есть ли версия вашего SDK под IAR?
 

pvvx

Активный участник сообщества
как избавиться от подобных ошибок, при дополнении исходниками, как из IAR библиотеки убрать дубли, что скомпилированы из исходников? Есть ли версия вашего SDK под IAR?
Под IAR - нет. У нас тут не коммерция и коммерческое ПО неприменимо. Всё только в узких рамках само-обучения.
Код:
Linking
Error[Li006]: duplicate definitions for "InfraStart"; in "D:\RTL8710\sdk-ameba-v4.0b_without_NDA_GCC_V1.0.0\project\realtek_ameba1_va0_example\EWARM-RELEASE\Debug\Obj\startup.o", and "startup.o(lib_platform.a)"
Разберите и соберите либу lib_platform.a, выкинув из неё startup.o.
В моем варианте от неё мало что используется. Всё замещено исходниками.
Многое по “реверсу” и более компактному замещению не выложено, т.к. не стыкуется с разными версиями SDK, Arduino, Mbed, ... а также имеет специфичное применение.
Тут, на данном форуме, никому не требуются исходники и есть их противники в лице ардуинопоклонников... :) Мода такая ныне - тавай готовое и тупое, и пофиг что там внутри.
 
Последнее редактирование:

Geniuser

New member
Разберите и соберите либу lib_platform.a, выкинув из неё startup.o.

Как её разобрать и собрать? Чем?
 

aloika

Active member
В продолжение этой истории:
Web-свалка на RTL871x

Проблема сохранилась. Выяснил, что во время этого безобразия:

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

ситуация такая:

Total 19617 packets received (1276510 bytes), dropped 57780
Total 1444 packets transmitted (126519 bytes), dropped 0
RX fifo overflow count 0
Max skb 8 bufers used, buffers 5
Max skb 8 data used, data 5
Max 23 timers used

В то время, как когда всё работает, то так:

Max skb 4 bufers used, buffers 0
Max skb 4 data used, data 0
Еще немного понаблюдал. При появлении сообщений от драйвера значение buffers всегда 5, а max skb buffers может быть 7 или 8.
Ну и "лечится" это перезапуском wi-fi, например ATWR=3.

Идея - написать "костыль" - если buffers==5, то перезапустить wi-fi.
Но как-то это всё некрасиво.
 

aloika

Active member
Из простейшего, есть Wireshark и адаптер WiFi-USB в комп, в котором можно посмотреть куда и зачем гонит эти пакеты телефон.
Это делал, но мало что там понял. Этот телефон, кстати, например, с ESP работает нормально, не вызывает сбоев, как в RTL.

Другой вариант - написать сниффер на RTL и направить поток в Wireshark, через UART, хотя-бы на пару мегабит....
Это сильно сложно? Намекните, если можно, куда смотреть, как к этому подходить.

Перезапускать wi-fi мне кажется не очень хорошей идеей... Неизвестно как отреагируют на это подключенные устройства - подключатся снова сюда или подключатся к следующей доступной точке доступа - неизвестно. Может быть, есть какой-то способ сбросить эти буферы или что-то такое сделать, чтобы восстановить работоспособность без перезапуска wi-fi?

Критерий перезапуска тоже не особо понятен... надо написать, чтобы выводилось количество буферов хотя бы каждую секунду, посмотреть, что там...

В сети об этом вообще ни слова, есть два упоминания, но там народ пытается передавать по UDP с большой скоростью, а чтобы как у меня (при приеме) - такого нет.

Неужели никто не натыкался на это, кроме меня? Или RTL ковыряют 1,5 человека в мире?

Pvvx, наверняка ведь у вас какие-нибудь интересные идеи на этот счет есть?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Это делал, но мало что там понял. Этот телефон, кстати, например, с ESP работает нормально, не вызывает сбоев, как в RTL.
Используйте с этим телефоном ESP.
Есть масса серийных устройств, которые не дружат друг с другом, особенно в тематике WiFi...
Espressif уже 4-ре года отлаживает на пользователях свой код, но так и не довела до средней паршивости стабильности дров WiFi. Я его использовать не могу - они у меня в городе валятся в неоднократно описанной программно-аппаратной проблеме с отваливанием station, которая у многих не проявляется... А положить свою жизнь на исправление очередного глюка Espressif я не собираюсь.
Неужели никто не натыкался на это, кроме меня? Или RTL ковыряют 1,5 человека в мире?
Здесь, на данном форуме, наверно 0,5 человека, а с ESP на таком уровне ни одного, кто сможет описать вам решения на уровнях дров их WiFi. Что это меняет?
Pvvx, наверняка ведь у вас какие-нибудь интересные идеи на этот счет есть?
На сегодня не встречался с тем, что у вас происходит, а попытки повторить не привели к описываемым вами результатам. Видимо не туда и не те причины описываете или учитываете, почему вас прошу уточнить. Может найти аналогичный вариант с другими устройствами, чтобы можно было повторить. А более, пока, ничем не могу помочь.
Вы пробовали произвести аналогичные действия с другими вариантами прошивок для RTL? C "AT" или ещё какой (Web морда есть и у прошивок от RAK, ...)?
На сегодня, из ваших описаний, так и не известно, кто вызывает сбой... Часть кода программы примера из Web-свалки или какая неправильная инициализация в вашем коде, сам драйвер WiFi или другие компоненты, к примеру DСHP драйвер, неправильная сборка всего проекта (может просто не учли что-то при сборке всех компонентов в единый проект, т.к., по описаниям вы ещё не разобрались с RTOS и останавливаете тред LwIP... гадать можно долго)?
Вон AMD с миллионами пользователей Ryzen гадает уже почти год и так и не нашли виновного (нет конкретизации по ошибке) - кривые оптимизации в Linux (при использовании GCC) или ошибки в самом кристалле CPU... Там достаточно поменять какой из сотен параметров или микрокод и картинка глюков меняется, а в Windows этого вообще нет и не было, т.к. её писатели имеют NDA и получили доки как работать с данным CPU... (Моё мнение, что ошибки в Linux Kernel и GCC - самиздат "дооптимизировался" нестандартными решениями без учета развития структур CPU и при отсутствии связей по обмену информации с производителями и это набирает обороты - ныне уже всё глючит и скоро в Linux будет сплошной глюк.
Я попользовал несколько вариантов Ryzen и в Linux, да в Windows с GCC и наблюдаю всё те-же ошибки, которым уже много лет и в основном связанных с многоядерностью. Пользователи в них “играли” пока не нарвались на увеличение производительности (ядер) у ширпотреб CPU, ну вот очередная и вылезла с более внятной повторяемостью из-за увеличения производительности. В Linux вставят какой программный или аппаратно-программный в сам CPU тормоз для обхода и эта ошибка у них пройдет :)
AMD правильно поставило диагноз данной ошибке, как “ошибка маргинальной производительности” :) )

При чем тут “ошибка” Ryzen - ситуация очень схожа с вашей – нефиг долбить в одно и то-же узкое место, перегружая имеющиеся буфера да ещё используя неподходящие алгоритмы в самой системе. Неверная сборка проекта – бездумное напихивание разных либ без их согласования и адаптации... и теперь просите решить и починить ваш проект под ваши условия за вас.
А туты только web-свалка и пока принимаю только готовые решения о найденных ошибках по её коду c описанием исправления на CИ :p Ну как это принято во всем мире Linux - объявляете проект и пользователи обязаны присылать вам исходники с решениями для наполнения под ваше имя самого проекта :)
 
Последнее редактирование:

aloika

Active member
Вы пробовали произвести аналогичные действия с другими вариантами прошивок для RTL? C "AT" или ещё какой (Web морда есть и у прошивок от RAK, ...)?
Нет, не пробовал.
С web-свалкой с разными версиями пробовал, одинаково проявляется.

При чем тут “ошибка” Ryzen - ситуация очень схожа с вашей – нефиг долбить в одно и то-же узкое место, перегружая имеющиеся буфера да ещё используя неподходящие алгоритмы в самой системе. Неверная сборка проекта – бездумное напихивание разных либ без их согласования и адаптации... и теперь просите решить и починить ваш проект под ваши условия за вас.
Если б так... Ваша веб-свалка без каких либо изменений - и вот такой эффект.
Не то, чтобы я прошу решить и починить за меня - просто получается, что RTL00 не лучше ESP. Просто глюки ESP у вас проявились, а глюки RTL00 - не проявились. А у меня вот - пожалуйста. И если эта проблема возникла у меня, то, значит, она еще где-нибудь проявится - найдутся такие же телефоны и т.д. И я зову вас подумать, что тут можно сделать, потому как это не только моя проблема, это не проблема "моего проекта".

Вот, вывожу каждую секунду параметры этих загадочных буферов - вот как происходит сбой:


Код:
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 1, max skb 5 data used, data 1
        Max skb 5 bufers used, buffers 1, max skb 5 data used, data 1
        Max skb 5 bufers used, buffers 2, max skb 5 data used, data 2
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 1, max skb 5 data used, data 1
        Max skb 5 bufers used, buffers 2, max skb 5 data used, data 2
        Max skb 5 bufers used, buffers 3, max skb 5 data used, data 3
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RT      Max skb 6 bufers used, buffers 5, max skb 6 data used, data 5
Lx skb 6 bufers used, buffers 5, max skb 6 data used    Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL819  Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
5b 6 bufers used, buffers 4, max skb 6 data used        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[D      Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
rbufers used, buffers 4, max skb 6 data used    Max skb 6 bufers used, buffers 5, max skb 6 data used, data 5

RTL8195A[Drive  Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
rrs used, buffers 4, max skb 6 data used        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]:       Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
used, buffers 4, max skb 6 data used   Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb   Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
_, buffers 4, max skb 6 data used       Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_una       Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
vffers 4, max skb 6 data used   Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavail   Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
as 4, max skb 6 data used       Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4

RTL8195A[Driver]: skb_unavailable       Max skb 6 bufers used, buffers 5, max skb 6 data used, data 5
= max skb 6 data used   Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5

RTL8195A[Driver]: skb_unavailable=3 i   Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5
n skb 7 data used       Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5

RTL8195A[Driver]: skb_unavailable=2 in l        Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5
ab 7 data used  Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5

RTL8195A[Driver]: skb_unavailable=3 in last     Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5
2data used      Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5

RTL8195A[Driver]: skb_unavailable=2 in last 2 se        Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5
c used  Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5

RTL8195A[Driver]: skb_unavailable=2 in last 2 second    Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5
sd      Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5
        Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 7 bufers used, buffers 5, max skb 7 data used, data 5
 

pvvx

Активный участник сообщества
Не то, чтобы я прошу решить и починить за меня - просто получается, что RTL00 не лучше ESP.
Это кому как... Вам надо что-то простое, типа ESP8266 Arduino IDE - возьмите и пишите в нем. Там есть web и SPIFFS.
Потом попробуйте включить broadcast трансляцию какого видео в своей интрасети и посмотрите на поведение ESP8266 :)
Просто глюки ESP у вас проявились, а глюки RTL00 - не проявились. А у меня вот - пожалуйста. И если эта проблема возникла у меня, то, значит, она еще где-нибудь проявится - найдутся такие же телефоны и т.д. И я зову вас подумать, что тут можно сделать, потому как это не только моя проблема, это не проблема "моего проекта".
Вашего - уверен на 99%. Не те настройки (например в lwipopts.h), не верная обработка чего-либо.
web-свалка - это всего пример, заготовка, а не законченный проект. Под конкретные условия необходимо корректировать исходники, убирать лишнее, что дано для тестов и позволяет завесить систему и подобное. По умолчанию настройки даны для тестов актуальных у меня подключаемых модулей. Сейчас, например, WS2812 и мне нужны все доступы и прочие переменные, которые в реальном готовом проекте должны быть обязательно удалены.
Как самый простой пример - включаем собранный по умолчанию проект, соединяем с роутером, в котором прописываем доступ к web из инет. Любой из инет заходит на страничку web и даем команду перезагруки ~restart~ (можно и ляпнуть что в регистры SoC - доступ то открыт и есть эти команды) :)
Потом вы говорите, что модуль перезагружается... :)
Вот, вывожу каждую секунду параметры этих загадочных буферов - вот как происходит сбой:
И где там сбой?
Выходит обычный лог буферов пакетов для работы приемо-передатчика WiFi.
Говорить о том что "работает" или нет можно бесконечно. Вам уже указано - в общепринятой практике нормальным является указание строки СИ c описанием ошибки и пример исправления. Далее будем обсуждать, является ли ваше предложенное исправления подходящим вариантом или есть ещё что связанное с этим. Я пока ещё немного помню всю архитектуру проекта и могу уточнить, является ли ваше предложенное исправления подходящим вариантом. :p
 
Последнее редактирование:

aloika

Active member
И где там сбой?
Сбой вот:

Код:
 Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 0, max skb 5 data used, data 0
        Max skb 5 bufers used, buffers 1, max skb 5 data used, data 1
        Max skb 5 bufers used, buffers 2, max skb 5 data used, data 2
        Max skb 5 bufers used, buffers 3, max skb 5 data used, data 3
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
        Max skb 6 bufers used, buffers 4, max skb 6 data used, data 4
Т.е. сначала довольно долгое время buffers=0, при этом всё работает корректно. Иногда это значение увеличивается до 1 или 2, но тут же снова уменьшается до 0. А потом в какой-то момент без каких либо видимых внешних событий количество buffers растет до 4 или 5, и возникает "RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds", веб-интерфейс перестает работать. Само из этого положения ничего не восстанавливается. Можно выполнить wifi_run(), тогда значение buffers сбрасывается, всё начинает работать снова.

вы ещё не разобрались с RTOS и останавливаете тред LwIP
Такого не делаю...

Вам уже указано - в общепринятой практике нормальным является указание строки СИ c описанием ошибки и пример исправления. Далее будем обсуждать, является ли ваше предложенное исправления подходящим вариантом или есть ещё что связанное с этим. Я пока ещё немного помню всю архитектуру проекта и могу уточнить, является ли ваше предложенное исправления подходящим вариантом. :p
К этому и стремлюсь. А сюда пишу в надежде - может, кто что ещё предложит, какие-нибудь идеи - например, что ещё можно вывести в лог, посмотреть и т.д.
 

sharikov

Active member

aloika

Active member
pvvx вам предлагал проверить другой проект.
попробуйте rtl_webupdater
Попробовал. Та же история. Вот лог:

Код:
=========================================================

ROM Version: 0.3

Build ToolChain Version: gcc version 4.8.3 (Realtek ASDK-4.8.3p1 Build 2003)

=========================================================
Check boot type form eFuse
SPI Initial
Image1 length: 0x2214, Image Addr: 0x10000bc8
Image1 Validate OK, Going jump to Image1
===== Enter FLASH-Boot ====
CPU CLK: 83333333 Hz, SOC FUNC EN: 0x11113
Pin ▒count=1  Image 1 selected
Selected Image 1.
image_to_load=1 faddr=0xb000 current_image_num=0 faddr_from_sysarea=0
fnextaddr=0xb010  seg_id=0x1
Skip Flash seg0: 0x0000b010 -> SRAM: 0x10006000, size: 266692
fnextaddr=0x4c1dc  seg_id=0x0
image_to_load=1 faddr=0x4d000 current_image_num=1 faddr_from_sysarea=0
No Image1! Trying Image0...
image_to_load=0 faddr=0xb000 current_image_num=0 faddr_from_sysarea=0
fnextaddr=0xb010  seg_id=0x1
Load Flash seg0: 0x0000b010 -> SRAM: 0x10006000, size: 266692
fnextaddr=0x4c1dc  seg_id=0x0
Image0: RTL-Web Updater
Img Sign: RTKWin, Go @ 0x10006085
===== Enter Image: RTL-Web Updater ====
Init Heap Region: 0x10003000[12288]
Init Heap Region: 0x10053808[116728]

Main start

CLK CPU         166666666 Hz
RAM heap        128808 bytes    TCM heap        60664 bytes
interface 2 is initialized
Initializing WIFI...
[HEAP Wrn]tcm_alloc(2056) - freeSpace(960)!
[HEAP Wrn]tcm_alloc(2056) - freeSpace(960)!
[HEAP Wrn]tcm_alloc(1032) - freeSpace(960)!
[HEAP Wrn]tcm_alloc(1032) - freeSpace(960)!
[HEAP Wrn]tcm_alloc(1032) - freeSpace(960)!
[HEAP Wrn]tcm_alloc(1032) - freeSpace(960)!
WIFI initialized (305 ms)
Starting AP (wlan1, netif1)...

RTL8195A[Driver]: port switch - port0(wlan2), port1(wlan1)
AP 'RTL871X' started after 407 ms
SoftAP ip: 192.168.4.1
connect_start: Time at start 422 ms.
Connected to AP (wlan0, netif0)...

RTL8195A[Driver]: set ssid [GUESTAP]
wifi_run_st: Operation failed! Error(-1)
[HEAP Wrn]tcm_alloc(4808) - freeSpace(960)!
Skip Flash seg0: 0x0000b010 -> SRAM: 0x10006000, size: 266692
Upgraded Image address=0x4d000
[HEAP Wrn]tcm_alloc(16392) - freeSpace(960)!
[After httpdInit]: RAM heap     86216 bytes     TCM heap        960 bytes

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAssocReq
auto reconnect ...

RTL8195A[Driver]: set ssid [GUESTAP]

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAssocReq
auto reconnect ...

RTL8195A[Driver]: set ssid [GUESTAP]

RTL8195A[Driver]: +OnAuth: 7c:dd:90:7d:fa:8d

RTL8195A[Driver]: +OnAssocReq

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAssocReq

RTL8195A[Driver]: ap recv deauth reason code(7) sta:58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAssocReq
auto reconnect ...

RTL8195A[Driver]: set ssid [GUESTAP]

RTL8195A[Driver]: ap recv disassoc reason code(8) sta:7c:dd:90:7d:fa:8d

RTL8195A[Driver]: ap recv deauth reason code(8) sta:7c:dd:90:7d:fa:8d

RTL8195A[Driver]: ap recv deauth reason code(3) sta:58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAssocReq

RTL8195A[Driver]: +OnAuth: 7c:dd:90:7d:fa:8d

RTL8195A[Driver]: +OnAssocReq
00:00:30 [W] /connecttest.txt not found. 404!
00:00:37 [W] /favicon.ico not found. 404!

RTL8195A[Driver]: ap recv deauth reason code(3) sta:58:12:43:25:e6:0d
00:01:04 [W] /connecttest.txt not found. 404!

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d
00:01:37 [W] /connecttest.txt not found. 404!

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAuth: 58:12:43:25:e6:0d

RTL8195A[Driver]: +OnAssocReq

RTL8195A[Driver]: ap recv disassoc reason code(8) sta:7c:dd:90:7d:fa:8d

RTL8195A[Driver]: ap recv disassoc reason code(8) sta:7c:dd:90:7d:fa:8d
00:02:36 [W] /generate_204 not found. 404!
00:03:30 [W] /generate_204 not found. 404!
00:04:40 [W] /generate_204 not found. 404!
00:05:33 [W] /generate_204 not found. 404!
00:06:36 [W] /generate_204 not found. 404!
00:07:17 [W] /generate_204 not found. 404!
00:07:34 [W] /generate_204 not found. 404!
00:08:31 [W] /generate_204 not found. 404!
00:09:41 [W] /generate_204 not found. 404!
00:10:30 [W] /generate_204 not found. 404!

RTL8195A[Driver]: +OnAuth: 7c:dd:90:7d:fa:8d

RTL8195A[Driver]: +OnAssocReq
00:10:50 [W] /connecttest.txt not found. 404!
00:11:04 [W] /generate_204 not found. 404!
00:11:05 [W] /connecttest.txt not found. 404!
00:11:22 [W] /generate_204 not found. 404!
00:11:37 [W] /connecttest.txt not found. 404!
00:11:48 [W] /generate_204 not found. 404!
00:12:36 [W] /generate_204 not found. 404!
00:13:31 [W] /generate_204 not found. 404!
00:14:31 [W] /generate_204 not found. 404!

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=9 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=6 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=4 in last 2 seconds

[alloc_skb] Wait for skbdata

[alloc_skb] Wait for skbdata

[alloc_skb] Wait for skbdata

[alloc_skb] Wait for skbdata

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

[alloc_skb] Wait for skbdata

[alloc_skb] Wait for skbdata

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

[alloc_skb] Wait for skbdata

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

[alloc_skb] Wait for skbdata

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

[alloc_skb] Wait for skbdata

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

[alloc_skb] Wait for skbdata

RTL8195A[Driver]: skb_unavailable=4 in last 2 seconds

[alloc_skb] Wait for skbdata

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=4 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=4 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

[alloc_skb] Wait for skbdata

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=4 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=4 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=4 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=3 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=4 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=2 in last 2 seconds

RTL8195A[Driver]: skb_unavailable=1 in last 2 seconds
 

GDI

New member
А сюда пишу в надежде - может, кто что ещё предложит, какие-нибудь идеи - например, что ещё можно вывести в лог, посмотреть и т.д.
Запустил я поиск по проекту слова ,"skb_unavailable" и вот что нашлось в файле /RTL00_WEB/USDK/component/common/example/bcast/readme.txt:
Note:
If you encounter some message like:
ERROR: sendto broadcast
[Driver]: skb_unavailable=1 in last 2 seconds
It means that the skb buffer is not enough for the massive UDP packets to be sent.
If you want to prevent the error you can add some delay time between sending packets or enlarge the skb buffer configuration.

Неужели трудно поискать сообщение об ошибке, чтобы понять где она появляется?
 
Сверху Снизу