eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaDziwny problem z kodem w C (gcc mips/pic32)
Ilość wypowiedzi w tym wątku: 171

  • 71. Data: 2023-05-18 21:49:41
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: heby <h...@p...onet.pl>

    On 18/05/2023 21:29, Dawid Rutkowski wrote:
    > I wiesz, że sprawdza zakresy tablic w runtime, a C nie?

    I tu wchodzi C++, cały na biało.

    https://en.cppreference.com/w/cpp/container/array

    std::array.

    Możesz miec lub nie, bounds checking. Kwestia wyboru [] albo "at". To
    nie jest std::vector. To najzwyklejsza tablica C z opcjonalnymi bajerami.


  • 72. Data: 2023-05-19 09:33:30
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: JDX <j...@o...pl>

    On 18.05.2023 14:13, Dawid Rutkowski wrote:
    [...]
    > 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.
    A co rozumiesz przez wyjątek/exception? Bo to ma różne znaczenia:
    https://en.wikipedia.org/wiki/Exception_handling, zobacz też
    https://en.wikipedia.org/wiki/Interrupt. W każdym razie do obsługi
    wyjątków sprzętowych OS nie jest konieczny.


  • 73. Data: 2023-05-19 09:45:14
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: JDX <j...@o...pl>

    On 18.05.2023 21:12, Janusz wrote:
    [...]
    > wklepywało się te kilka komend w asemblerze. Owszem był jakiś kompilator
    > asemblera obsługujący monitory ale to do czegoś wiekszego się nadawało a
    Nigdy nie było żadnego kompilatora assemblera na jakąkolwiek platformę... :-)


  • 74. Data: 2023-05-19 10:19:09
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: JDX <j...@o...pl>

    On 18.05.2023 16:16, Dawid Rutkowski wrote:
    [...]
    > A z trzeciej strony pozwolenie na C++ to otwarcie nowej Puszki Pandora.
    > Tu dopiero możesz się dowiedzieć, co to jest prawdziwy bug, a nie jakiś tam sizeof.
    http://micro-os-plus.github.io/
    https://github.com/stateos/StateOS (produkt polski)
    https://github.com/DISTORTEC/distortos
    https://github.com/flit/argon-rtos

    Nakładki:
    https://github.com/grygorek/FreeRTOS_cpp11
    https://github.com/QuantumLeaps/qpcpp


  • 75. Data: 2023-05-19 10:29:06
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: JDX <j...@o...pl>

    On 18.05.2023 16:40, heby wrote:
    [...]
    > #define FOO_FLAG 1<<6
    > #define BAR_FLAG 1<<3
    > #define OUT_FLAG 1<<2
    >
    > i funkcję:
    >
    > void setFlags( int flags, int extra_flags );
    >
    > No i które flags przyjmują jakie define?
    >
    > To przykład z typowego systemu embedded.
    Masz pomysł jak zceplusplusować typowe definicje SFR-ów znane z C, np:

    /* Power Control */
    #define PCON (*((volatile unsigned char *) 0xE01FC0C0))
    #define PCONP (*((volatile unsigned long *) 0xE01FC0C4))

    Tak, aby to było w ,,duchu C++". Może referencje?

    volatile unsigned char &PCON = (*((volatile unsigned char *) 0xE01FC0C0));
    volatile unsigned long &PCONP = (*((volatile unsigned long *) 0xE01FC0C4));


  • 76. Data: 2023-05-19 10:30:28
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: heby <h...@p...onet.pl>

    On 19/05/2023 10:29, JDX wrote:
    > Masz pomysł jak zceplusplusować typowe definicje SFR-ów znane z C, np:
    > /* Power Control */
    > #define PCON           (*((volatile unsigned char *) 0xE01FC0C0))
    > #define PCONP          (*((volatile unsigned long *) 0xE01FC0C4))

    A co konkretnie chcesz osiągnąć?


  • 77. Data: 2023-05-19 11:25:06
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: JDX <j...@o...pl>

    On 19.05.2023 10:30, heby wrote:
    > On 19/05/2023 10:29, JDX wrote:
    >> Masz pomysł jak zceplusplusować typowe definicje SFR-ów znane z C, np:
    >> /* Power Control */
    >> #define PCON           (*((volatile unsigned char *) 0xE01FC0C0))
    >> #define PCONP          (*((volatile unsigned long *) 0xE01FC0C4))
    >
    > A co konkretnie chcesz osiągnąć?
    >
    O enkapsulację, aby byle kto/co tak łatwo nie mógł mazać po tych
    rejestrach. Czyli aby te rejestry były prywatnymi polami klasy, coś w stylu:

    class PowerMgmt {
    private:
    volatile unsigned char &refPCON = (*((volatile unsigned char *)
    0xE01FC0C0));
    volatile unsigned long &refPCONP = (*((volatile unsigned long
    *) 0xE01FC0C4));
    };


  • 78. Data: 2023-05-19 11:51:20
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: JDX <j...@o...pl>

    On 18.05.2023 15:37, heby wrote:
    [...]
    > Nie. Mechniazmów C++ możesz używać dowolnych, w dowolnym momencie. Nikt
    > nie porzuca C, nie ma takiej potrzeby. W C++ jest masa ułatwień, któe
    > znakomicie przydadzą się w C bez potrzeby rezygnacji i dysonansu
    > ideologicznego. std::size to jedno z setek, użytecznych w embedded,
    > ułatwień, za darmo.
    >
    No nie, zupełnie nie za darmo. Trzeba poświęcić sporo czasu na
    dokształcanie, aby efektywnie używać nowego języka. Aby np. dowiedzieć
    się, że w ogóle istnieje coś takiego jak std::size(). Bo sama zamiana,
    bez podstaw ,,teoretycznych", kompilatora C na kompilator C++ nie ma
    większego sensu. Chodzi o to, aby używać C++, a nie ,,C z klasami".


  • 79. Data: 2023-05-19 11:53:09
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: heby <h...@p...onet.pl>

    On 19/05/2023 11:25, JDX wrote:
    >>> Masz pomysł jak zceplusplusować typowe definicje SFR-ów znane z C, np:
    >>> /* Power Control */
    >>> #define PCON           (*((volatile unsigned char *) 0xE01FC0C0))
    >>> #define PCONP          (*((volatile unsigned long *) 0xE01FC0C4))
    >> A co konkretnie chcesz osiągnąć?
    > O enkapsulację, aby byle kto/co tak łatwo nie mógł mazać po tych
    > rejestrach. Czyli aby te rejestry były prywatnymi polami klasy, coś w
    > stylu:
    > class PowerMgmt {
    >     private:
    >         volatile unsigned char &refPCON = (*((volatile unsigned char *)
    > 0xE01FC0C0));
    >         volatile unsigned long &refPCONP = (*((volatile unsigned long
    > *) 0xE01FC0C4));
    > };

    private:
    void setPCON( ... value );

    Jeszcz lepiej:
    public:
    void allowSleep();
    void wakeUp();
    bool isSleeping() const;

    private:
    [...magic...]


  • 80. Data: 2023-05-19 12:07:54
    Temat: Re: Dziwny problem z kodem w C (gcc mips/pic32)
    Od: JDX <j...@o...pl>

    On 18.05.2023 18:29, heby wrote:
    [...]
    > jest kontekst i cel użycia. To jest pierwotna potrzeba. sizeof to tylko
    > workaround sprzed 30 lat na brak size. Przyznaje, popularny do dzisiaj.
    No Panie, ale jak za pomocą std::size() otrzymać rozmiar tablicy w
    bajtach? :-)

strony : 1 ... 7 . [ 8 ] . 9 ... 18


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: