Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: jaro123 13. 09. 2017, 10:45:18

Název: Škoda ECU - program bez větvení
Přispěvatel: jaro123 13. 09. 2017, 10:45:18
Vypada to, ze Skodovky maji v ECU (Engine Control Unit - Ridici jednotka motoru) program, ktery se snazi nepouzivat vetveni. Pro realtime je to docela zajimavy napad. CPU je od Infineonu.
Mate s tim nekdo zkusenosti ?
Jaky programovaci jazyk a prekladac tohle umi ?
Jsou a je neco takoveho opensource ?
Název: Re:Skoda ECU - program bez vetveni
Přispěvatel: v 13. 09. 2017, 10:54:16
https://en.wikipedia.org/wiki/Berkeley_Packet_Filter
jinak řízení je často ve formě (výstupy, stav) = f (vstupy, předchozí stav), tam se bez větvení (hlavně skoku na nižší adresu, viz výše) obejít dá
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: jm 13. 09. 2017, 12:54:16
Operační systém pouze na základě získaných dat (ať už z eventu nebo z periodického čtení) udělá překlad dle kalibrační tabulky na akci. Prakticky tohle je všechno co ECU dělá když motor běží.
Samotný AutosarOS + podpůrné funkce jsou napsané v C, kalibrační tabulka a pravděpodobně i lookup funkce budou generovány Matlabem na základě matematického modelu motoru v R&D dodavatele ECU.
MCU je TriCore, většinou TC17xx (Nejběžnější jsou TC1766, TC1767). Pro zajímavost v Čechách například Continental vyrábí ECU s TC1791.
Dodavatelé kompilují s kompilátory od WindRiver či Greenhouse (?? Green něco se ta firma jmenuje), nicméně lze sehnat binárky GCC TriCore od Hightec + Eclipse IDE zadarmo. Avšak Hightec nedává svůj zdroják pro GCC.

Felix Domke tu má zajímavou prezentaci o Dieselgate, kde se tématu "tvoření kalibrace" dotýká
https://www.youtube.com/watch?v=qF7E0CYn3mc

Název: Re:Škoda ECU - program bez větvení
Přispěvatel: robotron 13. 09. 2017, 14:21:49
Ano, Hightec, to jsou ti znami smejdi, co udelali port gcc a porusili licenci; nedavali zdrojaky a prodavali to. (Mozna, ze uz neprodavaj, nevim.)
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: ehmmm 13. 09. 2017, 15:12:18
Kam na tyhle informace chodite?
To mate nekde disassemblovanou ECU?
Fakt by me to zajimalo, jak to ta ECU dela, ze z vahy vzduchu, plynoveho pedalu, lambda sondy a kdoviceho jeste vypocita delku vstriku a predstih.
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: jm 13. 09. 2017, 15:58:10
Základní informace o AutosarOS (a tím pádem o ECU) nejsou žádné tajemství. Mrkněte se na https://www.autosar.org/standards/classic-platform/ Zde máte zadarmo popsáno, jak si vytvořit vlastní implementaci Autosaru, včetně doporučených názvů funkcí, jejich popisu a účelu. Kéž by alespoň podobnou dokumentaci měly i OSS projekty.

Pokud vás to fakt zajímá, tak pro staré ECU (ME7.5 [C166] ~ MED9/EDC16[PowerPC]) najdete hodně informací http://www.nefariousmotorsports.com/forum/

Po různých fórech lze sehnat dumpy z aktuální generace (EDC17 / MED17) takže z toho lze také vycházet a použít pro RE.

Zbytek si už musíte domyslet nebo doreverzovat :)
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: mln 13. 09. 2017, 20:08:12
Kód: [Vybrat]
Fakt by me to zajimalo, jak to ta ECU dela, ze z vahy vzduchu, plynoveho pedalu, lambda sondy a kdoviceho jeste vypocita delku vstriku a predstih.
neviem ako to robia automobilky, ale ja som popri VŠ v garážovej firme navrhoval simulatory automobilovej elektroniky pre stredné a vysoké školy. Na simulaciu auta mi stačili 8 bitové procesory (viacej kusov) Atmega alebo Atxmega (32 MHz). Benzínový motor je relatívne jednoduchý, je riadený viacerymi funkciami s jednou neznamou (podla skrtiacej klapky), naftový motor je komplikovaný, riadený funkciou dvoch neznámych (tlak paliva (tlak je navyše ešte závislý otáčok motora) a dĺžka vstreku). Ostatné senzory (lambda, teplota vzduchu, prietok vzduchu) sú len na jemne doladenie motora a emisie.

