-
11. Data: 2023-05-18 13:22:22
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: "J.F" <j...@p...onet.pl>
On Wed, 17 May 2023 22:16:05 +0200, Marek wrote:
> On Wed, 17 May 2023 22:02:05 +0200, Zbych <z...@n...org> wrote:
>> Trzeba było napisać:
>> const char * const connectionFailureStrings[] = {
>
> Okok faktycznie. Dobra, szukam dalej co po tej tablicy jeździ..
No wlasnie - const to jedno, ale cos jezdzi.
Przekompiluj jak wyzej - moze wyrzuci błąd i znajdziesz,
ale jesli nie, to moze być bardziej skomplikowane szukanie.
J.
-
12. Data: 2023-05-18 13:29:23
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: "Grzegorz Niemirowski" <g...@g...net>
Janusz <j...@o...pl> napisał(a):
> No i co z tego, przecież to dwie osobne tablice i osobno się adresują i
> chyba kompilator czy linkier nie ma tu błędu w adresacji?
Niby osobno adresowane ale nie do końca, bo są w jednej pamięci. Jak
wyjedziesz poza zakres jednej, to wpadniesz na drugą. To nie jest błąd
kompilatora ani linkera ale uroki C. Błąd w kodzie polega na zapomnieniu, że
sizeof() nie służy do zwracania liczby elementów tablicy. Można go użyć w
tej roli tylko dla tablic o typie jednobajtowym (char, uint8_t itp) a nie
short.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
-
13. Data: 2023-05-18 13:49:02
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: heby <h...@p...onet.pl>
On 18/05/2023 13:29, Grzegorz Niemirowski wrote:
> Błąd w kodzie polega na
> zapomnieniu, że sizeof() nie służy do zwracania liczby elementów
> tablicy.
Słusznie. Pozwólcie, że wsadzę kij w mrowisko i pokażę co należy używać
od kilku lat:
https://en.cppreference.com/w/cpp/iterator/size
A bodaj od 20 lat jest w boost.
-
14. Data: 2023-05-18 13:54:03
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: "Grzegorz Niemirowski" <g...@g...net>
heby <h...@p...onet.pl> napisał(a):
> Słusznie. Pozwólcie, że wsadzę kij w mrowisko i pokażę co należy używać od
> kilku lat:
> https://en.cppreference.com/w/cpp/iterator/size
> A bodaj od 20 lat jest w boost.
Ale to trzeba zacząć C++ używać :)
--
Grzegorz Niemirowski
https://www.grzegorz.net/
-
15. Data: 2023-05-18 14:01:27
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: Marek <f...@f...com>
On Thu, 18 May 2023 04:08:13 -0700 (PDT), Dawid Rutkowski
<d...@w...pl> wrote:
> To nie turbo pascal tylko C na uC - i tak się dziwię, że OP
> pisze tu o jakichś wyjątkach, może to w wersji mips pod jaki
> mś unixem.
Błagam, przecież pic32 to pełen mips dlaczego nie ma mieć wyjątków??
Ma nawet wsparcie częściowe do VM user/kernel space. A MZy nawet
TBLe do translacji adresów wirtualnych. Na ATmega8 świat się nie
kończy...
--
Marek
-
16. Data: 2023-05-18 14:13:49
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: Dawid Rutkowski <d...@w...pl>
czwartek, 18 maja 2023 o 14:01:30 UTC+2 Marek napisał(a):
> On Thu, 18 May 2023 04:08:13 -0700 (PDT), Dawid Rutkowski
> <d...@w...pl> wrote:
> > To nie turbo pascal tylko C na uC - i tak się dziwię, że OP
> > pisze tu o jakichś wyjątkach, może to w wersji mips pod jaki
> > mś unixem.
> Błagam, przecież pic32 to pełen mips dlaczego nie ma mieć wyjątków??
> Ma nawet wsparcie częściowe do VM user/kernel space. A MZy nawet
> TBLe do translacji adresów wirtualnych. Na ATmega8 świat się nie
> kończy...
O, nawet się nie zainteresowałem, że pic32 to mips - sądziłem, że się bardziej
wysilili.
Wszystko kwestia kosztu, w tym ilości RAMu - 386 było już w 1986,
ja miałem już w 1933, a Linux Torvalds, dla zbawienia ludzkości, na szczęście już w
1990 (chyba).
No ale żeby się nie kopać po kostkach, to i na 386 można sobie puszczać jeden program
(tak narodził
się Linux - Linusowi nie podobał się emulator terminal w minixie, więc napisał
własny,
działający na "gołym" 386 - ale 32-bitowym), i pewnie na pic32 też - ale żeby były
wyjątki obsługiwane, to coś tam jeszcze trzeba albo dokompilować - w stylu eCosa,
czyli jednozadaniowego, wielowątkowego systemu operacyjnego - lub coś po prostu
puszczać, w stylu Linuxa czy innego OSa.
Więc co tam jeszcze masz?
Czy wszystko, łącznie z obsługą wyjątków, jest w tych 75k linii kodu? Bo można i tak,
choć ciekawi, jak te wyjątki obsługujesz.
-
17. Data: 2023-05-18 14:14:30
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: Dawid Rutkowski <d...@w...pl>
czwartek, 18 maja 2023 o 13:54:05 UTC+2 Grzegorz Niemirowski napisał(a):
> heby <h...@p...onet.pl> napisał(a):
> > Słusznie. Pozwólcie, że wsadzę kij w mrowisko i pokażę co należy używać od
> > kilku lat:
> > https://en.cppreference.com/w/cpp/iterator/size
> > A bodaj od 20 lat jest w boost.
> Ale to trzeba zacząć C++ używać :)
Zaraz usłyszysz, że "jest za darmo" ;>
-
18. Data: 2023-05-18 14:37:19
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: heby <h...@p...onet.pl>
On 18/05/2023 13:54, Grzegorz Niemirowski wrote:
>> https://en.cppreference.com/w/cpp/iterator/size
>> A bodaj od 20 lat jest w boost.
> Ale to trzeba zacząć C++ używać :)
Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.
-
19. Data: 2023-05-18 14:59:43
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: Dawid Rutkowski <d...@w...pl>
czwartek, 18 maja 2023 o 14:39:29 UTC+2 heby napisał(a):
> On 18/05/2023 13:54, Grzegorz Niemirowski wrote:
> >> https://en.cppreference.com/w/cpp/iterator/size
> >> A bodaj od 20 lat jest w boost.
> > Ale to trzeba zacząć C++ używać :)
> Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.
I to wystarczy, żeby sizeof zaczął oznaczać liczbę elementów tablicy?
Analogicznie do dowodu nie wprost:
"Jedna rana stanowczo śmiertelna, ale pozostałe dadzą się wyleczyć!"
-
20. Data: 2023-05-18 15:04:27
Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
Od: Marek <f...@f...com>
On Thu, 18 May 2023 05:13:49 -0700 (PDT), Dawid Rutkowski
<d...@w...pl> wrote:
> t w tych 75k linii kodu? Bo można i tak,
> choć ciekawi, jak te wyjątki obsługujesz.
Wyjątki obsługuje funkcja przypisana do exception handler, ją już
wywołuje core procesorami. Jest kilka wyjątków:
static enum {
EXCEP_IRQ = 0, // interrupt
EXCEP_AdEL = 4, // address error exception (load or
ifetch)
EXCEP_AdES, // address error exception (store)
EXCEP_IBE, // bus error (ifetch)
EXCEP_DBE, // bus error (load/store)
EXCEP_Sys, // syscall
EXCEP_Bp, // breakpoint
EXCEP_RI, // reserved instruction
EXCEP_CpU, // coprocessor unusable
EXCEP_Overflow, // arithmetic overflow
EXCEP_Trap, // trap (possible divide by zero)
EXCEP_IS1 = 16, // implementation specfic 1
EXCEP_CEU, // CorExtend Unuseable
EXCEP_C2E // coprocessor 2
} _excep_code;
Oczywiście można po wyjątku wyjść z handlera i działać dalej ale w
moim przypadku handler zapamiętuje co i gdzie się wydarzyło i
zatrzymuje kod aż watchdog zresetuje procesor.
Kiedyś na MZ zrobiłem małego OSa z ochroną pamięci, obsługą pamięci
wirtualnej i TBLami, ładowaniem procesów itp... Skończyło się tylko
na tym, że jeden proces wypisywał AAA a drugi BBB na konsoli
(zbieżność z początkiem innego OSa przypadkowa).
Zresztą na MZ można uruchomić pełnego Linuxa więc....
--
Marek