Autóipari beágyazott rendszerek CCP és XCP
1
Hibakeresés és kalibráció • Fejlesztés közben szükség van – A vezérlőegység állapotának megfigyelésére – Szabályzó paraméterek online kalibrációjára – Hibainjektálásra (változók átírása) – Miközben az egység a járműben működik • Nem lehet megbontani (vízállóság) • Messze van a felhasználótól (motortér) 2
Hibakeresés és kalibráció • Hagyományos megoldás – JTAG nyomkövető • Rövid távon működik • Nincs kivezetve az egység házából
• Megoldás – A kommunikációs busz felhasználása • Hátrány – Sávszélesség igény – A kontrollerben külön SW modulra van szükség 3
CCP • CAN Calibration Protocol – Egyszerű protokoll CAN felett
• Funkciók – – – –
Memória írása/olvasása Ciklikus mintavételezés beállítása Flash programozás Hozzáférés védelem
• ASAM szabvány (Association for Standardisation of Automation- and Measuring Systems)
4
XCP • eXtensible Calibration Protocol – A CCP-re építve több hordozó protokollt támogat
• hordozó – – – – – –
CAN FlexRay Ethernet USB Aszinkron soros Szinkron soros
• ASAM szabvány (Association for Standardisation of Automation- and Measuring Systems) 5
XCP kommunikáció
6
XCP kommunikáció
A mester eszköz a fejlesztői számítógép, mely tartalmaz egy XCP meghajtót, illetve XCP kommunikációra képes szoftvert
7
XCP kommunikáció
A szolga eszköz a kommunikációban a vezérlőegység. Ezen meg kell valósítani a protokollt.
8
XCP kommunikáció
A vezérlési csomagok (CTO – Command Transfer Object) feldolgozását általában egy egyszerű interpreter valósítja meg
9
XCP kommunikáció
Az adatcsomagok (DTO – Data Transfer Object) kezelését külön rész végzi a szolga által küldött csomagokat az adatgyűjtő modul állítja össze
10
XCP kommunikáció
A mester felől érkező stimulációs csomagokat pedig a stimuláció feldolgozó modul kezeli.
11
XCP csomagformátum
12
XCP csomagformátum
AAcsomag koncepció fej és fázisában farok része hordozó protokoll kialakulnak függő.a Általában vevői azonosító, hossz, követelmények üzenetszámláló, és a és ellenőrző biztonsági összegkoncepció kap benne helyet. 13
XCP csomagformátum
A PID (packet ID) azonosítja az XCP csomagot. CTO esetén előre meghatározott értékkészlete van • CMD csomagban 0xc0..0xff parancskód • RES csomagban 0xff • ERR csomagban 0xfe • EVT csomagban 0xfd • SERV csomagban 0xfc DTO esetén a DAQ listát azonosítja a következő mezővel együtt
14
XCP csomagformátum
A DAQ azonosítja (a PID-del együtt) a mintavételi listát. Csak DTO-ban szerepel.
15
XCP csomagformátum
A kitöltő byte-ok akkor szükségesek, ha az azonosító mezőt n (2,4) byte-ra kívánjuk igazítani
16
XCP csomagformátum
A DTO-kban lehet időbélyeget elhelyezni, az adatok mintavételi idejének meghatározásához
17
XCP csomagformátum
Az adatmező csomag függő byte-okat tartalmaz, mint a parancsok paraméterei, vagy a mintavételezett adatok.
18
Mintavételezés és stimuláció • Cél – Kijelölt adatok mintavételezése vagy átírása – Bizonyos ECU események bekövetkeztekor • Egy taszk indulása • Egy megszakítás bekövetkezte • Periodikus időzítő
– Futásidejű konfigurálhatóság 19
Konfiguráció - mintavételezés
20
Konfiguráció - mintavételezés
A konfiguráció alapegysége az ODT (Object Description Table) entry. Ez egy memória címet és hosszt tartalmaz, így azonosítja a cél memóriaterületet.
21
Konfiguráció - mintavételezés
Az ODT ilyen bejegyzésekből áll. A bejegyzések száma nem limitált, de a teljes azonosított adatméretnek bele kell férnie egyetlen DTO-ba.
22
Konfiguráció - mintavételezés
Az adatok küldésekor a PID mező azonosítja az ODT, amiből az adatokat kinyertük.
23
Konfiguráció - mintavételezés
Az ODT-ket DAQ listába szervezhetjük. Az egyes ODT-k függetlenek, de a DQA listához rendelt esemény mindegyiket triggereli.
24
Konfiguráció - mintavételezés
A DTO-k itt is ODT-nként külön kerülnek elküldésre.
25
XCP üzemmódok
26
XCP üzemmódok
Induláskor a szolga ellenőrzi, hogy van-e olyan DAQ listája, amit automatikusan el kell indítani
27
XCP üzemmódok
Ha nincs, akkor DISCONNECTED módba vált, és a csatlakozás parancson kívül semmi mást nem fogad el.
28
XCP üzemmódok Ha van elindítandó DAQ lista, RESUME módba kapcsol, és elindítja a mintavételezést. Innen is csak csatlakozás parancs hatására lép tovább, de a mintavételezést nem állítja le.
29
XCP üzemmódok A csatlakozás parancs hatására CONNECTED módba kerül a modul. Itt már az összes parancs kiadható
30
XCP Parancsok - Connect • Kód: 0xFF • Kapcsolatot létesít a vezérlőegységgel – Minden más parancs előtt kell kiadni
• Válasz – Információk a szolga protokoll verziójáról – A támogatott leghosszabb CTO és DTO üzenetekről – Elérhető szolgáltatások (DAQ, STIM, CAL/PAG, PGM) – A szolga byte sorrendje, címfelbontása 31
XCP Parancsok - Disconnect • Kód: 0xFE • Bontja a kapcsolatot a szolgával – Több parancs kiadására nincs lehetőség
• Válasz – Csak hiba esetén van válasz
32
XCP Parancsok – Get current session status • Kód: 0xFD • Lekérdezi az aktuális kapcsolat státuszt • Válasz – Információ az erőforrás védelem státuszáról • Szükséges-e azonosítás a használathoz
– Információ az üzemmódról • • • • • •
Van-e mintavétel folyamatban Folyamatban van-e DAQ konfiguráció mentése Folyamatban van-e DAQ konfiguráció törlése Folyamatban van-e a kalibrációs adatok mentése Folyamatban van-e a kalibrációs adatok törlése Resume módban indult-e az egység 33
XCP Parancsok – Get slave identification • Kód: 0xFA • Azonosítja a szolga csomópontot • Kérés – Megadja a kért azonosítás módját • ASCII szöveg • ASAM-MC2 fájl neve (elérési úttal, vagy anélkül) – ez a szolga memória térképét tárolja • ASAM-MC2 fájl letöltése a szolgáról • ASAM-MC2 fájl URL-je
• Válasz – A kért információ, ha elérhető 34
XCP Parancsok – Request to save ton NvM • Kód: 0xF9 • A DAQ és CAL konfiguráció mentése nem felejtő tárba • Opciók – DAQ mentése – DAQ törlése – CAL mentése
• Válasz – Aszinkron eseményként érkezik 35
XCP Parancsok – Get seed for unprotecting resources
• Kód: 0xF8 • Kér egy kihívást (véletlen számot) az azonosításhoz • Válasz – A véletlen szám
36
XCP Parancsok – send key for unprotecting resources
• Kód: 0xF7 • Visszaküldi a seed alapján generált kulcsot az erőforrások védelmének kikapcsolására
37
XCP Parancsok – SET_MTA
• Kód: 0xF6 • Beállítja a szolgában levő memória cím mutatót • Ezt a mutatót több parancs is használja – Letöltést – Feltöltés – Programozás – Stb.
38
XCP Parancsok – Upload
• Adatok feltöltése a szolgáról a mesterre • Több formája van – Normál (0xF5) • Az MTA-tól indul
– Rövid (0xF4) • A parancsban megadott címről indul
• Minden formában meghatározzuk a kért adathosszúságot • A válasz tartalma az adatcsomag 39
XCP Parancsok – Download • Adatok letöltése a mesterről a szolgára • Több formája van – Normál (0xF0) • Az MTA-tól indul
– Blokk mód (0xEF) • Nagyobb adatméret esetén, több egymás utáni parancsba ágyazva tölt le egy memóriablokkot
– Fix hosszúságú (0xEE) • Pontosan akkora csomagot tölt le, amekkora a CTO-ba belefér
– Rövid (0xED) • A parancsban megadott címről indulva tölt le adatokat
• Minden formában meghatározzuk a kért adathosszúságot
40
XCP Parancsok – Page commands • Ezen parancsok a kalibrációt teszik egyszerűvé – – – – –
Több kalibrációs lap hozható létre Mindegyik tartalmazza a kalibrálható paraméterek értékét Az egyiket a vezérlőegység szoftvere használja A másikat az XCP módosíthatja A szerep egyetlen utasítással megcserélhető • Mindig konzisztens paraméterkészlet áll a szoftver rendelkezésére
• A szerepel állítására és lekérdezésére vannak parancsok – Set calibration page (0xEB) – Get calibration page (0xEA)
• Konfigurációs információk lekérése – Get page processor info (0xE9) – hány lap van? – Get segment info (0xE8) – a szegmens mérete, címe, .. 41
XCP Parancsok – PGM • Memória programozás parancsok • Program_start (0xD2) – a programozás elindítása • Program_clear (0xD1) – a memória egy részének törlése – Külön a kód, NVM, kalibrációs területeket
• Program (0xD0) – programozási adatok letöltése – Az MTA-tól kezdődően
• Program_reset (0xCF) – jelzi a programozás végét. A szolga bontja a kapcsolatot. • Program_format (0xCB) – a letöltendő adatok formátumát (tömörítés, rejtjelezés) állítja be 42
XCP Parancsok – Statikus DAQ kezelése • •
Előre beállított DAQ listák kezelése Parancsok – ClearDaqList (0xE3) – kitörli a megadott lDAQ listák konfigurációját (tól-ig) – SetDaqPointer (0xE2) – beállítja a mutatót egy adott ODT elemre a további műveletekhez – WriteDaq (0xE1) - beírja az ODT elem adatait a mutató által jelölt helyre – ReadDaq (0xDB) - kiolvassa a mutató által jelölt ODT elem adatait – SetDaqListMode (0xE0) - beállítja a DAQ lista konfigurációját • Timestamp, id küldés, prioritás, hozzárendelt esemény csatorna
– GetDaqListMode (0xDF) - visszaolvassa az előző paranccsal beállított adatokat – StartStopDaqList (0xDE) – elindítja, kiválasztja vagy leállítja a DAQ listát – StartStopSync (0xDD) – elindítja vagy leállítja az összes kiválasztott listát
43
XCP Parancsok – Dinamikus DAQ kezelése
• Ezekkel a parancsokkal dinamikusan hozhatunk létre DAQ listákat • Parancsok – FeeDaq (0xD6) – Töröl minden DAQ listát és felszabadítja a dinamikusan létrehozottakat – AllocDaq (0xD5) – adott számú DAQ listát hoz létre – AllocODT (0xD4) – Az adott DAQ listában létrehoz megadott számú ODT listát – AllocODTEntry (axD3) – Az adott ODT listában létrehoz megadott számú ODT bejegyzést 44
XCP eszközök
45