Cele je to len o meraní vstupných napatí (AD prevodník) alebo dlžky pulzu (Input capture na timeri), filtrovaní rušenia, a tzv mapách (predvypočítana funkcia o 2 neznámych - atmega nema MAC ani FPU na výpočet). Dovod prečo som nepoužil riadny DSP je ten že som vtedy vedel programovať iba atmegy.

Ja som tie mapy získal na zaklade merania parametrov skutočného auta na výkonovej meracej stolici (parametre pri roznych otáčkach a záťaži motora, asi 20 kombinácii),  navrhol si pomocky na meranie signálov, pomocou interpolacie v matlabe odhadol matematický tvar funkcie (curve fitting toolbox v matlabe) a nanovo vytvoril kompletnú mapu na pc a nasledne ju nahral ako viacrozmerné pole do mikrokontroléra.
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: ehmmm 13. 09. 2017, 20:58:11
Felix Domke tu má zajímavou prezentaci o Dieselgate, kde se tématu "tvoření kalibrace" dotýká
https://www.youtube.com/watch?v=qF7E0CYn3mc

Zatim jsem se vzmohl jen na tu prednasku na youtube. Az ten agitacni konec mi to prislo zajimave.

Ostatné senzory (lambda, teplota vzduchu, prietok vzduchu) sú len na jemne doladenie motora a emisie.

No a co to je to jemne doladenie?
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: trr 13. 09. 2017, 21:31:55
Větvení se v ECU standartně používá. Záleží jakou řídicí jednotku v motoru máš na mysli. Některé osobní auta můlžou mít celkově až 70 řídících jednotek. V motoru jich může být několik komunikují spolu po sběrnicích CAN, LIN, FlexRay. Na tyhle sběrnice bývají napojené i senzory a aktuátory.
V autech se využívají realtime operační systémy postavené na standardu OSEK(Offene Systeme und deren Schnittstellen für die Elektronik in Kraftfahrzeugen), ten má několik implementací (třeba OSEK-VDX). Používají se i jiné operační systémy, podle toho co má dana ECU za úkol.
Řídicí systémy se vyvíjejí podle standartu AUTOSAR, což je spíše než operační systém, přesněji architektura a metodika.
Na nejnižší úrovni se používá ASM, ale ten je spíše v menšině. Vzhledem k tomu, že normy vylučují pro dopravní prostředky jazyky, kde není přímá kontrola paměti, tak se používá C/C++. Matematické modely se implementují často v Matlabu a kód se potom přegeneruje do C. Požadavky na to jakým způsobem implementuje a testuje závisí na bezpečnostní úrovni dané SW/HW komponenty.

A taky by mě zajímalo jak na to dotyčny přišel, to musí být starší auto.

Název: Re:Škoda ECU - program bez větvení
Přispěvatel: Gumidek 13. 09. 2017, 23:16:05
Greenhouse (?? Green něco se ta firma jmenuje)zadarmo. Avšak Hightec nedává svůj zdroják pro GCC.

Je to Green Hills.

Název: Re:Škoda ECU - program bez větvení
Přispěvatel: jaro123 14. 09. 2017, 10:28:31
Větvení se v ECU standartně používá. Záleží jakou řídicí jednotku v motoru máš na mysli. Některé osobní auta můlžou mít celkově až 70 řídících jednotek. V motoru jich může být několik komunikují spolu po sběrnicích CAN, LIN, FlexRay. Na tyhle sběrnice bývají napojené i senzory a aktuátory.
V autech se využívají realtime operační systémy postavené na standardu OSEK(Offene Systeme und deren Schnittstellen für die Elektronik in Kraftfahrzeugen), ten má několik implementací (třeba OSEK-VDX). Používají se i jiné operační systémy, podle toho co má dana ECU za úkol.
Řídicí systémy se vyvíjejí podle standartu AUTOSAR, což je spíše než operační systém, přesněji architektura a metodika.
Na nejnižší úrovni se používá ASM, ale ten je spíše v menšině. Vzhledem k tomu, že normy vylučují pro dopravní prostředky jazyky, kde není přímá kontrola paměti, tak se používá C/C++. Matematické modely se implementují často v Matlabu a kód se potom přegeneruje do C. Požadavky na to jakým způsobem implementuje a testuje závisí na bezpečnostní úrovni dané SW/HW komponenty.

A taky by mě zajímalo jak na to dotyčny přišel, to musí být starší auto.

OK, takhle se da mluvit fakt dlouho. Jako by bylo problem neco udelat. Vis co? Otevri si kapotu svoji nove Octavie, vyfit si ECU - ta hlinikova krabicka 20x15x5 cm. Najdi si na ulozto.cz firmware  a dokumentacku kty ECU. Nastartuj Ida Pro a mrkni se na vetveni. pak sem napis dalsi prispevek. Ostatni uvahy sou off-topic a nech si je.
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: asdfsaf 14. 09. 2017, 10:48:18
 Vzhledem k tomu, že normy vylučují pro dopravní prostředky jazyky, kde není přímá kontrola paměti, ...

můžete být konkrétní?
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: trr 14. 09. 2017, 11:00:38
OK, takhle se da mluvit fakt dlouho. Jako by bylo problem neco udelat. Vis co? Otevri si kapotu svoji nove Octavie, vyfit si ECU - ta hlinikova krabicka 20x15x5 cm. Najdi si na ulozto.cz firmware  a dokumentacku kty ECU. Nastartuj Ida Pro a mrkni se na vetveni. pak sem napis dalsi prispevek. Ostatni uvahy sou off-topic a nech si je.

Jo dalo by se o tom mluvit hodně dlouho. A v tomhle případě by to mohl byt problém, protože
1. disassembling je mimo zákon a SW v autech rozhodne není free ani opensource.
2. Tahle jednotka očividně nebyla zabezpečená proti dissasemblingu.

Dám ti dobrou radu pokud chceš auto používat k čemu je určeno, raději to nezkoušej na jiných ECU, nebo na jiných značkách aut, nebo třeba i na Škodě s aktualizovaným SW. Neautorizovaný zásah do ECU by mohl vést nejen k právním následkům, ale i technickým.
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: trr 14. 09. 2017, 11:05:20
Vzhledem k tomu, že normy vylučují pro dopravní prostředky jazyky, kde není přímá kontrola paměti, ...

můžete být konkrétní?

Norma ISO 26262 - funkční bezpečnost
https://en.wikipedia.org/wiki/ISO_26262 (https://en.wikipedia.org/wiki/ISO_26262)

Název: Re:Škoda ECU - program bez větvení
Přispěvatel: jm 14. 09. 2017, 11:35:00
Jo dalo by se o tom mluvit hodně dlouho. A v tomhle případě by to mohl byt problém, protože
1. disassembling je mimo zákon a SW v autech rozhodne není free ani opensource.

To nemáte tak zcela pravdu
https://en.wikipedia.org/wiki/Reverse_engineering#European_Union
Jinými slovy, když se na to doma podíváte a nebude zveřejňovat co jste pomocí RE zjistil, ani se snažit vytvořit konkurující produkt, je to zcela legální.
Pokud narážíte na fakt, že v podpisu smlouvy k autu je zakázáno výrobcem RE čehokoliv, tak kdo říká, že to musíte dělat na dílech z toho daného auta na které se vztahuje smlouva.

2. Tahle jednotka očividně nebyla zabezpečená proti dissasemblingu.
Žádná jednotka ani firmware není. Jenom je potřeba překonat "překážky" které brání vyčtení firmware z jednotky.
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: ByCzech 14. 09. 2017, 11:41:59

1. disassembling je mimo zákon

Zdroj?
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: trr 14. 09. 2017, 11:48:10
Žádná jednotka ani firmware není. Jenom je potřeba překonat "překážky" které brání vyčtení firmware z jednotky.

To je pravda, neexistuje dokonalá ochrana. Ale už nějakou dobu se zavádí jedna ochrana, fakt o ní nemůžu mluvit, ale s ní bych do neautorizovaného zásahu do ECU opravdu nešel.
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: lopata 14. 09. 2017, 12:21:37
Vzhledem k tomu, že normy vylučují pro dopravní prostředky jazyky, kde není přímá kontrola paměti, ...

můžete být konkrétní?

Norma ISO 26262 - funkční bezpečnost
https://en.wikipedia.org/wiki/ISO_26262 (https://en.wikipedia.org/wiki/ISO_26262)

Myslím, že trochu motáš dohromady přímou kontrolu paměti a dynamickou alokaci paměti. Není jediný důvod, aby jakákoliv norma nařizovala přímou kontrolu paměti, naopak je to kontraproduktivní, protože přímý přístup do paměti je zdrojem mnoha chyb. Co je v embedded de facto zakázáno, je dynamická alokace paměti, ale neřeší to ta ISO norma, ale spíše MISRA: https://en.wikipedia.org/wiki/MISRA_C. Požadavek na statickou alokaci prakticky diskvalifikuje všechno s garbage collectorem, takže zbývá C a C++ se všemi jejich nevýhodami. Nicméně nediskvalifikuje to například Rust, který přímou kontrolu paměti nemá a pro embedded je z hlediska bezpečnosti mnohem vhodnější než C/C++.
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: v 14. 09. 2017, 12:29:20
Vzhledem k tomu, že normy vylučují pro dopravní prostředky jazyky, kde není přímá kontrola paměti, ...

můžete být konkrétní?

Norma ISO 26262 - funkční bezpečnost
https://en.wikipedia.org/wiki/ISO_26262 (https://en.wikipedia.org/wiki/ISO_26262)

Myslím, že trochu motáš dohromady přímou kontrolu paměti a dynamickou alokaci paměti. Není jediný důvod, aby jakákoliv norma nařizovala přímou kontrolu paměti, naopak je to kontraproduktivní, protože přímý přístup do paměti je zdrojem mnoha chyb. Co je v embedded de facto zakázáno, je dynamická alokace paměti, ale neřeší to ta ISO norma, ale spíše MISRA: https://en.wikipedia.org/wiki/MISRA_C. Požadavek na statickou alokaci prakticky diskvalifikuje všechno s garbage collectorem, takže zbývá C a C++ se všemi jejich nevýhodami. Nicméně nediskvalifikuje to například Rust, který přímou kontrolu paměti nemá a pro embedded je z hlediska bezpečnosti mnohem vhodnější než C/C++.
těch jazyků víc, řeší ti iec61508 (např iec61131 nebo ada)
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: trr 14. 09. 2017, 13:33:37
Myslím, že trochu motáš dohromady přímou kontrolu paměti a dynamickou alokaci paměti. Není jediný důvod, aby jakákoliv norma nařizovala přímou kontrolu paměti, naopak je to kontraproduktivní, protože přímý přístup do paměti je zdrojem  ;Dmnoha chyb. Co je v embedded de facto zakázáno, je dynamická alokace paměti, ale neřeší to ta ISO norma, ale spíše MISRA: https://en.wikipedia.org/wiki/MISRA_C. Požadavek na statickou alokaci prakticky diskvalifikuje všechno s garbage collectorem, takže zbývá C a C++ se všemi jejich nevýhodami. Nicméně nediskvalifikuje to například Rust, který přímou kontrolu paměti nemá a pro embedded je z hlediska bezpečnosti mnohem vhodnější než C/C++.

Jo, že to trochu motám je celkem možné  ;D.  Tohle téma je celkem široké a náročné a učím se pořád každý den.
V té ISO normě je to taky zmíněné. V normě není zmíněný konkrétní jazyk, jenom obecné řeči o tom co se může, musí a nesmí. Jo MISRA je další kapitola a těch nadávek co jsou s MISROU spojené  ;D

No ale zkus na Rust přemluvit zákazníky. To C/C++ se používá podle mně proto, že dodavatel HW má svoje knihovny v C a od toho se odvíjí rozhodnutí v jakém jazyce vyvíjet.

Java, C#, apod, jsou v automotive použitelné, ale myslím, že jen na nekritické části. Typoval bych to na GUI v infotainment, kde si člověk může za jízdy pouštět videa z jutjub. Do brzd, převodovky, motoru, světel bych to určitě nedával.
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: jaro123 14. 09. 2017, 15:35:29
OK, takhle se da mluvit fakt dlouho. Jako by bylo problem neco udelat. Vis co? Otevri si kapotu svoji nove Octavie, vyfit si ECU - ta hlinikova krabicka 20x15x5 cm. Najdi si na ulozto.cz firmware  a dokumentacku kty ECU. Nastartuj Ida Pro a mrkni se na vetveni. pak sem napis dalsi prispevek. Ostatni uvahy sou off-topic a nech si je.

