Embedded systémy a microcontrollers

Trader

Re:Embedded systémy a microcontrollers
« Odpověď #30 kdy: 14. 08. 2018, 14:34:53 »
A stran těch znalostí - embedded není IT, to je spíš elektronika.
Elektronik nenaprogramuje složitější embedded aplikaci. Je potřeba přesah do sw inženýrství.
Já bych to SW inženýrství zas tak nepřeceňoval...


Re:Embedded systémy a microcontrollers
« Odpověď #31 kdy: 14. 08. 2018, 14:50:52 »
programy jsou o 10 řádů jednodušší.
To uz davno ne. Stovky tisic radku jsou uplne bezne i na mikrokontrolerech (externi knihovny a standartni knihovny prekladace nepocitam, dokonce ani generovane datove soubory). Pro porovnani Linux jadro ma neco pres 25M radek a je jednim z nejvetsich samostatnych projektu na svete.

f

Re:Embedded systémy a microcontrollers
« Odpověď #32 kdy: 14. 08. 2018, 16:25:20 »
programy jsou o 10 řádů jednodušší.
To uz davno ne. Stovky tisic radku jsou uplne bezne i na mikrokontrolerech (externi knihovny a standartni knihovny prekladace nepocitam, dokonce ani generovane datove soubory). Pro porovnani Linux jadro ma neco pres 25M radek a je jednim z nejvetsich samostatnych projektu na svete.

Embedded už dávno není jenom hraní s A/D převodníkem a dosahuje značné komplexity i abstrakce. Představte si třeba lokomotivu, nebo běžný osobní vůz disponující třeba 30 ECU. A ten RTOS taky musí někdo napsat...

tomík_z

Re:Embedded systémy a microcontrollers
« Odpověď #33 kdy: 14. 08. 2018, 17:50:01 »
S tím nízkým platem na tom něco bude. Ono sice embedded expertů moc není, ale firem co dělají embedded vývoj je IMHO ještě méně. Třeba já dělám od supportu pro vývoj HW (podílení se na návrhu a review schémat), přes FPGA (nic velkého, spíš glue logic), jednočipy (od 8-bit 8051 a AVR po 32-bit ARM), linux kernel development (hlavně drivery, ale psal jsem i silně specializovaný filesystém a dělal drobné hacky ve scheduleru, pár věcí jsem protlačil i do upstreamu), vlastní RTOS, linuxové systémové programování v C a v C++ až po nejvyšší vrstvy aplikační vrstvy nad Qt frameworkem vč. GUI. Vedle klávesnice na stole pájka a osciloskop (jak tu už někdo psal), oboje využívané velmi často. Platí mi 30k čistého a víc to už prý nepůjde. Ale práce je to opravdu zajímavá, což beru jako naprosto významný benefit, který mi ten nižší plat kompenzuje, jinak bych se na to vyprdnul a šel něco mastit do korporátu.

askdlksdf

Re:Embedded systémy a microcontrollers
« Odpověď #34 kdy: 14. 08. 2018, 21:11:09 »
A ten RTOS taky musí někdo napsat...
Myslíš ten primitivní scheduler co přepíná tasky? To ti napíšu za odpoledne.


lebowski

Re:Embedded systémy a microcontrollers
« Odpověď #35 kdy: 14. 08. 2018, 22:22:04 »
Naozaj embedded obsahuje viac oborov zároveň, a tiež ma to fascinuje.

Niekedy stretávam ľudí ktorí sú pôvodom elektronici, ale základy
SW architektury ako modularita, genericita, Demeterov zákon im nič nehovoria. Obecne výrazy ako: unit test, pekný kód, dokumentace sú zbytočnosti.
To potom dopadá tak že plošnák síce stihne navrhnúť za víkend, ale celý kód je v "main" metode,
namiesto header file všetko píše literálom a potom je kód plný vecí ako: 0xF4236759
ktorý zapíše do 10 fieldov registra zároveň a po dvoch týždňoch už to po sebe nevie ani prečítať...
Nehovoriac o tom že aj to schématko má celé na jednej strane velkosti A0 ktorá sa dá vytlačiť
akurát tak na nejakom plottri a je to na štýl tape-outu integrovaných obvodov v 70-80 rokoch...

