Raspberry Pi Pico W TCP Client *** Panic ***C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Raspberry Pi Pico W TCP Client *** Panic ***

Сообщение Anonymous »

Я построил достаточно базовую настройку IoT клиентского сервера в C ++ с сервером Raspberry Pi 5 и несколькими клиентами Raspberry Pi Pico W. В этом нет ничего особенного, просто отслеживает некоторые температуры и показания напряжения для системы солнечной и гидроэнергетики вне сети, которая питает пару домов. Если бы я мог понять, как поймать и обрабатывать, какую ошибку я мог бы считать системой функциональной. Даже жесткая перезагрузка, и просто запустить снова, как это было бы лучше, чем так, как это необходимо, чтобы он снова работал. PrettyPrint-Override ">

Код: Выделить всё

StartTasks...
task1: Connecting to access point JDnD
Connected to wifi with an IP address
MAC ADDRESS: D83ADD3E85F9
IP ADDRESS:  192.168.1.66
task2: Connecting to 192.168.1.1 port 8081
task3: waiting for connection from server.
Connected to 192.168.1.1 port 8081
task3:
Send... 466
Type:TS;Module:D83ADD3E85F9;Device:2846BEA00600004C;Value:22.3C;IP:192.168.1.66;
Type:TS;Module:D83ADD3E85F9;Device:2835BAA006000092;Value:22.7C;IP:192.168.1.66;
Type:TS;Module:D83ADD3E85F9;Device:2873B6A006000074;Value:22.2C;IP:192.168.1.66;
Type:RL;Module:D83ADD3E85F9;Device:Relay1;Value:ON;IP:192.168.1.66;Enable:FALSE;Action:;
Type:RL;Module:D83ADD3E85F9;Device:Relay2;Value:ON;IP:192.168.1.66;Enable:;Action:;
Type:TM;Module:D83ADD3E85F9;Device:Timer1;Value:;
task4: waiting for response from server......
tcp_client_sent: len=466
tcp_client_receive: len=357 err=0
Responce...
Type;TS;Module;;Device;2846BEA00600004C;Value;22.3C;1;
Type;TS;Module;;Device;2835BAA006000092;Value;22.3C;1;
Type;TS;Module;;Device;2873B6A006000074;Value;22.3C;1;
Type;RL;Module;;Device;Relay1;Value;ON;2;Group;Huntsman;Name;Fire1R;Enable;FALSE;2;Action;2873B6A006000074>25;
Value:ON:2;
Enable:FALSE:2;
Type;RL;Module;;Device;Relay2;Value;OFF;1;Group;Huntsman;Name;Heater;Enable;FALSE;Action;;
Type;TM;Module;;Device;Timer1;Value;;
task4: Close Client
StartTasks...
task1: Connecting to access point JDnD
Connected to wifi with an IP address
MAC ADDRESS: D83ADD3E85F9
IP ADDRESS:  192.168.1.66
task2: Connecting to 192.168.1.1 port 8081
task3: waiting for connection from server.
Connected to 192.168.1.1 port 8081
task3:
Send... 466
Type:TS;Module:D83ADD3E85F9;Device:2846BEA00600004C;Value:22.3C;IP:192.168.1.66;
Type:TS;Module:D83ADD3E85F9;Device:2835BAA006000092;Value:22.7C;IP:192.168.1.66;
Type:TS;Module:D83ADD3E85F9;Device:2873B6A006000074;Value:22.2C;IP:192.168.1.66;
Type:RL;Module:D83ADD3E85F9;Device:Relay1;Value:ON;IP:192.168.1.66;Enable:FALSE;Action:;
Type:RL;Module:D83ADD3E85F9;Device:Relay2;Value:ON;IP:192.168.1.66;Enable:;Action:;
Type:TM;Module:D83ADD3E85F9;Device:Timer1;Value:;
task4: waiting for responce from server.
*** PANIC ***