Jo dalo by se o tom mluvit hodně dlouho. A v tomhle případě by to mohl byt problém, protože
1. disassembling je mimo zákon a SW v autech rozhodne není free ani opensource.
2. Tahle jednotka očividně nebyla zabezpečená proti dissasemblingu.

Dám ti dobrou radu pokud chceš auto používat k čemu je určeno, raději to nezkoušej na jiných ECU, nebo na jiných značkách aut, nebo třeba i na Škodě s aktualizovaným SW. Neautorizovaný zásah do ECU by mohl vést nejen k právním následkům, ale i technickým.

Dekujeme panu PCR za upozorneni, takove by asi melo jiste byt na zacatku uplne kazde diskuze. Pan PCR si ted pujde zkontrolovat parkovani ve sve ulici - jiste je tam taky hodne zlobilu. Takze pripomenu kluci a holky, nekradte, nezete a uz vubec ne na zaklade teto diskuze. A ted zpatky k vetveni...
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: gp 14. 09. 2017, 16:25:09
ehm: jemné doladění jsou takové ty věci okolo spalovací chemie - když je moc benzínu na málo kyslíku, spotřebuje se víc benzínu a udělá se z něj CO, komplikovanější uhlovodíky a saze -což zasviní motor karbónem, když je to naopak, motor má menší výkon, ale v obou případech běží, což je podstatné. Vyšší spotřeba nikoho nezajímá (zvlášť když už je benzín zase za osm korun - čtvrt litru) a emise už vůbec ne. Proto "jemné" doladění.

Přímým přístupem do paměti je v kontextu kritických aplikací míněno to, že mezi aplikací a pamětí už není žádná mezivrstva, která by si mohla vzpomenout, že tenhle kus paměti je teď zrovna swapnutej na disku, kterej akorát zaparkoval, protože jsme přejeli ježka a vono to drclo.

Rust z hlediska bezpečnosti... - už má nějaká aplikace v Rustu nalítáno sto tisíc hodin, aniž by spadla? (to je taky z nějaký dopravní normy, že stávající aplikace se považují za bezpečné, když mají bez nehody odpracováno tolik).
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: trr 14. 09. 2017, 20:42:20
Dekujeme panu PCR za upozorneni, takove by asi melo jiste byt na zacatku uplne kazde diskuze. Pan PCR si ted pujde zkontrolovat parkovani ve sve ulici - jiste je tam taky hodne zlobilu. Takze pripomenu kluci a holky, nekradte, nezete a uz vubec ne na zaklade teto diskuze. A ted zpatky k vetveni...

Nic jiného neumíš vyplodit? Na víc nestačíš? Nic než skryté útoky tady nepředvádíš.
Soráč, chtěl jsem tě trošku uvést do problematiky, protože jsi přišel s otázkou, ale to je házení perel sviním. Přišel jsi sem s otázkou, já jsem se snažil odpovědět. To je vše.
Pokud o to nestojíš, tak to tu neplevel a běž si hrát jinde, třeba s kobrami.
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: asdfsaf 15. 09. 2017, 10:43:54
jen pro zajímavost - moje vlastní ECU pro diesel s VP44. Vše postaveno na AVR. Napsáno v C
https://www.youtube.com/watch?v=FDtEt3hod7U

Někde bych vyhrabal zdrojáky. Bohužel sem koupil barák a narodila se dcera, tak šla hračka z baráku... ale byla to krásná zábava
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: jaro 15. 09. 2017, 14:31:20
jen pro zajímavost - moje vlastní ECU pro diesel s VP44. Vše postaveno na AVR. Napsáno v C
https://www.youtube.com/watch?v=FDtEt3hod7U

Někde bych vyhrabal zdrojáky. Bohužel sem koupil barák a narodila se dcera, tak šla hračka z baráku... ale byla to krásná zábava

Pekne, diky. Muzes to hodit treba na github.
Název: Re:Škoda ECU - program bez větvení
Přispěvatel: ehmmm 16. 09. 2017, 13:05:40
jen pro zajímavost - moje vlastní ECU pro diesel s VP44. Vše postaveno na AVR. Napsáno v C

Zavidim, v tom dobrem slova smyslu.