Alebo iná perla je potom človek zo SW ktorý sa začal venovať embedded a netuší čo je to dioda,
register, že v tej FLASH pamäti ten kód neprepíšem bez toho že by som ju premazal, že existuje
DMA, TLB, Cache, alebo čo sú to SoC zbernice ani nehovorím... Do základov digitálneho designu, alebo nebodaj analogu radšej ani zabrusovať nebudem, to by som "nevybrousil".

Vzdávam hold luďom ktorý do aspoň trochu slušnej miery ovládajú oboje a tiež sa o to snažím.
Bohužial to nejde do posledných detailov.

K platom, nízke platy v tomto obore budú dokiaľ sa k tomu ľudia tak budú stavať. Pokiaľ vie človek
ukázať skúsenosti, je ochotný sa samovzdelávať (hold je toho samoučenia veľa keďže je to viac oborov ako sa už písalo), orientuje sa, tak si vie zjednať "dobrý" plat (Úvodzovky kvôli tomu že sme
stále lacná východoeurópska pracovná sila, v Nemecku, Rakúsku Embedded SW, HW, FPGA,
Digital Designer dostane na seniornej úrovni 60-80K Euro ročne)

Konkurencia až tak malá nie je, firiem je aj v ČR na embedded dosť. Iba pre info Eaton ponúkal až 80 na Senior Embedded HW inžiniera. Siemens na Senior Embedded SW vraj niečo okolo 70. Všetko v hrubom. Keď si z toho človek zoberie SHZ, tak sa to pomaly začne štverať na tých javistov čo makajú za 100K plus v korporátoch. Valeo bralo na podobné pozice tiež za 80 a prišli s tým prví
už 3-4 roky dozadu kedy brutálne preplácali konkurenciu aby im niekto išiel makať do "open space".

S tím nízkým platem na tom něco bude. Ono sice embedded expertů moc není, ale firem co dělají embedded vývoj je IMHO ještě méně. Třeba já dělám od supportu pro vývoj HW (podílení se na návrhu a review schémat), přes FPGA (nic velkého, spíš glue logic), jednočipy (od 8-bit 8051 a AVR po 32-bit ARM), linux kernel development (hlavně drivery, ale psal jsem i silně specializovaný filesystém a dělal drobné hacky ve scheduleru, pár věcí jsem protlačil i do upstreamu), vlastní RTOS, linuxové systémové programování v C a v C++ až po nejvyšší vrstvy aplikační vrstvy nad Qt frameworkem vč. GUI. Vedle klávesnice na stole pájka a osciloskop (jak tu už někdo psal), oboje využívané velmi často. Platí mi 30k čistého a víc to už prý nepůjde. Ale práce je to opravdu zajímavá, což beru jako naprosto významný benefit, který mi ten nižší plat kompenzuje, jinak bych se na to vyprdnul a šel něco mastit do korporátu.

30K v čistom vychádza niečo ako 41K v hrubom. Vodič tramvaje dostane v Prahe 35K v hrubom, príde mi absurdné aby človek ako ty dostal 41K. Mojou prioritou je tiež že chcem robiť niečo čo ma baví, preto sa nejdem učiť Javu do banky, ale predsa len by človek mal poznať svoju cenu.

askdlksdf

Re:Embedded systémy a microcontrollers
« Odpověď #36 kdy: 15. 08. 2018, 02:59:58 »
Mojou prioritou je tiež že chcem robiť niečo čo ma baví, preto sa nejdem učiť Javu do banky, ale predsa len by človek mal poznať svoju cenu.
Tak hlavně to nezapomeň robiť ve své rodné krajině a neparazitovat jinde.

lebowski

Re:Embedded systémy a microcontrollers
« Odpověď #37 kdy: 15. 08. 2018, 03:26:30 »
Mojou prioritou je tiež že chcem robiť niečo čo ma baví, preto sa nejdem učiť Javu do banky, ale predsa len by človek mal poznať svoju cenu.
Tak hlavně to nezapomeň robiť ve své rodné krajině a neparazitovat jinde.

systém mi to umožňuje, tak prečo to nevyužiť ;) tie zamindrákované typy ľudí, ktorí nie sú dosť dobrí na to aby na trhu práce zvíťazili nad jedným "čobolákom" ako ja, ma naozaj nezaujímajú.

Kiwi

Re:Embedded systémy a microcontrollers
« Odpověď #38 kdy: 15. 08. 2018, 08:33:59 »
debugování je o dva řády složitější než v Javě a o řád než systémařina na PC.

programy jsou o 10 řádů jednodušší.
Teď jde o to, jak posuzuješ jednoduchost/složitost. Počet LOC není měřítko složitosti projektu.

https://www.youtube.com/watch?v=ubaX1Smg6pY

mirek

Re:Embedded systémy a microcontrollers
« Odpověď #39 kdy: 15. 08. 2018, 12:49:52 »
A ten RTOS taky musí někdo napsat...
Myslíš ten primitivní scheduler co přepíná tasky? To ti napíšu za odpoledne.
Hmmm, pán je expert a už toho má ve skutečných embedded projektech evidentně hodně za sebou.

pepa

Re:Embedded systémy a microcontrollers
« Odpověď #40 kdy: 15. 08. 2018, 15:51:03 »
Nastoupil jsem jako programator v pythonu, parkrat sem pomohl s necim na mikrokontrolerech, ze zacatku aplikacni veci no a ted delam uplne vsechno. Ale ten pyhton mi zustal, dokonce priskocili i veci v cloudu nebo na vps, to samozrejme neslo i prichod javascriptu a dalsich.

Re:Embedded systémy a microcontrollers
« Odpověď #41 kdy: 15. 08. 2018, 16:20:00 »
A ten RTOS taky musí někdo napsat...
Myslíš ten primitivní scheduler co přepíná tasky? To ti napíšu za odpoledne.
Hmmm, pán je expert a už toho má ve skutečných embedded projektech evidentně hodně za sebou.
Presne. Napsat preemtivni prepinani tasku je sranda. Jenze pak nastoupi nutnost posilat mezi tasky data, nutnost znat presne maximalni delku vypnuti interruptu ve vnitrnich kritickych sekcich kvuli zaruceni doby odezvy a to je stale jen miminko a do dospeleho RTOS priserne daleko.
Jeden RTOS mam za sebou. Cca 1 den overeni konceptu. 14 dni aby bylo co predvest a obhajit proc je ten koncept lepsi nez reseni zvazovane k nakupu. A dukaz, ze to "dokazeme udelat" pred managementem. A pak 3 roky do prvniho nasazeni naosto v zarizeni s vlivem na bezpecnost.
Pro predstavu se doporucuji podivat na seL4 mikrojadro a tu matematiku kolem. Pak se podivat na matematiku dokazovani ze to procesor stihne v jinem, nez rate-monotonic planovaci (pro ten je to jednoduche viz dukaz Liu&Layland 1973) napriklad fesibility testy u earliest-deadline-first.

MarSik

Re:Embedded systémy a microcontrollers
« Odpověď #42 kdy: 15. 08. 2018, 19:30:52 »
Pro predstavu se doporucuji podivat na seL4 mikrojadro a tu matematiku kolem. Pak se podivat na matematiku dokazovani ze to procesor stihne v jinem, nez rate-monotonic planovaci (pro ten je to jednoduche viz dukaz Liu&Layland 1973) napriklad fesibility testy u earliest-deadline-first.

Jsou i jiné přístupy. Run-to-completion je třeba o dost jednodušší na napsání (jen jeden stack a žádné mutexy ani semafory). Používá se třeba v Quantum Leaps (preemptivní run-to-completion "interpret" stavových automatů).

Max délku zákazu přerušení samozřejmě musíte u real-time počítat vždy. Obzvláště na těch malých jednojádrech, kde jiná synchronizační primitiva nejsou.

Embedded kód rozhodně není jednodušší oproti "velkému" PC. O co méně má řádků kódu, o to složitější tam jsou interakce a omezení.

mln

