-
Data: 2023-05-17 21:23:00
Temat: Dziwny problem z kodem w C (gcc mips/pic32)
Od: Marek <f...@f...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Pierwszy raz się spotkałem z czymś takim, o to problematyczny
fragment kodu:
const char *connectionFailureStrings[] = {
"NULL",
/* 0 - not used */
"NULL",
/* 1 - not used */
"WF_JOIN_FAILURE",
/* 2 */
"WF_AUTHENTICATION_FAILURE",
/* 3 */
"WF_ASSOCIATION_FAILURE",
/* 4 */
"WF_WEP_HANDSHAKE_FAILURE",
/* 5 */
"WF_PSK_CALCULATION_FAILURE",
/* 6 */
"WF_PSK_HANDSHAKE_FAILURE",
/* 7 */
"WF_ADHOC_JOIN_FAILURE",
/* 8 */
"WF_SECURITY_MISMATCH_FAILURE", /* 9 */
"WF_NO_SUITABLE_AP_FOUND_FAILURE", /* 10 */
"WF_RETRY_FOREVER_NOT_SUPPORTED_FAILURE"/*11*/
};
static void OutputConnectionFailedMsg(UINT16 eventInfo)
{
UINT8 status;
UINT8 reason;
status = (UINT8)(eventInfo >> 8);
reason = (UINT8)(eventInfo & 0xff);
printf (" status %d
%p\r\n",status,connectionFailureStrings[status]);
printf("WF_Event: Connection Failed: %s
",connectionFailureStrings[status]);
}
Mamy tablicę stringów umieszczoną we flash (pamięci stałej) dzięki
const. Niestety w losowych przypadkach drugi printf generuje wyjątek
adresu z poza zakresu. Zmienna status nie przekracza zakresu i zawsze
nawet jak jest wyjątek ma wartość 3. Okazuje się, że gdy jest
wyjątek to wskaźnik (%p w pierwszym printf) pokazuje jakiś bzdurny
adres, co oczywiście doprowadza do wyjątku w drugim printf. Jak to
możliwe, że adres jest bzdurny??
Przecież tablica jest we flash, adres tutaj powinien być stały i
wygenerowany na etapie kompilacji. Oczywiście w większości przypadków
gdy wszystko jest OK printf pokazuje prawidłowy adres 3 indeksu w tej
tablicy. Ale raz na 10 startów kodu nie... Co ciekawe wygląda na to,
że bzdurny adres pojawia się przy pierwszym uruchomieniu kodu po
flashowaniu mcu ale też nie za każdym razem...
Cały kod jest dość obszerny (75 tys linii), nie ma innych problemów,
to jedyne miejsce, więc chyba można wykluczyć problem z mcu/flash...
--
Marek
Następne wpisy z tego wątku
- 17.05.23 21:43 Jacek Radzikowski
- 17.05.23 22:02 Zbych
- 17.05.23 22:05 Marek
- 17.05.23 22:16 Marek
- 18.05.23 08:55 Janusz
- 18.05.23 12:18 Marek
- 18.05.23 12:44 Janusz
- 18.05.23 13:05 Marek
- 18.05.23 13:08 Dawid Rutkowski
- 18.05.23 13:22 J.F
- 18.05.23 13:29 Grzegorz Niemirowski
- 18.05.23 13:49 heby
- 18.05.23 13:54 Grzegorz Niemirowski
- 18.05.23 14:01 Marek
- 18.05.23 14:13 Dawid Rutkowski
Najnowsze wątki z tej grupy
- Cyna dylemat
- Mierniki poziomu glukozy (CGM, FGM)
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Kontrola nad prądem - sprawdź jak działa [apka - przyp. JMJ] eLicznik
- NETIA i hasło logowania
- Modulacja FM
- Najgorszy język programowania
- Kol. sukces po polsku: firma Szumisie sp. z o.o.
- Chińska Telefonia 6G - Chcą Nas Sterować Elektrycznie - Jak Kukiełki w Teatrze Lalek!!!
- RS-485 ale automatycznie dwukierunkowy
- Leżakujące SSD gubią po roku dane
- kolorowy e-paper
- Sterownik kotła CO praca PWM
- Jakie baterie A23 i LR44?
- OLED SSD1306 - degradacja?
Najnowsze wątki
- 2025-12-14 Dla UTRWALENIA: jak działają "EKO" ZBRODNIARZE
- 2025-12-13 Emisyjność BEV
- 2025-12-13 Dla odprężenia - niezły zawodnik
- 2025-12-12 Cyna dylemat
- 2025-12-12 Warszawa => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-12-12 Warszawa => Architekt rozwiązań (Workday) - Legal Systems <=
- 2025-12-12 Warszawa => Dynamics 365 Commerce/POS Developer <=
- 2025-12-12 Wrocław => React Developer with knowledge of C++ <=
- 2025-12-12 Białystok => Programista React ze znajomością C++ <=
- 2025-12-12 Warszawa => Microsoft Dynamics 365 Finance Consultant <=
- 2025-12-11 To już efekt Żurka czy coś jeszcze GORSZEGO?
- 2025-12-11 Policjanci w mieście Łodzi zmierzą ci prędkość z błędem mniejszym niż producent w laboratorium :-)
- 2025-12-11 Warszawa => Senior Java Developer <=
- 2025-12-11 Kolejny prezent
- 2025-12-10 hameryka




Chińskie auta: Od niskiej jakości do globalnego lidera. Co pokazuje raport EFL?