eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Rynek pracy STM32
Ilość wypowiedzi w tym wątku: 355

  • 191. Data: 2022-07-19 18:58:53
    Temat: Re: Rynek pracy STM32
    Od: Janusz <j...@o...pl>

    W dniu 2022-07-19 o 18:43, heby pisze:
    > On 19/07/2022 18:35, Janusz wrote:
    >> Zapomnij, do embedded się nie nadaje a ty tym się zajmujesz.
    >
    > Bzdura :)
    Jak na razie to ty bajki opowiadasz.

    >
    >>> Jak to zaprząc do realizacji różnych funkcji przez każdą kopię (nie
    >>> wiem jak to się nazywa) tego templates.
    >> Ale na avr-ze to nie pójdzie bo ten procek nie wykonuje programu z ram-u
    >> (architektura Harvard) więc żadnej kopi nie uruchomi.
    >
    > ROFL. Wyjasni nam teraz grzecznie jak działają templates, z nastawieniem
    > na Harvard i dlaczego akurat tam mają nie działać. Tylko czekaj, bo
    > skoczę po popcorn.
    >
    > Odpale też moje arduino, w którym zatrzęsienie templates, nie
    > działajacych na AVR, pozwoli mi, na AVR, właczyć światełko w lampce.

    Bo pisał o dynamicznych :)
    "Jak to zaprząc do realizacji różnych funkcji przez każdą kopię (nie
    wiem jak to się nazywa) tego templates. "

    teraz sprawdź czym się różnią i gdzie są odpalane.
    --
    Janusz


  • 192. Data: 2022-07-19 19:03:41
    Temat: Re: Rynek pracy STM32
    Od: heby <h...@p...onet.pl>

    On 19/07/2022 18:55, Janusz wrote:
    >> A co konkretnie nie ma nic wspólnego?
    > To
    > "Ale to jak ona jest faktycznie realizowana zależy od tego pliku h
    >  o wspólnej nazwie dla wszystkich projektów a tam jest informacja
    >  jaki procesor i jak jest podłączony dla danej wersji płytki."
    >
    >  z tym
    >
    > "Tak. To statyczny polimorfizm."

    Bo to statyczny polmirfizm. Masz abstrakcyjną klasę ModBus, która nie
    musi wiedzieć z jakiego UARTu i na jakim cpu będzie korzystać. Dowiaduje
    się w momencie specjalizacji szablonu, podczas kompilacji, gdzie
    nastepuje konkretyzacjia wszyskiego, na stałe. Dlatego statyczny.

    > To jest konfiguracja sprzętowa a polimorfizm

    Ah, czyli czepiasz się definicji? Tak, konfiguracja sprzętowa jest
    *polimorficzna*, bo masz kilka klas realizujących na rózne sposoby ten
    sam interfejs hardwareowy.

    > to
    > "Polimorfizm (z gr. wielopostaciowość) - mechanizmy pozwalające
    > programiście używać wartości, zmiennych i podprogramów na kilka różnych
    > sposobów[1]. Inaczej mówiąc jest to możliwość wyabstrahowania wyrażeń od
    > konkretnych typów[2]."

    Tak jak abstrakcja ModBus wyabstrahowana od konkretnego UARTu.

    > metody, procedury. W niektórych językach niektóre operatory lub funkcje
    > są przeciążone, ale programista nie może ich dodatkowo dociążać lub
    > przeciążać własnych."

    No patrz, moje wszystkie klasy UART mają metodę "sendChar( char c);

    Natomiast:

    template< class _Uart >
    class ModBus;

    ma gdzieś w metodzie, daleko w środku:

    template< class _Uart >
    ModBus< _Uart >::sedFrame( ... ) {
    [...]
    m_uart.sendChar( foo );
    [...]
    }

    i gdzieś daleko mam taki ModBus< STM32UART0 > modbus;

    To, że nie widzisz tu polimorfizmu, to nie znaczy, że go tam nie ma. C++
    to trudna rzecz.


  • 193. Data: 2022-07-19 19:04:40
    Temat: Re: Rynek pracy STM32
    Od: Janusz <j...@o...pl>

    W dniu 2022-07-19 o 18:40, heby pisze:
    > Dynamiczny polimorfizm nie, choć nie do końca - pewne sztuczki pozwalają
    > kompilatorowi usuwać kod co do którego ma pewnośc, że jest niedostepny.
    > Wiec tak i nie. Zalezy. To skomplikowane.
    Taa i potem piszesz sobie program z wieloma przypisaniami do zmiennej i
    warunkami a kompilator dojdzie do wniosku że ona wynikowo będzie miała
    np 0 i możesz w d.. pocałowac, jedynie volatile ratuje przed szaleństwem
    kompilatora, tu pewnie nawet to nie pomoże :)

    --
    Janusz


  • 194. Data: 2022-07-19 19:05:49
    Temat: Re: Rynek pracy STM32
    Od: heby <h...@p...onet.pl>

    On 19/07/2022 18:58, Janusz wrote:
    >> Bzdura :)
    > Jak na razie to ty bajki opowiadasz.

    Może i bajki, ale diodą migają.

    >> ROFL. Wyjasni nam teraz grzecznie jak działają templates, z
    >> nastawieniem na Harvard i dlaczego akurat tam mają nie działać. Tylko
    >> czekaj, bo skoczę po popcorn.
    >> Odpale też moje arduino, w którym zatrzęsienie templates, nie
    >> działajacych na AVR, pozwoli mi, na AVR, właczyć światełko w lampce.
    > Bo pisał o dynamicznych :)

    Kto? Dynamicznych templates? A co to jest?

    > "Jak to zaprząc do realizacji różnych funkcji przez każdą kopię (nie
    > wiem jak to się nazywa) tego templates. "
    >  teraz sprawdź czym się różnią i gdzie są odpalane.

    Dalej nie wiem co to są "dynamiczne templates". To nie Java z
    generykami. Możesz podkręcić jasność, do czego mam się ustosunkować
    konkretnie?

    Moja lampka napędana Arduino z programem napisanym szblonami dalej
    złośliwie świeci.


  • 195. Data: 2022-07-19 19:09:08
    Temat: Re: Rynek pracy STM32
    Od: heby <h...@p...onet.pl>

    On 19/07/2022 19:04, Janusz wrote:
    >> Dynamiczny polimorfizm nie, choć nie do końca - pewne sztuczki
    >> pozwalają kompilatorowi usuwać kod co do którego ma pewnośc, że jest
    >> niedostepny. Wiec tak i nie. Zalezy. To skomplikowane.
    > Taa i potem piszesz sobie program z wieloma przypisaniami do zmiennej i
    > warunkami a kompilator dojdzie do wniosku że ona wynikowo będzie miała
    > np 0 i możesz w d.. pocałowac

    Słusznie. W taki wypadku kompilator ma prawo usunąc kod.

    Zainteresuj się czym jest bariera, bo to jedyny powód dla któego
    kompilator mógłby usunąc kod - brak barier.

    Chyba że piszesz do rejestru sprzętowego, ale wyraźnie napisałeś
    "zmienna", wiec zakładam, że nie.

    >, jedynie volatile ratuje przed szaleństwem
    > kompilatora, tu pewnie nawet to nie pomoże :)

    W czym nie pomoże? Pokaż przykład.

    Mam nadzieję, że masz pojęcie, że jeśli używasz volatile na zmiennej i
    bez tego znika Ci kod, to robisz coś bardzo, bardzo źle?


  • 196. Data: 2022-07-19 19:13:40
    Temat: Re: Rynek pracy STM32
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2022-07-19 o 18:39, Janusz pisze:
    > W dniu 2022-07-19 o 17:45, Piotr Gałka pisze:
    >> I jeszcze chyba trochę brakuje KiCadowi do Protela 3 pochodzącego z
    >> 1997r.
    > Mi tam nic nie brakuje,a to co ostatnio zrobili z rozsuwaniem ścieszek
    > to bajka. No i za to go też cenię że jest szybki i łatwy w obsłudze,
    > protel to kobyła która jest potwornie przeładowana i trzeba wiedzieć
    > gdzie co zmienić bo jak sie nie wie to mozna długo szukać.
    >

    Co do Protela to wydawało mi się, że Protel3 który mamy nie był aż tak
    przeładowany jak Protel 98 bo coś tam bardzo pozmieniali z plikami
    wtedy, ale Protela 98 praktycznie nie znam.

    To co miałem na myśli na pewno brakowało w V5. W V6 z tego co mi się
    obiło to możliwe, że się da jakoś zrobić dopisując swoje regułki w
    formie nie wiem jak to nazwać - pseudokodu. Tego typu rozwiązanie uważam
    za nie całkiem rozwiązane bo człowiek pisząc ten kod musi trochę
    wiedzieć jak to zapisać. Jak nawet to się uda to jak będzie taka
    potrzeba za dwa lata to od nowa wyszukiwanie przykładów, ich
    analizowanie i ogarnianie.
    A powinno się wszystko dać zrobić na zasadzie wybierania z menu bez
    żadnych wątpliwości.

    Chodzi mi o sprecyzowanie wymagań clearance dla np. izolowanego RS485
    (bo mam takie potrzeby).

    W Protelu 3 mogłem to zrobić tak:
    - definiuję klasę netów (IZO) i wkładam do niej wszystkie po stronie
    izolowanej,
    - w regułach produkcyjnych dodaję jedną regułę o clearance,
    - określam (wybór z menu), że pierwszym obiektem jest klasa netów,
    - według tego co wybrałem pojawia się możliwość wyboru - wybieram
    klasę IZO,
    - określam (wybór z menu), że drugim obiektem jest też klasa netów,
    - z menu wybieram default (nie pamiętam jak to tam zwał).
    - ustalam, że clearance ma być 3mm.

    I działa - pozwala ścieżkom izolowanej części być między sobą blisko,
    ale nie pozwala zbliżyć się do pozostałych ścieżek na płytce.

    W KiCadzie V5 nie dało się tego dlatego, że clearance można było
    przypisać do klasy netów a nie między klasami. Jak do klasy IZO
    przypisałbym 3mm to one między sobą też chciały utrzymywać 3mm.

    Inne co mi brakowało, ale daje się to uzyskać inaczej to klasy footprintów
    W Protelu zawsze dzieliłem elementy na Big, Medium, pozostałe.
    Dla big w regułach produkcyjnych ustawiałem, że podłączenie do filled
    zone przez 4 odcinki o szerokości 30 mils, dla średnich 20 mils, a dla
    pozostałych 10 mils.

    W KiCadzie nie mogę tego tak łatwo definiować na etapie projektowania
    płytki. Zrobiłem to wpisując na stałe te szerokości podłączeń do
    definicji footprintów i jest do przyjęcia.

    Ogólnie na etapie V4 uważałem, że KiCad jest porównywalny z tym Protelem
    3 i dlatego postanowiłem się przenieść. V5 już uważałem za lepszy. W V5
    najbardziej mi brakowało (z mojego starego Protela) możliwości
    określenia kolorów linii połączeń i ukrycia linii GND bo to są dla mnie
    połączenia, których nie muszę zrobić więc strasznie utrudniają przy
    rozmieszczaniu myślenie jak rozplączę te połączenia.
    P.G.


  • 197. Data: 2022-07-19 19:31:55
    Temat: Re: Rynek pracy STM32
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2022-07-19 o 18:35, Janusz pisze:

    > Zapomnij, do embedded się nie nadaje a ty tym się zajmujesz.

    Nie całkiem. Teraz rozmawiamy o embedded pod hasłem mój brat to robi.
    Kiedyś pisał wszystko w assemblerze. Naście lat temu dał się przekonać
    do C, ale nadal w naszych (jako firmy, jego, jako autora) programach są
    spore kawałki w assemblerze. Np. SHA256 w tym AtXmega zabrało mu
    praktycznie wszystkie rejestry. W C się nie da, bo C ileś tam rejestrów
    blokuje na swoje potrzeby. Zapisane w C działało wielokrotnie wolniej
    (konieczność ciągłego przerzucania danych między rejestrami a RAMem).
    Jakaś biblioteka, którą gdzieś znalazł też działała wyraźnie wolniej.

    Ale ja nic nigdy nie napisałem embedded.
    C++ uczyłem się z książki Stroustrupa z 1991 roku. Mam ksero oryginału.
    Potem kupiłem polskie wydanie (1994,1995).
    Na bazie przykładów z książki napisałem Makroassembler 8051, który potem
    brat używał do wszystkiego.
    Dlatego jak bym się uparł to template może być dla mnie, ale nie mam na
    razie powodu się upierać.
    P.G.


  • 198. Data: 2022-07-19 20:01:34
    Temat: Re: Rynek pracy STM32
    Od: heby <h...@p...onet.pl>

    On 19/07/2022 18:35, Janusz wrote:
    > Ale na avr-ze to nie pójdzie bo ten procek nie wykonuje programu z ram-u
    > (architektura Harvard) więc żadnej kopi nie uruchomi.

    Tutaj masz dwa przykłady napisne przed chwilą na kolanie:

    Polimorfizm statyczny:
    https://pastebin.com/wDavM1vq

    A tu dynamiczny:
    https://pastebin.com/dFjzVsCn

    Oba migają diodą jak szalone, na moim Harvardowym Arduino z biednym
    AVRkiem. Co mogę mieć źle, że mam dobrze?


  • 199. Data: 2022-07-19 20:08:30
    Temat: Re: Rynek pracy STM32
    Od: Piotr Gałka <p...@c...pl>

    W dniu 2022-07-19 o 18:40, heby pisze:
    > template< class _HardwreUartImplementation >
    > ModBusProtol {
    >  ...
    > }
    >
    > Raz w kodzie msz wtedy:
    >
    > ModBusProtocol< STM32UART0 > modbus;
    >
    > albo
    >
    > ModBusProtocol< AtmegSoftwarUartImpl > modbus;
    >
    > albo, co najważniejsze:
    >
    > ModBusProtocol< UartMock > modbus;
    >

    Nie rozumiem dlaczego napisałeś, że najważniejsze.
    Czy STM32UART0, AtmegSoftwarUartImpl i UartMock to pochodne
    _HardwreUartImplementation ?


    > Czasami chodzi. Ludzie w embedded mają fobie związane ze słowem virtual,
    > czasami jest podnoszone, że jest "niebezpieczne". Przyjmuje to do
    > wiadomości, ale od 100km nad poziomem gruntu ;)

    Z innej wypowiedzi zrozumiałem, że virtual w ogóle nie da się jak kod
    jest wykonywany z flasha. Ale nie wiem czy na pewno. Przecież zestaw
    wskaźników na funkcje wirtualne danej klasy może być w flashu. Obiekt
    danej klasy znajdujący się w RAMie może mieć wskaźnik na tę tabelkę
    wskaźników więc może wywołać odpowiednią dla siebie funkcję. Jak nawet
    wywołamy według wskaźnika na obiekt to też sobie to znajdzie.

    > Nie dostrzegasz koncepcji: nie ma inkludowania przypadkowych plików,
    > bazując na katalogu w którym jesteś, aby emulować statyczny polimorfizm.
    > To jest już bardzo duży postęp.

    O includowaniu pisałem jako właśnie o złym rozwiązaniu w sytuacji, gdy
    próbujemy dynamicznego polimorfizmu

    > Statyczny polimorfizm nie wymaga C++11.

    Temat C++11 pojawił się w temacie mojego popróbowania innych nowych
    możliwości C++.

    A statyczny polimorfizm jest w temacie embedded a tam są środowiska
    dostarczane przez producentów procków więc pewnie bardziej aktualne.

    Czyli powinienem teraz przekonać brata do C++ koniecznie z templates.
    Będzie trudno :)

    > Rozumiem, że zaleta jest w łatwym do ogarnięciu GUI?

    Dokładnie.

    > Z dwóch powyższych wnosze, że to raczej prototypowanie, a nie
    > programowanie.

    Niektóre moje programy trafiają do naszych klientów. Ogólnie to wziąłem
    się za tę komunikację UDP bo pracowanik, który pisze dla nas (tysiące
    razy poważniejsze programu od moich) twierdził, że to co my kombinujemy
    nie ma sensu i w ogóle 'nie da się'. Zamiast walczyć z jego
    przekonaniami postanowiliśmy, że w takim przypadku trzeba to zrobić samemu.
    Problem nie był w komunikacji tylko w postawionej według niego na głowie
    konfiguracji sprzętu co my uważaliśmy za najlepsze rozwiązanie i nadal
    tak uważamy.

    > Python?

    Nie znam. Chciałbym poznać. Nie mam czasu.
    Poprawiłem raz skrypt w Pythonie do generowanie BOM w KiCadzie.
    Już mało pamiętam. Dodałem wywołanie jakiejś funkcji, która przy okazji
    wołała po raz drugi jakąś funkcję Sort. Z tym, że jedno z tych wywołań
    było jakby Sort to była funkcja klasy a drugi raz jakby to była funkcja
    globalna ale wołana z tą samą klasą jako parametrem.

    Co mnie totalnie zdziwiło. Jak była tylko oryginalna postać tego skryptu
    to sortowało 'nie do końca' a jak doszedł ten drugi Sort (którego wcale
    nie chciałem tam wkładać, po prostu był w czymś co chciałem dołożyć) to
    się okazało, że już sortuje 'do końca'. Tych moich zmian nie ma dużo
    jakbyś chciał to mogę służyć oryginałem i moją wersją.

    Olałem to, że coś się robi dwa razy - nie jestem w stanie stwierdzić
    dlaczego już jest dobrze, ale jest dobrze. Jeszcze nie doszedłem do tego
    tematu w przypadku V6. Mam nadzieję, że obejdzie się bez zaglądania.

    > Niestety czas RADów, czyli "wyklikaj mi
    > onClicka" już mija, ten sposób pisania nie sprawdził się, słabo się
    > skaluje i wręcz narzuca błędy projektowe. Współczesne środowiska do
    > tworzenia GUI są inne. Nie będziesz zadowolony.

    Przyjmuję do wiadomości i cieszę się, że jak na moje skromne potrzeby
    RAD się sprawdził.

    > Nie mam rozwiązania tej bolączki. Może poza zmianą stylu pisania na
    > poprawny ;)

    Mam się obrazić? :)
    P.G.


  • 200. Data: 2022-07-19 20:21:53
    Temat: Re: Rynek pracy STM32
    Od: heby <h...@p...onet.pl>

    On 19/07/2022 20:08, Piotr Gałka wrote:
    >> albo, co najważniejsze:
    >> ModBusProtocol< UartMock > modbus;
    > Nie rozumiem dlaczego napisałeś, że najważniejsze.

    Bo testowanie własnego kodu invitro, unittestami, jest waznym etapem
    pisania jakiegokolwiek kodu, z miganiem diodą włacznie.

    > Czy STM32UART0, AtmegSoftwarUartImpl i UartMock to pochodne
    > _HardwreUartImplementation ?

    W templates "nie muszą być pochodne". Zgodnośc interfejsu badana jest
    podczas wypełniania szablonu. Jeśli tylko jakaś klasa ma metodę foo() i
    ktoś chce ją zawołać w momencie specjalizacji szablonem, to zadziała. W
    dynamicznym polimorfizmie musisz dodawać wartwę interfejsu z metodami
    wirtualnymi. W statycznym nie. Można by powiedzieć, że statyczny
    polimorfizm bazuje na "opóźnionej kompilacji, do ostatniej chwili, kiedy
    już wszystki wiadomo"

    >> Czasami chodzi. Ludzie w embedded mają fobie związane ze słowem
    >> virtual, czasami jest podnoszone, że jest "niebezpieczne". Przyjmuje
    >> to do wiadomości, ale od 100km nad poziomem gruntu ;)
    > Z innej wypowiedzi zrozumiałem, że virtual w ogóle nie da się jak kod
    > jest wykonywany z flasha.

    Bzdura. Stosowny przykład podałem kilka postów wyżej.

    > Ale nie wiem czy na pewno. Przecież zestaw
    > wskaźników na funkcje wirtualne danej klasy może być w flashu. Obiekt
    > danej klasy znajdujący się w RAMie może mieć wskaźnik na tę tabelkę
    > wskaźników więc może wywołać odpowiednią dla siebie funkcję. Jak nawet
    > wywołamy według wskaźnika na obiekt to też sobie to znajdzie.

    Bo to bzdura. Wirtualizacja działa na praktycznie wszyskich procesorach,
    od 6502 po współczesne. Jeśli gdzies nie działa, to będzie jakiś
    wyjątkowy wyjątek.

    >> Nie dostrzegasz koncepcji: nie ma inkludowania przypadkowych plików,
    >> bazując na katalogu w którym jesteś, aby emulować statyczny
    >> polimorfizm. To jest już bardzo duży postęp.
    > O includowaniu pisałem jako właśnie o złym rozwiązaniu w sytuacji, gdy
    > próbujemy dynamicznego polimorfizmu

    Dynamiczny jest w embedded troche niepotrzebny. On jest przydatny kiedy
    programujemy obiektowo. W malym embedded potrzeba obiektowości jest
    sporadyczna.

    >> Statyczny polimorfizm nie wymaga C++11.
    > Temat C++11 pojawił się w temacie mojego popróbowania innych nowych
    > możliwości C++.

    Jesteś ograniczony i tak Builderem oraz bratem używającym z niechęcią C.
    Wątpie, aby cokolwiek z C++11 miało jakąkolwiek wartość przed RAII czy
    szablonami. Nie warto. No może dla "auto" warto.

    > A statyczny polimorfizm jest w temacie embedded a tam są środowiska
    > dostarczane przez producentów procków więc pewnie bardziej aktualne.

    Nie widuję. Statyczny polimorfizm stosowany jest w niektórych
    biblitekach Arduino. Został zaakceptowany przez środowisko embedded
    tylko dlatego, że nikt głośno nie powiedział, że to C++. Jak by
    powiedział, to od razu by się obrazili, jak Janusz. Teraz muszą używac,
    nie ma odwrotu. Pękło bredzenie o tym, jak to C++ się nie nadaje do
    embedded.

    > Czyli powinienem teraz przekonać brata do C++ koniecznie z templates.
    > Będzie trudno :)

    Nie. Za późno. Jesli mysli asemblerem, to nie przekonasz. Nie próbuj
    nawet. Jesli robi dobrze to, co robi, to niech robi, to co robi.

    To taka dysputa teoretyczna. Przecież obaj wiemy, że nie będziesz
    zmieniał przyzwyczajeń bez powodów.

    >> Nie mam rozwiązania tej bolączki. Może poza zmianą stylu pisania na
    >> poprawny ;)
    > Mam się obrazić? :)

    Prawidłowo: ewoluować. To białko ma się dostosować do zmian w
    komputerach, a nie odwrotnie.

strony : 1 ... 10 ... 19 . [ 20 ] . 21 ... 30 ... 36


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: