eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Różnice między mikrokontrolerami
Ilość wypowiedzi w tym wątku: 47

  • 31. Data: 2016-02-07 20:49:52
    Temat: Re: Różnice między mikrokontrolerami
    Od: Zbych <z...@o...pl>

    W dniu 2016-02-07 o 20:39, Sebastian Biały pisze:
    > On 2016-02-07 20:06, Zbych wrote:
    >> GCC jakiś czas temu nauczyło się rozróżniać przestrzenie adresowe:
    >> https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spa
    ces.html
    >
    > To nie wystarczy. Np. w przypadku AVR każda funkcja przyjmująca wskaźnik
    > musiala by się generować osobno dla każdej kombinacji typów
    > wskaźnikowych jakie w programie wystąpią. Dlatego nalezy użyć __flash
    > przy wskaźnikowym argumencie funkcji, czyli znowu wychodzi na to że bez
    > rękodzieła ani rusz.

    To jest raczej oczywiste, tyle że nie trzeba ręcznie wstawiać
    pgm_read_cośtam.




  • 32. Data: 2016-02-07 21:25:05
    Temat: Re: Różnice między mikrokontrolerami
    Od: Marek <f...@f...com>

    On Sun, 7 Feb 2016 20:39:36 +0100, Sebastian
    Biały<h...@p...onet.pl> wrote:
    > To nie wystarczy. Np. w przypadku AVR każda funkcja przyjmująca
    wskaźnik
    > musiala by się generować osobno dla każdej kombinacji typów
    > wskaźnikowych jakie w programie wystąpią. Dlatego nalezy użyć
    __flash
    > przy wskaźnikowym argumencie funkcji, czyli znowu wychodzi na to że
    bez
    > rękodzieła ani rusz.

    A sdcc testowałeś? O ile pamiętam ają port avr. Port pic16 (układy
    18F) daje radę z mieszaniem wskaźników ram/flash (nie odróżnia os
    strony programisty), więc może i port avr podobnie.

    --
    Marek


  • 33. Data: 2016-02-07 21:29:41
    Temat: Re: Różnice między mikrokontrolerami
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2016-02-07 21:25, Marek wrote:
    > A sdcc testowałeś?

    A obsługuje C++? Bo jak nie to jest *bezużyteczny*.


  • 34. Data: 2016-02-07 22:03:26
    Temat: Re: Różnice między mikrokontrolerami
    Od: "J.F." <j...@p...onet.pl>

    Dnia Sun, 7 Feb 2016 12:22:29 +0100, Sebastian Biały napisał(a):
    > On 2016-02-07 11:30, J.F. wrote:
    >>>> Dlaczego? Wystarczy zrobić
    >>>> #define PROGMEM
    >>> A co zrobisz z pgm_read_float, pgm_read_byte i okolicą?
    >> #define na najprostsza konstrukcje "zwyklego C" ?
    >
    > Pytanie co zrobisz gdy portujesz harvard->harvard i obie implementacje
    > radośnie wymysliły własny lepszy sposób na grzebanie w rom.

    Nadal #define moze problem rozwiazac.

    A jesli nie ... no coz, za cos ci programsci musza brac pieniadze :-)

    J.




  • 35. Data: 2016-02-07 22:15:57
    Temat: Re: Różnice między mikrokontrolerami
    Od: "J.F." <j...@p...onet.pl>

    Dnia Sun, 7 Feb 2016 13:03:39 +0100, janusz_k napisał(a):
    > W dniu 2016-02-07 o 08:28, slawek pisze:
    >> On Sat, 6 Feb 2016 00:08:06 +0100, Grzegorz Kurczyk
    >>> AVR ma oddzielną pamięć programu i danych co powoduje, że np do
    >>
    >> Intel x86 też ma oddzielnie segmenty kodu i danych. I co? I jakoś z tym
    >> żyjemy.
    > To kompilator ma a nie procek, x86 od zawsze miały wspólną przestrzeń
    > danych i programu.

    Przestrzen wspolna, adresacja jedna, ale i tu moze segmentacja
    namieszac. Ktos jeszcze pamieta te modele pamieci w C - tiny, small,
    huge .. 6 ich bylo :-(

    od x386 sie troche zmienilo

    > Te segmenty są na siłę robione i to dopiero ostatnimi
    > czasy jak się pojawiły wirusy korzystające z przepełnienia
    > stosu.

    No, nawet w pelnej adresacji 32 bit te segmenty maja pewien sens -
    pozwalaja rozszerzyc przestrzen wirtualna, dynamicznie zarzadzac
    rozmiarem ... i oszczedniej to robic niz w 64 bit :-)

    >> Intel x86 też ma oddzielne instrukcje mov i in.
    > Łaskawco rozrózniaj instrukcje dostępu do pamięci "mov" od instrukcji
    > we/wy "in", bo jak na razie to mieszasz pojęcia.

    Poniekad ten sam problem, tylko w jeszcze innym miejscu.
    taki 8080 nie mial np adresacji in/out posredniej czy przez rejestr,
    tylko wpisany w rozkaz, - co uniemozliwialo zadanie adresu parametrem
    - musial byc z gory okreslony.

    J.


  • 36. Data: 2016-02-07 23:15:26
    Temat: Re: Różnice między mikrokontrolerami
    Od: Marek <f...@f...com>

    On Sun, 7 Feb 2016 21:29:41 +0100, Sebastian
    Biały<h...@p...onet.pl> wrote:
    > A obsługuje C++? Bo jak nie to jest *bezużyteczny*.

    Broń Boże :)

    --
    Marek


  • 37. Data: 2016-02-08 21:28:14
    Temat: Re: Różnice między mikrokontrolerami
    Od: janusz_k <J...@o...pl>

    W dniu 2016-02-07 o 22:15, J.F. pisze:
    > Dnia Sun, 7 Feb 2016 13:03:39 +0100, janusz_k napisał(a):
    >> W dniu 2016-02-07 o 08:28, slawek pisze:
    >>> On Sat, 6 Feb 2016 00:08:06 +0100, Grzegorz Kurczyk
    >>>> AVR ma oddzielną pamięć programu i danych co powoduje, że np do
    >>>
    >>> Intel x86 też ma oddzielnie segmenty kodu i danych. I co? I jakoś z tym
    >>> żyjemy.
    >> To kompilator ma a nie procek, x86 od zawsze miały wspólną przestrzeń
    >> danych i programu.
    >
    > Przestrzen wspolna, adresacja jedna, ale i tu moze segmentacja
    > namieszac. Ktos jeszcze pamieta te modele pamieci w C - tiny, small,
    > huge .. 6 ich bylo :-(
    Pewnie, pisałem na nie. Co nie zmienia faktu że można było wpisać
    dowolny adres i pobrać dane czy zapisać z całej pamięci RAM, dopiero
    w nowych teraz prockach jest blokada na poziomie jądra procka, tylko
    procesy systemowe w ringu 0 mają całkowity dostęp.


    >>> Intel x86 też ma oddzielne instrukcje mov i in.
    >> Łaskawco rozrózniaj instrukcje dostępu do pamięci "mov" od instrukcji
    >> we/wy "in", bo jak na razie to mieszasz pojęcia.
    >
    > Poniekad ten sam problem, tylko w jeszcze innym miejscu.
    > taki 8080 nie mial np adresacji in/out posredniej czy przez rejestr,
    > tylko wpisany w rozkaz, - co uniemozliwialo zadanie adresu parametrem
    > - musial byc z gory okreslony.


    Jarku sprawdz zanim napiszesz, cytuję:
    "Other Instructions

    IN Port Data from Port placed in A register.
    OUT Port Data from A register placed in Port."

    http://fms.komkon.org/comp/CPUs/8080.txt



    --
    Pozdr

    Janusz_K


  • 38. Data: 2016-02-09 00:53:13
    Temat: Re: Różnice między mikrokontrolerami
    Od: "J.F." <j...@p...onet.pl>

    Dnia Mon, 8 Feb 2016 21:28:14 +0100, janusz_k napisał(a):
    > W dniu 2016-02-07 o 22:15, J.F. pisze:
    >>>> Intel x86 też ma oddzielnie segmenty kodu i danych. I co? I jakoś z tym
    >>>> żyjemy.
    >>> To kompilator ma a nie procek, x86 od zawsze miały wspólną przestrzeń
    >>> danych i programu.
    >>
    >> Przestrzen wspolna, adresacja jedna, ale i tu moze segmentacja
    >> namieszac. Ktos jeszcze pamieta te modele pamieci w C - tiny, small,
    >> huge .. 6 ich bylo :-(
    > Pewnie, pisałem na nie. Co nie zmienia faktu że można było wpisać
    > dowolny adres i pobrać dane czy zapisać z całej pamięci RAM,

    W modelu small byl jednak segment kodu, segment danych, a
    adres/wskaznik tylko 16 bitow liczyl.

    >>>> Intel x86 też ma oddzielne instrukcje mov i in.
    >>> Łaskawco rozrózniaj instrukcje dostępu do pamięci "mov" od instrukcji
    >>> we/wy "in", bo jak na razie to mieszasz pojęcia.
    >>
    >> Poniekad ten sam problem, tylko w jeszcze innym miejscu.
    >> taki 8080 nie mial np adresacji in/out posredniej czy przez rejestr,
    >> tylko wpisany w rozkaz, - co uniemozliwialo zadanie adresu parametrem
    >> - musial byc z gory okreslony.
    >
    > Jarku sprawdz zanim napiszesz, cytuję:
    > "Other Instructions
    >
    > IN Port Data from Port placed in A register.
    > OUT Port Data from A register placed in Port."
    >
    > http://fms.komkon.org/comp/CPUs/8080.txt

    No - dane byly w rejestrze A, a adres portu ?
    W drugim bajcie rozkazu.

    Jesli miales w systemie np dwa porty szeregowe (UART), to nie mogles w
    systemie napisac jednej procedury ich obslugi, do ktorej bys przekazal
    adres bazowy sterownika portu. Adres byl staly.

    Podobnie w C nie mogles napisac funcji, ktora by dostala adres portu
    jako parametr. Musial byc staly i znany juz w czasie kompilacji.

    Tzn mogles - jesli program byl w RAM a nie ROM, to program mogl sobie
    zmienic bajt pamieci odpowiedniego rozkazu.

    Cos mi chodzi po glowie, ze podobna zmiana kodu musiala byc stosowana
    takze w x86, ale to jeszcze jakis inny rozkaz musial byc, bo IN/OUT
    mialy mozliwosc adresowania DX.
    A jak uwzglednic kolejki i cache, to sprawa przestaje byc prosta :-)

    J.





  • 39. Data: 2016-02-09 10:30:46
    Temat: Re: Różnice między mikrokontrolerami
    Od: slawek <f...@f...com>

    On Sun, 7 Feb 2016 13:03:39 +0100, janusz_k <J...@o...pl> wrote:
    > To kompilator ma a nie procek, x86 od zawsze miały wspólną
    przestrzeń
    > danych i programu. Te segmenty są na siłę robione i to dopiero
    ostatnimi
    > czasy jak się pojawiły wirusy korzystające z przepełnienia

    Ciekawe. Rejestry DS i CS to w x86 pojawiły się jakieś 30 lat temu...


  • 40. Data: 2016-02-09 11:05:36
    Temat: Re: Różnice między mikrokontrolerami
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "slawek" napisał w wiadomości grup
    dyskusyjnych:a...@n...v.pl.
    ..
    On Sun, 7 Feb 2016 13:03:39 +0100, janusz_k <J...@o...pl> wrote:
    >> To kompilator ma a nie procek, x86 od zawsze miały wspólną
    przestrzeń
    >> danych i programu. Te segmenty są na siłę robione i to dopiero
    ostatnimi
    >> czasy jak się pojawiły wirusy korzystające z przepełnienia

    >Ciekawe. Rejestry DS i CS to w x86 pojawiły się jakieś 30 lat temu...

    Ale pamiec i przestrzen byla jedna.
    Jak sie do DS i CS wpisalo to samo, to mozna bylo kod traktowac jak
    dane.

    Zreszta wskaznik zawieral i segment, wiec mozna bylo jednolicie
    adresowac, chyba, ze ktos sie uparl przy modelu small ...

    J.

strony : 1 ... 3 . [ 4 ] . 5


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: