-
Data: 2022-07-16 22:06:34
Temat: Re: Rynek pracy STM32
Od: heby <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 16/07/2022 13:00, Dawid Rutkowski wrote:
>> Dla równowagi: napisałem panel sterujacy urządzeniem, w Javie, na
>> maluteńkim procesorze Samsunga który ledwo ciągnie Linuxa. Wymagało go
>> kernelowania kompili, ale dało radę. Responsywnośc zaskakująca. Bazuje
>> na Swingu + touchscreen, sporo kontrolek, wskaźników, kilka wątków,
>> komunikacja z urządzeniem, zagadnienia realitme.
> Żeby nie było tylko flejmu, to techniczne pytania:
> - kiedy to było?
~2009. Przyznaję jednak, że trochę zgaduje, bo nie mam teraz dostępu do
lepszej estymacji.
> - musiał być kolor? I touch (choć pewnie jednopunktowy i rezystywny)?
Taki był zastany. Nie musiał być, ale ten panel pracował w warunkach
hali produkcyjnej, był już zamontowany i sens zmiany nie wydawał się
atrakcyjny finansowo i czasowo.
> - i linux po coś innego niż java?
Linux dlatego, że był gotowy kernel na ten CPU dostarczony przez chińczyków.
Java dlatego, że oprogramowanie sterujace wczęsniej pracowało na PC i
zostało (po lekkim dostosowaniu GUI do innego rozmiaru) przeniesione
prawie za darmo.
Najwięcej czasu pochłoneło uruchomienie Linuxa na tej maszynie tak, aby
działała Java. To nie było wcale trywialne, domyślna konfiguracja
kernela na tą maszynę nie zawiera wielu ważnych detali (emulacja FPU,
jakieś brakujące syscalle z których korzysta Java itp, mało już tego
pamietam).
> - jaki był "pośrednik" między javą/swingiem a sprzętem graficznym - X, console
framebufer, jeszcze coś innego?
X na framebuffer. Framebuffer jako element jądra dostarczony z
urządzeniem w postaci patchy na kernel. Osiągał bardzo słabe fps, miałem
nawet podejrzenia czy nie jest wpięty przez SPI, ale gdzieś potem
dowiedziałem się, że ten typ tak ma.
> - po co wątki?
Bo aplikacja obsługiwała 4 niezależne maszyny, a sam algortym sterujący
był napisany w JavaScript, odpalającym się pod Rhino (Javowy interpreter
JS). Urzedzenie ogarniało 4 niezlaeżne jednostki wymagajace osobnego i
niezależnego sterowania, z bardzo dużą ilością stanów i decyzji do
podjęcia po drodze. Całośc procesu była zapisana w języku JS.
> - jakie zagadnienia realtime?
Na przykład miałeś wąski czas kiedy mogłeś odczytać parametry
elektryczne silnika (moc/prąd itd). To tak pod 50ms.
Gdyby java była tak strasznie niedobra, to było by niemozliwe. Tymczasem
nie tylko Java dawała rade, ale dodatkowo te parametry odczytywał skrypt
w JavaScript pracujący jako embedowany język w środku aplikacji w Javie.
Czyli dodatkowa warstwa spowolnienia.
Kiedy się tego podejmowałem nie wiedziałem, czy to w ogóle możliwe.
Okazało się nie tylko możliwe ale relatywnie proste - po ogarnięciu
odpalania Javy wystarczyło dostosować GUI apliakcji do mniejszego
wyświetlacza i ruszyła bez zająknięcia. Tu była ogromna zaleta -
aplikacja wcześniej pracowała na PC i była sprawna, przetestowana,
dopieszczona.
> To był tylko panel kontrolny czy też sterownik tego urządzenia (samo urządzenie nie
miało innego komputera)?
To było jedno i drugie:
1) kilka niezależnych wątków obsługujących kilka niezależnych maszyn na
róznych etapach pracy
2) zbieranie danych pomiarowych i sterowanie układami wykonawczymi (RS485)
3) wysyłanie wyników do centralnej bazy danych przez sieć
4) obserwacja na żywo stanu na wyświetlaczu
5) kilka elementów interakcyjnych pozwalających na ręczne przejęcie
sterowania nad dowolną z maszyn.
Możesz założyć, że to był automatyczny tester produktów z dość
skomplikowanymi operacjami wymagającymi kilkunastu akcji i odczytów
parametrów elektrycznych i mechanicznych w określonym czasie.
Obsługujący dowolną ich liczbę (ale praktycznie tylko 4 z uwagi na
zwykłe gabaryty maszyny).
PS. Znalazłem sprawny egzemplarz w domu, a czkolwiek bez maszyny
niewiele na nim można zobaczyć bo uruchamia się w trybie raportujacym
błedy łaczoności.
Następne wpisy z tego wątku
- 18.07.22 09:57 jacek pozniak
- 18.07.22 10:38 heby
- 18.07.22 11:25 RoMan Mandziejewicz
- 18.07.22 14:58 Arnold Ziffel
- 18.07.22 15:02 Arnold Ziffel
- 18.07.22 15:02 Arnold Ziffel
- 18.07.22 15:10 Arnold Ziffel
- 18.07.22 15:14 Arnold Ziffel
- 18.07.22 15:42 heby
- 18.07.22 16:35 RoMan Mandziejewicz
- 18.07.22 19:01 Piotr Gałka
- 18.07.22 19:19 heby
- 18.07.22 19:54 J.F
- 18.07.22 20:26 Piotr Gałka
- 18.07.22 20:55 Piotr Gałka
Najnowsze wątki z tej grupy
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
- I3C
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
- jak szybko plynie prad
- Płytki Milkv-Duo
- Światłowód między budynkami
- POtrzebny bufor 3.3<>5V, jedonkieruowy, trójstanowy, wąski
- retro
- Bezprzewodowe polączenie Windows z projektorem
Najnowsze wątki
- 2024-11-17 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- 2024-11-18 Gdynia => Spedytor Międzynarodowy <=
- 2024-11-18 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-11-18 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-18 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-11-18 Kraków => Business Development Manager - Network and Network Security
- 2024-11-18 Kraków => Network Systems Administrator (IT Expert) <=
- 2024-11-18 Kraków => Administrator Systemów Sieciowych (Ekspert IT) <=
- 2024-11-18 Zdunowo => Senior PHP Symfony Developer <=
- 2024-11-18 Łódź => QA Inżynier <=
- 2024-11-18 Lublin => Senior PHP Developer <=
- 2024-11-18 Gliwice => Specjalista ds. public relations <=
- 2024-11-18 Gdynia => Front-End Developer (React/Three.js) <=
- 2024-11-18 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-18 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=