tcp_slowtmr: TIME-WAIT pcb->state == TIME-W
i grep поиск Raspberry Pi Pico W SDK для «Panic» и обнаружил эту функцию в 'rp2_common/pico_platform_panic/panic.c' и 'pico_platform/platform_base.c'. PrettyPrint-Override ">void panic(const char *fmt, ...)
{
va_list args;
puts("*** PANIC ***\n");
if (fmt)
{
va_start(args, fmt);
vprintf(fmt, args);
va_end(args);
}
puts("\n");
__breakpoint();
}
< /code>
после '*** panic ***', у меня есть пустая строка, за которой следует 'tcp_slowtmr: wit-wait pcb-> state == time-w'. < /p>
I Греп Я замечаю несколько звонков, «Паника (»); и «паника (null);», это может быть актуально, поскольку есть пустая линия линии, но ничего не выделяется, указывая мне в любом реальном направлении.pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c:108: panic("ep %02X was already available", ep->ep_addr);
pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c:307: panic("Can't continue xfer on inactive ep %02X", ep->ep_addr);
pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/hcd_rp2040.c:163: panic("Unhandled buffer %d\n", remaining_buffers);
pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/hcd_rp2040.c:246: panic("Data Seq Error \n");
pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/hcd_rp2040.c:251: panic("Unhandled IRQ 0x%x\n", (uint) (status ^ handled));
pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/hcd_rp2040.c:456: panic("Invalid speed\n");
pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/hcd_rp2040.c:641: panic("hcd_clear_stall");
pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c:352: panic("Unhandled IRQ 0x%x\n", (uint) (status ^ handled));
pico-sdk/src/rp2040/pico_platform/include/pico/platform.h:25:#include "pico/platform/panic.h"
pico-sdk/src/host/hardware_sync/sync_core0_only.c:98: panic("Can't wait on irq for host core0 only implementation");
pico-sdk/src/host/pico_runtime/runtime.c:10: panic("Hard assert");
pico-sdk/src/host/pico_platform/platform_base.c:20:void panic(const char *fmt, ...)
pico-sdk/src/host/pico_platform/include/pico/platform.h:123:void __noreturn panic(const char *fmt, ...);
pico-sdk/src/rp2_common/pico_platform_panic/panic.c:22: panic("not supported");
pico-sdk/src/rp2_common/pico_platform_panic/panic.c:34:void __attribute__((naked, noreturn)) __printflike(1, 0) panic(__unused const char *fmt, ...)
pico-sdk/src/rp2_common/pico_platform_panic/panic.c:65:void __attribute__((noreturn)) __printflike(1, 0) panic(const char* fmt, ...)
pico-sdk/src/rp2_common/pico_platform_panic/include/pico/platform/panic.h:31:void __attribute__((noreturn)) panic(const char *fmt, ...);
pico-sdk/src/rp2_common/pico_runtime/runtime.c:12: panic("Hard assert");
pico-sdk/src/rp2_common/pico_lwip/include/arch/cc.h:89:#define LWIP_PLATFORM_ASSERT(x) panic(x)
pico-sdk/src/rp2_common/pico_cyw43_driver/cybt_shared_bus/cybt_shared_bus.c:275: panic("cyw43 buffer overflow");
pico-sdk/src/rp2_common/pico_cyw43_driver/cybt_shared_bus/cybt_shared_bus_driver.c:414: panic("cyw43 btsdio register corruption");
pico-sdk/src/rp2_common/pico_cyw43_driver/cyw43_driver.c:185: panic("cyw43 has no ethernet interface");
pico-sdk/src/rp2_common/pico_malloc/malloc.c:30: panic("Out of memory");
pico-sdk/src/rp2_common/pico_double/double_init_rom_rp2040.c:17: panic("missing double function");
pico-sdk/src/rp2_common/pico_double/double_init_rom_rp2040.c:61: panic(NULL);
pico-sdk/src/rp2_common/pico_double/double_none.S:77: j panic
pico-sdk/src/rp2_common/pico_double/double_none.S:81: bl panic
pico-sdk/src/rp2_common/pico_float/float_none.S:75: j panic
pico-sdk/src/rp2_common/pico_float/float_none.S:79: bl panic
pico-sdk/src/rp2_common/pico_float/float_init_rom_rp2040.c:18: panic("");
pico-sdk/src/rp2_common/pico_float/float_init_rom_rp2040.c:38: panic("");
pico-sdk/src/rp2_common/pico_printf/printf_none.S:22: bl panic
pico-sdk/src/rp2_common/pico_printf/printf_none.S:25: call panic
pico-sdk/src/rp2_common/pico_async_context/async_context_poll.c:50: panic("async_context_poll context check failed (IRQ or wrong core)");
pico-sdk/src/rp2_common/pico_multicore/multicore.c:335: panic( "Multicoore doorbell %d already claimed on core mask 0x%x; requested core mask 0x%x\n",
pico-sdk/src/rp2_common/pico_multicore/multicore.c:366: panic("No free doorbells");
pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c:62: panic("UART baud rate undefined");
pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c:73: panic("UART baud rate undefined");
pico-sdk/src/rp2_common/pico_stdio_uart/stdio_uart.c:85: panic("UART baud rate undefined");
pico-sdk/src/rp2_common/hardware_clocks/clocks.c:202: panic("Unexpected clocks irq\n");
pico-sdk/src/rp2_common/hardware_clocks/include/hardware/clocks.h:442: panic("System clock of %u Hz cannot be exactly achieved", freq_hz);
pico-sdk/src/rp2_common/hardware_clocks/include/hardware/clocks.h:464: panic("System clock of %u kHz cannot be exactly achieved", freq_khz);
pico-sdk/src/rp2350/pico_platform/include/pico/platform.h:25:#include "pico/platform/panic.h"
pico-sdk/src/common/pico_time/time.c:387: panic("Attempted to sleep inside of an exception handler; use busy_wait if you must");
pico-sdk/src/common/hardware_claim/claim.c:24: panic(message, bit_index);
pico-sdk/src/common/hardware_claim/claim.c:44: panic(message);
< /code>
Замечая, что за паникой следует 'tcp_slowtmr: wait pcb-> state == time-w', я нашел эти строки, которые выглядят так, как будто они могут быть актуальными: < /p>
< /p>
state == TIME-WAIT", pcb->state == TIME_WAIT);
pico-sdk/lib/btstack/3rd-party/lwip/core/src/core/tcp.c:1445: LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);
< /code>
/**
* Called every 500 ms and implements the retransmission timer and the timer that
* removes PCBs that have been in TIME-WAIT for enough time. It also increments
* various timers such as the inactivity timer in each PCB.
*
* Automatically called from tcp_tmr().
*/
void
tcp_slowtmr(void);
< /code>
/* Steps through all of the TIME-WAIT PCBs. */
prev = NULL;
pcb = tcp_tw_pcbs;
while (pcb != NULL) {
LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);
pcb_remove = 0;

