eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika[Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
Ilość wypowiedzi w tym wątku: 81

  • 31. Data: 2012-05-02 21:11:39
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2012-05-02 14:52, Andrzej Ekiert wrote:
    >> Ja rozumiem to jako podejście w stylu boost::mpl.
    > Ładne. Ale szczerze mówiąc to nie bardzo widzę, jaki problem to
    > rozwiązuje w przypadku programowania naszego 8-bitowca z 1kB kodu.

    Powiedzmy - dopasowanie typu [char|short] licznika w czasie kompilacji.
    Policzenie jaki typ nalezy wybrać dla zbioru flag. Policzenie stalej w
    czasie kompilacji. Kompilacja warunkowa bez #define. Itd.

    > Sprytne i fajnie pokazuje, jak działa destruktor. Ale ja bym po prostu
    > napisał:
    > cli();
    > ... kod krytyczny
    > sei();

    teraz:

    cli()
    ....
    return
    ...
    goto
    ...
    break
    ...
    sei();

    I już po tobie. A po mnie nie.

    > Lepiej widać w jednym miejscu co się dzieje, bez szukania definicji
    > klasy CriticalSection, bez zastanawiania się gdzie jej obiekt wychodzi z
    > zasięgu

    Nie zastanawiasz sie. Na pewno wszystkie miejsca działają poprawnie. na
    tym polega sztuczka. Możesz oderwać się od assemblera i skupić na
    algorytmie. nadmierne przejmowanie się szczegółami uniemozliwia pisanie
    czytelnego kodu.

    >, no i bez ryzyka, że osoba, która nie jest autorem kodu nie
    > zauważy, że wsród paru zmiennych lokalnych jest jakiś dziwny pozornie
    > nieużywany obiekt.

    Jesli "pozornie nieuzywan obiekt" nazywa się SekcjaKrytyczna i on tego
    nie zauważy, to pozostawienie w tym miejscu makra, sei, cli nic nie
    pomoże - przecież pozornie jest nieużywane. Trudno, nie mówimy tutaj o
    programistach basica oddelegowanych do poprawiania C++.

    > Ja tam wolę widzieć przebieg programu, a nie musieć ciągle pamiętać, że
    > między ostatnią instrukcją funkcji, a '}' uruchomi się jeszcze seria
    > niewidzialnych funkcji.

    A więc dobrze podejrzewałem - jesteś assemblerowcem. Musisz wiedzieć co
    sie dzieje bo nie ufasz kompilatorom. Ja natomiast odwrotnie. Znajduje
    zdcecydowanie wiecej bugów we własnym kodzie niż w wygenerowanym przez
    kompilator.

    > Zresztą, akurat w mojej praktyce programowania
    > małych uC potrzeba nietrywialnej destrukcji "obiektu" zachodzi bardzo
    > rzadko.

    Mam to za darmo. Używam. PICowcy mogą tylko obejśc się smakiem albo
    ciągnąć tasiemcowe wywody dlaczego im to nie potrzebne.

    >> Moje marzenie to PIC w sensie peryferiów i AVR w sensie rdzenia. Ale
    >> sie nie doczekalem bo przyszły ARMy i pozamiatały.
    > Architektura 16-bit Microchipa (PIC24, dsPIC33) to właśnie coś takiego.

    Co takiego? Ślepą uliczkę sprzętowego stosu? Brak wsparcia poza żalosnym
    kompilatorem producenta? Nawt MC sie puknął w czolo i zakopał to cudo
    głęboko pod ziemią żeby już nie straszyło. Tylko że ARM jest już za tani
    i za dobry.

    > Bardzo elegancko zaprojektowana, przyjemnie się z tym pracuje - moim
    > zdaniem dużo ładniejsza niż MIPS, którego użyli w PIC32, oraz niż ARM.

    Dla mnie nie ma różnicy. Nie pisuje w assemblerze dla niepoznaki nazwanym C.

    >> No chyba, że architektura PICów nie da się wmontować w backed gcc.
    > gcc zostało przeniesione na architektury 16 i 32 bit. Jeśli chodzi o te
    > 32 bit (rdzeń MIPS) to spodziewam się, że prędzej czy później kompilator
    > C++ się pojawi.

    Jasne. http://www.microchip.com/forums/m544964.aspx

    > Do 16-bit też pewnie mogliby to w miarę tanio zrobić -
    > mi zupełnie jednak na tym nie zależy.

    Słusznie. Nie ma targetu.


  • 32. Data: 2012-05-02 22:32:14
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Jerry1111 <j...@w...pl.pl.wp>

    On 02/05/2012 00:28, Sebastian Biały wrote:
    > On 2012-05-01 23:35, Andrzej Ekiert wrote:

    > Destruktory to cecha która nie wymaga podejścia obiektowego do
    > programowania. Najprościej:
    >
    > struct CriticalSection {
    > CriticalSection{ cli(); }
    > ~CriticalSection{ sei(); }
    > };
    >
    > To żadne programowanie obiektowe. A destruktor przydatny.

    Z tego by wynikalo ze 'ukryte' odblokowanie przerwan na koncu funkcji
    (gdy destruktor zostanie wywolany przez kompilator) jest mniej
    niebezpieczne niz nieodblokowanie przerwan w ogole? No to powodzenia w
    debugowaniu kodu ktory ma 300kB bez OSa w celu znalezienia ktora funkcja
    za pozno wlacza przerwania.

    >> za to przez swoje "samoczynne" uruchamianie
    >> się stanowią niezłą okazję do implementacji subtelnych bugów,
    >> szczególnie u niezbyt doświadczonych programistów
    >
    > Odwrotnie: dzieki swojemu samoczynnemu dzialaniu *ochraniają* przed
    > wieloma subtelnymi bugami w stylu "a mi się tu zapomniało zdjąć flagę
    > przerwania".

    Odwrotnie - pomaga to zamaskowac bug i zrobic go duzo trudniejszym do
    wykrycia.

    > Moje marzenie to PIC w sensie peryferiów i AVR w sensie rdzenia.

    Nie widze przydatnosci...

    > Ale sie
    > nie doczekalem bo przyszły ARMy i pozamiatały.

    Boli, bo nie da sie uzaleznic od jednego dostawcy. W firmie nigdy nie
    uzyjemy PICa ani AVRa do niczego co wychodzi na zewnatrz, bo cena za
    single-source supply jest za duza.

    >> Bardzo ciekawe. Akurat na twoje ulubione AVRy jest kompilator - powstał
    >> pewnie tylko dla zabawy. Poza tym, tego twojego nagłego czepienia się
    >> Ady nie rozumiem już zupełnie. To dlatego, że ja o niej napisałem, to
    >> już musisz być koniecznie przeciw?
    >
    > Nie muszę. Ada to zacny język, choć obrośnięty legendą jakości która jak
    > widać musi walczyć z faktami. Ale stawianie go obok C++ w kontekscie tej
    > rozmowy uważam za niepoważne. *Nikt* nie pisze w Ada poza szumem
    > statystycznym. Nie zmuszajmy MC żeby pisał kompilator Ady dla 0.01%
    > programistow uC.

    Taaa... a te wszystkie samoloty co po swiecie lataja to w C++ pisane wg
    Ciebie?

    To ze nie wiesz/nie slyszales/nie podano do publicznej wiadomosci, nie
    daje prawa nikomu mowic ze Ady sie nie uzywa. Uzywa sie w bardzo
    powaznych zastosowaniach.


    PS: 'crap' to sie tlumaczy jako 'gowno' (z US english), a nie
    'beznadzieja'. Sprawdz w slowniku.

    --
    Jerry1111


  • 33. Data: 2012-05-02 23:53:32
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2012-05-02 22:32, Jerry1111 wrote:
    > Z tego by wynikalo ze 'ukryte' odblokowanie przerwan na koncu funkcji

    Na koncu bloku. Jesteś *pewny* że wiedz gdzie strzela destruktor?

    > jest mniej
    > niebezpieczne niz nieodblokowanie przerwan w ogole?

    Obydwa przypadki sa niebezpieczne. Wole ukryte ale *pewne* niż jawne i
    podatne na błędy.

    > No to powodzenia w
    > debugowaniu kodu ktory ma 300kB bez OSa w celu znalezienia ktora funkcja
    > za pozno wlacza przerwania.

    Wyłacza zawsze przed } kończącym dany blok lub natychmiast po
    opuszczeniu bloku inną metoda. W czym problem z tym "za późno" ? Możesz
    podać przykład?

    Stosowanie techniki "scoped" jest powszechne w świecie C++, choćby
    boost::scoped_lock. Stosuje sie bo można. Inne języki nie mają to sie
    nie stosuje.

    > Odwrotnie - pomaga to zamaskowac bug i zrobic go duzo trudniejszym do
    > wykrycia.

    Nie zgadzam się. Moje doświadczenia sa zupełnie inne. To działa tak:
    implementujesz raz i wiesz że działa. Przechodzisz do dalszych spraw nie
    przejmując sie że zapomnisz. Po prostu nie zapomnisz. *Zawsze* zadziała.
    Chyba że będzie bug w kompilatorze. Ale on może być też przy 2+2 w C.

    > Taaa... a te wszystkie samoloty co po swiecie lataja to w C++ pisane wg
    > Ciebie?

    Możesz zacytować moją wypowiedź z której wynika wprost że skoro Ada
    spowodował bum rakiety to C++ jest używany jako język firmware
    samolotów? Jakieś message id?

    > To ze nie wiesz/nie slyszales/nie podano do publicznej wiadomosci, nie
    > daje prawa nikomu mowic ze Ady sie nie uzywa. Uzywa sie w bardzo
    > powaznych zastosowaniach.

    Ktore stanowią szum statystyczny implementacji firmware na procesorach w
    ogóle. Co napisałem wydawalo mi się dość wyraźnie. Poza tym szumem - nie
    stosuje się.

    > PS: 'crap' to sie tlumaczy jako 'gowno' (z US english), a nie
    > 'beznadzieja'. Sprawdz w slowniku.

    Sprawdzałem. Ostatnio gówno bylo "shit". Ale ten świat idzie do przodu.


  • 34. Data: 2012-05-03 01:05:19
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: "Andrzej Ekiert" <d...@t...pl>

    Dnia 02-05-2012 o 21:11:39 Sebastian Biały <h...@p...onet.pl>
    napisał(a):

    > teraz:
    >
    > cli()
    > ....
    > return
    > ...
    > goto
    > ...
    > break
    > ...
    > sei();
    >
    > I już po tobie. A po mnie nie.

    Nie, bo czegoś takiego nie zrobię.

    Za to:

    CriticalSection critical;

    ... kod rzeczywiscie krytyczny

    ... dłuższy kod dopisany rok później

    Przerwania zablokowane ciut za długo i sobie możesz szukać błędu przez
    nabliższy miesiąc. Tak, można ograniczyć zasięg tego obiektu, ale...

    > A więc dobrze podejrzewałem - jesteś assemblerowcem. Musisz wiedzieć co
    > sie dzieje bo nie ufasz kompilatorom.

    Dobrze się czegoś o sobie dowiedzieć i nawet do psychoanalityka iść nie
    trzeba. Jeśli już koniecznie chcesz wiedzieć, to zaczynałem od Pascala
    (Basica jako dzieciak nie liczę), potem C++, potem VHDL. Następnie z
    wielkim trudem przeszedłem z C++ do C. Faktycznie sporo fragmentów
    programuję w assemblerze, ale tylko tam, gdzie jest to absolutnie wymagane
    ze względu na wydajność. Normalnie w C, a po stronie komputera głównie w
    C++. Po prostu staram się używać młotka do wbijania gwoździ, a śrubokręta
    do wkręcania wkrętów.

    Nie o to chodzi, że muszę wiedzieć co się dzieje (to że muszę wiedzieć co
    kompilator robi, to jest jasne), ale o to, że kod powinien wyglądać tak,
    że będę od jednego rzutu oka widział co się dzieje.

    >> Architektura 16-bit Microchipa (PIC24, dsPIC33) to właśnie coś takiego.
    >
    > Co takiego? Ślepą uliczkę sprzętowego stosu?

    Jakiego sprzętowego stosu?! Sprzętowy jest w 8-bitowych PICach, a ja tu
    piszę o 16-bitowych. Jak już coś krytykujesz, to wypadałoby wiedzieć o tym
    cokolwiek.

    > Brak wsparcia poza żalosnym kompilatorem producenta?

    gcc (oraz HiTech). Bardzo różne od gcc na AVR i od gcc na ARMa, tak?

    > Nawt MC sie puknął w czolo i zakopał to cudo głęboko pod ziemią żeby już
    > nie straszyło.

    Bądźże poważny. Obok PIC32 najsilniej rozwijane rodziny (szczególnie
    PIC24F). Najbogatsze peryferia, a do układów XLP mało co może podskoczyć w
    kwestii poboru mocy. ARMa w wielu aplikacjach zastępuje z powodzeniem, a
    cenowo zwykle łatwo wygrywa.

    >> Jeśli chodzi o te
    >> 32 bit (rdzeń MIPS) to spodziewam się, że prędzej czy później kompilator
    >> C++ się pojawi.
    >
    > Jasne. http://www.microchip.com/forums/m544964.aspx

    Niezły argument :) Ale to jednak ja jeżdzę na te szkolenia dla FAE
    Microchipa, a nie ci przypadkowi użytkownicy forum. Nie mówię, że _wiem_
    że się pojawi, bo się tym nie interesowałem. Za 2 tygodnie jadę, mogę przy
    okazji spytać o oficjalne plany.

    ae


  • 35. Data: 2012-05-03 10:27:33
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2012-05-03 01:05, Andrzej Ekiert wrote:
    > CriticalSection critical;
    > ... kod rzeczywiscie krytyczny
    > ... dłuższy kod dopisany rok później
    > Przerwania zablokowane ciut za długo i sobie możesz szukać błędu przez
    > nabliższy miesiąc. Tak, można ograniczyć zasięg tego obiektu, ale...

    Podobnie jak wstawiając return i zapominając sei. Ot, taka robota.
    Trzeba być uważnym.

    > Faktycznie sporo fragmentów
    > programuję w assemblerze, ale tylko tam, gdzie jest to absolutnie
    > wymagane ze względu na wydajność.

    Kiepski kompilator?

    > Normalnie w C, a po stronie komputera
    > głównie w C++. Po prostu staram się używać młotka do wbijania gwoździ, a
    > śrubokręta do wkręcania wkrętów.

    Właśnie. Dlatego używam C++ do uC zamiast wbijać gwoździe plastikowym
    młotkiem made in china Microchipa.

    >>> Architektura 16-bit Microchipa (PIC24, dsPIC33) to właśnie coś takiego.
    >> Co takiego? Ślepą uliczkę sprzętowego stosu?

    Przepraszam moja wina, zapędziłem się. PIC24 nie ma. Swoją drogą
    Świetnie to potwierdza tezę o slepej uliczce :D

    >> Brak wsparcia poza żalosnym kompilatorem producenta?
    > gcc (oraz HiTech). Bardzo różne od gcc na AVR i od gcc na ARMa, tak?

    Jest jakis gcc? To spaniałe wieści. A gdzie go mogę pobrać? Pytam serio,
    jeszcze kilka miesiący temu widziałem w sieci same narzekania na brak
    gcc @ pic.

    > ARMa w wielu aplikacjach zastępuje z powodzeniem,
    > a cenowo zwykle łatwo wygrywa.

    Wiadomo. Szczególnie że masa kodu dla arma da się kompilować wprost ...
    oh wait... da się ?

    > Za 2 tygodnie jadę, mogę
    > przy okazji spytać o oficjalne plany.

    Pytaj. PICe mnie zawsze intertesowaly ze względu na peryferia. Ale
    podejście do programisty jest skandaliczne.


  • 36. Data: 2012-05-03 11:12:03
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: "Andrzej Ekiert" <d...@t...pl>

    Dnia 03-05-2012 o 10:27:33 Sebastian Biały <h...@p...onet.pl>
    napisał(a):

    > Podobnie jak wstawiając return i zapominając sei. Ot, taka robota.
    > Trzeba być uważnym.

    Święte słowa. Żadna sztuczka panaceum na brak uwagi nie jest.

    >> Faktycznie sporo fragmentów
    >> programuję w assemblerze, ale tylko tam, gdzie jest to absolutnie
    >> wymagane ze względu na wydajność.
    >
    > Kiepski kompilator?

    Nie, kod odpowiadający na zdarzenia w czasie rzeczywistym. Żeby ci
    uświadomić o czym mowa: w kawałku, nad którym teraz pracuję jest jeden
    wykomentowany "nop" i 5 linijek komentarza kiedy należy go włączyć
    (parametry zewnętrznego układu w relacji do oscylatora). Optymalizuję tam
    takie rzeczy, jak wykorzystanie rejestrów roboczych w przerwaniu,
    skutecznie minimalizując liczbę zachowywanych na stosie i kombinując takie
    kodowanie stanów i dobór instrukcji, żeby nie trzeba było z tych rejestrów
    korzystać. Gdybym napisał ten kod w języku wyższego poziomu, natychmiast
    straciłbym tę kontrolę.

    > Jest jakis gcc? To spaniałe wieści. A gdzie go mogę pobrać? Pytam serio,

    Skoro serio, to http://www.microchip.com/compilers
    gcc był od początku istnienia architektury 16-bit, czyli od 2004 roku, w
    którym wprowadzono pierwszego dsPIC30F.

    ae


  • 37. Data: 2012-05-03 11:19:17
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2012-05-03 11:12, Andrzej Ekiert wrote:
    > Optymalizuję
    > tam takie rzeczy, jak wykorzystanie rejestrów roboczych w przerwaniu,
    > skutecznie minimalizując liczbę zachowywanych na stosie i kombinując
    > takie kodowanie stanów i dobór instrukcji, żeby nie trzeba było z tych
    > rejestrów korzystać.

    Dziwne. Przecież to rola kompilatora. Wręcz książkowa.

    > Gdybym napisał ten kod w języku wyższego poziomu,
    > natychmiast straciłbym tę kontrolę.

    Wydaje mi się że tą kontrole musisz utrzymać z powodu kiepskiego
    kompilatora.

    PS. Tak, też mam ciasny kod. Jednak z wyników optymalizacji gcc jestem
    zadowolony, w *ostateczności* biorę asm, jak każdy. Jednak nie trafia mi
    się to codziennie żeby warunkowało dobór kompilatora do *wszystkiego*.

    > > gcc był od początku istnienia architektury 16-bit, czyli od 2004 roku, w
    > którym wprowadzono pierwszego dsPIC30F.

    full-featured ANSI compliant C. A c++ ?


  • 38. Data: 2012-05-03 11:50:51
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: "Andrzej Ekiert" <d...@t...pl>

    Dnia 03-05-2012 o 11:19:17 Sebastian Biały <h...@p...onet.pl>
    napisał(a):

    >> Gdybym napisał ten kod w języku wyższego poziomu,
    >> natychmiast straciłbym tę kontrolę.
    >
    > Wydaje mi się że tą kontrole musisz utrzymać z powodu kiepskiego
    > kompilatora.

    Uparłeś się utrzymywać, że kompilator, o którego istnieniu nie wiedziałeś
    jeszcze wczoraj, z całą pewnością jest do niczego. Pewnie z powodu
    wbudowanych wad architektury, której kompletnie nie znasz.

    Przyjmij do wiadomości, że to jest przypadek w którym można albo zejść do
    asm, albo zająć się czym innym.

    > full-featured ANSI compliant C. A c++ ?

    Toż zaczęliśmy od tego, że c++ nie ma. Proponuję też na tym skończyć, bo
    mi się już nie chce dłużej.

    ae


  • 39. Data: 2012-05-03 12:00:35
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2012-05-03 11:50, Andrzej Ekiert wrote:
    > Proponuję też na tym skończyć, bo
    > mi się już nie chce dłużej.

    Zgoda. EOT.


  • 40. Data: 2012-05-03 15:32:06
    Temat: Re: [OT] [Zlecę] wykonanie interface'u Ethernetowego do architektury Z80
    Od: mk <reverse_lp.pw@myzskm>

    W dniu 2012-05-02 14:52, Andrzej Ekiert pisze:

    >> Destruktory to cecha która nie wymaga podejścia obiektowego do
    >> programowania. Najprościej:
    >>
    >> struct CriticalSection {
    >> CriticalSection{ cli(); }
    >> ~CriticalSection{ sei(); }
    >> };
    >
    > Sprytne i fajnie pokazuje, jak działa destruktor. Ale ja bym po prostu
    > napisał:
    >
    > cli();
    > .... kod krytyczny
    > sei();
    >
    > Lepiej widać w jednym miejscu co się dzieje, bez szukania definicji
    > klasy CriticalSection,

    Tak argumentując to można powiedzieć, że bez szukania definicji cli i
    sei też słabo widać co się dzieje (w szczególności: nie widać tu czy
    jest jakiś związek między funkcjami cli i sei).

    > bez zastanawiania się gdzie jej obiekt wychodzi z
    > zasięgu, no i bez ryzyka, że osoba, która nie jest autorem kodu nie
    > zauważy, że wsród paru zmiennych lokalnych jest jakiś dziwny pozornie
    > nieużywany obiekt.

    Jeśli użytkownik (programista) tak stwierdzi, to jest to wynik braku
    znajomości języka czy braku znajomości projektu w którym przyszło mu
    pracować.
    Opisany mechanizm jest jasny i prosty -- nie przekonuje mnie tutaj
    argumentacja, że mamy do czynienia z jakąś ezoteryką (włączając w to
    debugowanie). Ostatecznie można opatrzyć kod odpowiednimi komentarzami.

    >> Odwrotnie: dzieki swojemu samoczynnemu dzialaniu *ochraniają* przed
    >> wieloma subtelnymi bugami w stylu "a mi się tu zapomniało zdjąć flagę
    >> przerwania".
    >
    > Ja tam wolę widzieć przebieg programu, a nie musieć ciągle pamiętać, że
    > między ostatnią instrukcją funkcji, a '}' uruchomi się jeszcze seria
    > niewidzialnych funkcji.

    W C lub w programowaniu C podobnym: IMO jeden diabeł.
    Natomiast jeśli program jest w C++, to dochodzą wyjątki... wtedy dopiero
    jest problem, gdy właśnie trzeba pamiętać, gdzie tu jeszcze wyjątek może
    polecieć i ręcznie wywoływać odpowiednie finalizacje (pamiętając o
    odpowiedniej kolejności i czy daną akcję sprzątania rzeczywiście należy
    przeprowadzić).

    Pisząc w C, czyli nie mając do dyspozycji mechanizmu wyjątków i
    automagicznego wołania destruktorów, obsługa sytuacji nietypowych
    (różnych błędów itp.) jest czasami naprawdę upierdliwa. Wyjątki w C++ to
    IMO jedna z ważniejszych i bardziej użytecznych cech różniących ten
    język od C (tak, ma to swoją cenę).

    pzdr
    mk

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


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: