« Odpowiedź #20 dnia: Lutego 07, 2020, 19:49:28 »
Witam,
przeglądam obecnie kod dla wersji 1.6.4 i nie dokońca wierzę w zapewnienia @przemka. Moim skromnym zdaniem problem pojawiających się dziwnych wpisów jest może być spowodowany błędami w logice oprogramowania.
Uwaga będzie trochę technicznie.
EFC-01 pracuje pod kontrolą FreeRTOS. Jest to system operacyjny czasu rzeczywistego ułatwiający zarządzanie pracą urządzenia przy bardziej złożonych zadaniach. Dzięki jego zastosowaniu wprowadza on przede wszystkim mechanizm wielowątkowści. Ale jak w źyciu nie ma róży bez kolców gdzie jeden problemy udaje się rozwiązać łatwiej to dokłada to innych problemów. Przede wszystkim mam tu myśli synchronizację dostępu do zasobów współdzielonych i po drugie w znacznym stopniu utrudnia debugowanie błędów z tym związanych.
Ale wracając do meritum sprawy podstawowy problem moim zdaniem jest już zawary przy błędnym alokowaniu stosu dla tworzonych wątków w fw EFC-01 bo nie bardzo wiem jak wytłumaczyć fakt że autor oprogramowania np alokuje stos dla wątku obsługi komunikacji z klientem wielkości 2560 bajtów a następnie w funkcji nowo utworzonego wątku deklaruje zmienną do której wpisywane są dane otrzymane od klienta przez sieć o wielkości 6000 bajtów które oczywiście zajmą miejsce na deklarowanym stosie. dodatkowo jak za pewne wiecie EFC moze utworzyć 10 takich wątków (max 10 połączeń TCP). Więc w specyficznych sytuacjach może dojść do zapisu danych w niekontrolowanych miescach pamięci co w połączeniu oczywiście z wielowątkowością może powodować błędy przy zapisie danych. A wszystko moim zdaniem wynika z nie dokońca ugruntowanej wiedzy autora dot. programowania w środowisku FreeRTOS.
Reasumując: błąd związany z zapisem może być nie zwykle trudny do zdiagnozowania i usunięcia bez przeprowadzenia gruntownego przeglądu alokowania pamięci na stosie i przeprowadzonia statycznej analizy stosu dla uruchamianych wątków.
Pozdrawiam,
Gadulowaty
Zapisane
Produkcja:RPi5,EFC-01; Sensory:MEM-21,RCK-21,9xRCM-21,2xRCR-21,RCW-21; Odbiorniki: 2xROB-21, 5xROG-21,11xROP-21,11xROP-22,1xRDP-21,11xSRP-22; Nadajniki: 2xP-457/36,4xP-457/4,P-457/8,P-521L,1xRNK-22,1xRNK-24 | Developer:RPi4,EFC-01,RCK-21,ROB-21,ROP-22,ROG-21,RCM-21