/* Check if this PCB has stayed long enough in TIME-WAIT */
if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {
++pcb_remove;
}

/* If the PCB should be removed, do it. */
if (pcb_remove) {
struct tcp_pcb *pcb2;
tcp_pcb_purge(pcb);
/* Remove PCB from tcp_tw_pcbs list. */
if (prev != NULL) {
LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs);
prev->next = pcb->next;
} else {
/* This PCB was the first. */
LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb);
tcp_tw_pcbs = pcb->next;
}
pcb2 = pcb;
pcb = pcb->next;
tcp_free(pcb2);
} else {
prev = pcb;
pcb = pcb->next;
}
}
< /code>
Я не могу понять, как связать этот фоновый процесс, который призван панику, или как я должен обрабатывать ошибку тайм -аута. pico_cyw43_arch_poll < /p>
int loop()
{
cyw43_arch_poll();
cyw43_arch_wait_for_work_until(make_timeout_time_ms(1));
int err = task.Next();
if (err) {
JDND::Terminal::Error("ERROR: task.Next err=" + JDND::itoa(err));
}
// Run timer tasks
if (startTasks)
{
JDND::Terminal::Debug("StartTasks...");
startTasks = false;
timer_start(10);
if (!task.IsActive())
{
int err = task.Start(task1);
if (err) {
JDND::Terminal::Error("ERROR: task.Start " + JDND::itoa(err));
}
}
}
}
< /code>
Мой сервер также также подвержен отделению и обрабатывает только по одному клиенту за раз, но есть только несколько модулей, и даже при запуске только одного модуля, проблема все еще существует. это. Как вы думаете, это жизнеспособно в качестве теста?


Подробнее здесь: https://stackoverflow.com/questions/791 ... ient-panic
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • QEMU USB ThumbDrive Boot: Panic Panic - не синхронизируется: не найдено рабочего инициирования [закрыто]
    Anonymous » » в форуме Linux
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Tcp-клиент raspberry pi pico *** паника ***
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Tcp-клиент raspberry pi pico *** паника ***
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • NRF24L01 Связь между Raspberry Pi 4 и Raspberry Pi Pico (Micropython) не работает
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • NRF24L01 Связь между Raspberry Pi 4 и Raspberry Pi Pico (Micropython) не работает
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»