Re:Embedded systémy a microcontrollers
« Odpověď #43 kdy: 15. 08. 2018, 20:16:32 »
Ako inžinier v menšej západoslovenskej firme zaoberajúcej vývojom a výrobou elektroniky a embedded programovaniu vidím najviac problém v nedostatku zákazníkov ochotných rozumne zaplatiť komplet vývoj.

Firma si účtuje niečo malo cez 30€ na hodinu (čo je na Slovensku sadzba bežného autoservisu), a na väčšinu cenových ponuk protistrana sa ani neuráči odpovedať alebo vyjednávať o cene (napr zjednodušenie výrobku s cieľom znížiť cenu). Väčšina zákaziek sú nejaké kusové drobnosti alebo subdodavky pre iné väčšie firmy  s cenou ktorá sotva pokryje náklady. Ani z bohatého nemeckeho korporatu nechcú zaplatit normálnu sumu za poloautomatické testovacie pripravky pre biorobotov v montovniach a vykrúcaju kde sa dá.

Je to prúser v prípade že niekto výplatu riešenu systémom skoro minimálna mzda +  odmena == podiel zo zisku zakazky. Takže človek sa musí hrať na vešticu a naceniť zakazku a dúfať že sa neobjavi nejaký skryty technický problém. Pokiaľ sa moj výrobok nedostane do seriovej produkcie, tak som na skoro minimalke. Za vyše 2 roky čo tam robim som šťastie na sériovo vyrábany výrobok nemal, len kusove zakazky.     

Ešte 2-3 roky počkam kym naberiem prax dúfajúc či sa neobjavi nejaký europsky Trump ktory by zaviedol clá/embargo na čínsku elektroniku, a ak nie tak dovi dopo dop*če Slovensko a skúsim šťastie inde.

Fakt netuším prečo kdejaká lopata čo lepí webstranky alebo eshopy sa v pohode dostane platovo cez 1000€ a ak by neboli firmy zaostale tak može pracovať z domu vačšinu pracovného času v pracovnom prostredí bez zvýšeného rizika (a neustaleho podvedomého strachu) zabitia elektrinou/požiaru/výbuchu výkonových polovodičov alebo akumulátorov/nebezpečných strojov a chemikalii a pod.

Rada všetkým študentom, vykašlite sa na embedded programovanie aj elektroniku, aj ked vas to bavi a zvládate to. Burani zakazníci vám za nič z oblasti programovanie C,  RTOS, návrh elektroniky, spracovanie/analýzu signalov, non PLC automatizáciu, yýkonovú elektroniku, EMC nikdy nič poriadne nezaplatia. 

JD

Re:Embedded systémy a microcontrollers
« Odpověď #44 kdy: 15. 08. 2018, 21:20:25 »
Jsou i jiné přístupy. Run-to-completion je třeba o dost jednodušší na napsání (jen jeden stack a žádné mutexy ani semafory). Používá se třeba v Quantum Leaps (preemptivní run-to-completion "interpret" stavových automatů).

Max délku zákazu přerušení samozřejmě musíte u real-time počítat vždy. Obzvláště na těch malých jednojádrech, kde jiná synchronizační primitiva nejsou.

Embedded kód rozhodně není jednodušší oproti "velkému" PC. O co méně má řádků kódu, o to složitější tam jsou interakce a omezení.
Jojo.
S tim zakazem preruseni je to ale bohuzel tak, ze je nutne jej pouzivat i tam kde jina synchronizacni primitiva jsou, ale nastesti vyjmecne. Mimochodem to me privadi na dalsi lahudku embedded programovani: assembler. Kolik lidi to dnes zvlada na slusne urovni? Bez assembleru napriklad vubec netusim, jak pouzit ARM LDREX/STREX nebo saturovanou matematiku v DSP algoritmech (ARM QADD8 a pod). A uplna lahudka u ktere jsem si vazne odpocinul bylo prepsat foat atan2 algoritmus do ASM tak, aby pro vsechny hodnoty vypocet trval vzdy priblizne stejne dlouho (ono u DSP algoritmu dost vadi, pokud je doba vypoctu ovlivnena vstupni hodnotou a muze se stat, ze v zavislosti na hodnote to CPU nestihne dopocitat vcas)