AUTOSAR(5) – ComStack CANTP

În acest articol vom discuta despre interacțiunea dintre module precum PDU Router (Layer Services), Layer de transport CanTP (Layer Services), CanIf (Layer Abstraction ECU) și CAN Driver (MCAL Layer). Acest articol va fi mai concentrat pe modulul CanTp, deoarece celelalte module sunt discutate în articolele anterioare. Dar se va atinge de celelalte module (PduR, CanIf și CanDrv) atunci când există o interacțiune între ele și CanTp.

CAN Transport Layer

Serviciile de bază oferite de modulul Can Tp sunt segmentarea mesajelor care au o sarcină utilă de peste 8 octeți, transmiterea mesajelor cu controlul fluxului și reasamblarea mesajelor segmentate la receptor.

În imaginea de mai jos este reprezentat un frame CAN, iar in segmentul Data ar fi informația utilă. În cazul nostru informații de diagnoză specifice CanTp. Pentru cazul în care semnalele CAN urmează să ajungă în modulul COM -> RTE iar apoi in applicatie, atunci cei 8 bytes de date contin semnalele utile.

Modulul CanTp trebuie să respecte standardul ISO 15765-2 pentru segmentarea mesajelor, transmisia segmentată și reasamblarea datelor segmentate. Protocolul de transport este folosit în principal pentru comunicarea peer-to-peer în CAN.

Protocolul ISO-TP

ISO 15765-2, cunoscută și ca ISO-TP, este un standard pentru trimiterea de pachete pe magistrala CAN care extinde limita CAN de 8 octeți pentru a suporta până la 4095 octeți prin legarea pachetelor CAN împreună. Cea mai obișnuită utilizare a ISO-TP este pentru diagnosticare (vezi „Servicii de diagnoză unificată”) , dar poate fi fo,losit și în orice moment, pentru a transfera cantități mari de date.

Network Layer Protocol efectuează transmiterea / recepția de date de până la 4095 octeți și raportarea finalizării transmisiei / recepției.

Single Frame (SF) Transmisie:

Transmiterea / recepția mesajului de până la 7 octeți de date se realizează utilizând un N_PDU unic. Frame-ul unic este utilizat de către tester numai în cazul adresării funcționale în care testerul nu cunoaște adresa fizică a ECU sau dacă funcționalitatea ECU-ului este implementată ca un server distribuit pe mai multe ECU-uri.

Transmisie cu mai multe cadre:

Transmiterea mesajelor cu octeți de date mai lungi se realizează prin segmentarea mesajului și transmiterea ca mai multe N_PDU-uri. Recepția se realizează prin reasamblarea mai multor receptoare N_PDU.

First Frame (FF): Unitatea de date FF conține cea mai mare parte a lungimii datelor în octeți care va face parte din cadrul consecutiv (CF), iar octeții rămași pot fi utilizați octeți de date.

Flow control (FC): Receptorul are posibilitatea de a adapta capacitatea transmițătorilor folosind cadrul FC. Utilizând cadrul FC, receptorul poate solicita emițătorului să trimită octeți de date cu o anumită dimensiune a blocului (BS – numărul maxim de N_PDU, receptorul permite expeditorului să trimită înainte ca acesta să permită expeditorului să trimită din nou N_PDU) și la o rată fixă ​​(STmin – timpul minim pe care expeditorul trebuie să îl aștepte înainte de transmiterea următorului N_PDU consecutiv), astfel încât receptorul să proceseze datele recepționate.

Consecutive frame (CF): Conține octeții de date transmise împreună cu numărul de ordine (SN) care specifică numărul CF și acest SN este utilizat în timpul asamblării datelor la receptor.

Există mulți parametri de sincronizare implicați în comunicarea protocolului de transport. Mergeți la ISO 15765-2 pentru descrierea tuturor acestora.

Luați în considerare dacă 49 octeți de date trebuie transmise folosind adresarea obișnuită, atunci fluxul PDU ar putea să arate, primul cadru va conține numărul de octeți care urmează să fie transmiși, 49 numărul de CF-uri care vor fi utilizate pentru transmiterea acestor 49 octeți, 7. Cadrul FC va avea valorile BS și STmin specifice receptorului. Cele șapte cadre CF vor conține octeții de date.

Interacțiunea CanTp cu alte module

CanIf interacționează cu CanTp si va apela functiile TxConfirmation și RxIndication pentu primirea si trimiterea de PDU-uri.

CanTp nu are propriul buffer, deci folosește bufferul straturilor superioare (PDUR, DCM sau COM). Deci, pentru a menține consistența datelor în timpul Tx / Rx, bufferul este blocat. În timpul recepționării datelor, modulul CanTp notifică stratul superior (PDUR), iar stratul superior își rezervă și blochează bufferul pentru recepție.

Dacă stratul superior nu poate creea bufferul  disponibil pentru recepție din cauza unei erori sau a unei limitări a resurselor, acesta returnează o eroare. Apoi CanTp întrerupe recepția și transmisia cadrului FC depinde de codul de eroare din stratul superior.

În timpul transmisiei, CanTp utilizează formatul de adresare pentru a trimite cadrele SF, FF și CF. Transmisia poate să nu funcționeze dacă straturile superioare nu pot pune la dispoziție datele de transmisie înainte de trecerea timpului intern (consultați ISO 15765-2). CanTp reia transmisia atunci când datele sunt disponibile din stratul superior.

Modulul PDUR este notificat în prealabil cu un început de notificare de recepție atunci când primește un primul frame (FF) sau un singur frame (SF). Acest apel va fi trimis la modulul stratului superior respectiv. Sarcina utilă a fiecărui segment (N-PDU) este copiată în modulul stratului de destinație superior (DCM). După recepția ultimului N-PDU, modulul CanTP va indica modulului  PDUR că primită I-PDU-ul complet și modulul PDUR va transmite această indicație către modulul stratului superior respectiv.

Operația de transmisie a modulului PDUR este declanșată de o cerere de transmitere a unui PDU de la un modul sursă și înaintează cererea către un modul de pe un strat de destinație inferioară. În timpul transmisiei, PDUR nu stochează PDU-ul.

Gateway-on-the-fly: rutarea între două module TP unde se pornește redirecționarea datelor (când se atinge un prag specificat) înainte ca toate datele să fi fost primite. Dacă este transferată o cantitate mai mare de date între două interfețe, este de dorit să puteți porni transmisia în rețeaua de destinație înainte de a primi toate datele din rețeaua sursă. Acest lucru economisește memoria și timpul.

Bonus:
The Car Hacker’s Handbook: A Guide for the Penetration Tester – Craig Smith (2016)


			

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *