reprogramming can bootloader uds

30
CAN Bootloader UDS Reprogramming Sergi Uceda i Amanda Ceballo

Upload: others

Post on 22-Nov-2021

12 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Reprogramming CAN Bootloader UDS

CAN Bootloader UDS Reprogramming

Sergi Uceda i Amanda Ceballo

Page 2: Reprogramming CAN Bootloader UDS

1. Introducció (Recordatori)

2. Bootloader

3. Unified Diagnostic Services (UDS)

4. ISO-Transport Protocol (ISO-TP)

5. Exemple Real

6. Conclusions

ContingutDe què parlarem?

Page 3: Reprogramming CAN Bootloader UDS

IntroduccióUn petit recordatori

Page 4: Reprogramming CAN Bootloader UDS

Introducció

Volem reprogramar una ECU

Accés difícil

Sol·lució:

Bootloader

Què ens porta a utilitzar Bootloader?

Page 5: Reprogramming CAN Bootloader UDS

● Hardware Programmer -> S'ha d'extreure el microprocessador

● In Circuit Programming -> S'ha de tenir accès al microprocessador

● Serial Bootloader -> Es pot fer a travès del BUS CAN

IntroduccióPer què Bootloader?

Page 6: Reprogramming CAN Bootloader UDS

BootloaderQuè és? Com funciona?

Page 7: Reprogramming CAN Bootloader UDS

Es un programa senzill dissenyat exclusivament per a

preparar un sistema per a funcionar.

Amb ell es pot fer l'actualització de l'aplicació principal d'una

ECU mitjançant el BUS CAN.

BootloaderQuè és?

Page 8: Reprogramming CAN Bootloader UDS

● Resideix en la ROM i/o un segment de FLASH.

● No pot ser eliminat per l'eina de reprogramacions.

● Implementa el protocol Unified Diagnostic Services (UDS).

BootloaderCaracterístiques

Page 9: Reprogramming CAN Bootloader UDS

Pas 1) Bootloader es programa a la memoria del microcontrolador y es queda escoltant a una

de les interfícies del micro (UART, SPI, I2C, CAN...)

Pas 2) Si arriben dades d'una manera concreta, comença a escriure els bytes rebuts a la

memoria del programa.

Pas 3) El bootloader fa un salt a les primeres instruccions del programa principal.

BootloaderCom funciona?

Page 10: Reprogramming CAN Bootloader UDS

BootloaderUn exemple

Page 11: Reprogramming CAN Bootloader UDS

BootloaderUn exemple

Page 12: Reprogramming CAN Bootloader UDS

Unified Diagnostic Services (UDS)

Què és? Com funciona?

Page 13: Reprogramming CAN Bootloader UDS

És un protocol de diagnòstics situat a la capa d'aplicació utilitzat en

l'automoció per a la diagnòsi de vehicles.

(Definit a la ISO 14229-1)

Unified Diagnostic ServicesQuè és?

Page 14: Reprogramming CAN Bootloader UDS

Unified Diagnostic ServicesCom funciona?

Llegeix memoria d'averies, actualitza el firmware...

Habilita a un tester (client) controlar funcions de diagnostics en una ECU

El tester envía a través d'un connector de diagnosis una serie de missatges

(tabé anomenats serveis UDS)

Page 15: Reprogramming CAN Bootloader UDS

● Utilitza el protocol de comunicació CAN

● Utilitza el protocol de transport ISO-TP

● Implementa una capa de seguretat per encriptar la informació

Unified Diagnostic ServicesCaracterístiques

______

Page 16: Reprogramming CAN Bootloader UDS

Unified Diagnostic ServicesExemple

Longitud del missatge ID Servei Parametres

0x02h 0x10h 0x02

Diagnostic Session Control Sessió de programació

Page 17: Reprogramming CAN Bootloader UDS

ISO-Transport ProtocolQuè és? Com funciona?

Page 18: Reprogramming CAN Bootloader UDS

ISO-Transport ProtocolQuè és?

És un protocol de transport empleat en automoció y dissenyat per

a fer correr protocols de diagnòstic sobre el bus de comunicacions

CAN.

(Estandaritzat a la ISO 15765-2)

Page 19: Reprogramming CAN Bootloader UDS

ISO-Transport ProtocolCaracterístiques

● Permet el transport de missatges amb longitud superior a 8

bytes de dades útiles

Recordem que el BUS CAN només ens permet enviar 8 bytes de dades útils

● Segmenta els missatges en varies trames CAN de manera

comprensible per al receptor

● Transferències màximes de 4095 bytes de dades

Page 20: Reprogramming CAN Bootloader UDS

ISO-Transport ProtocolCom funciona?

4 tipus de trames:

● Single Frame (SF): paquets que no necesiten fragmentació.

● First Frame (FF): primera trama d'un paquet gran especificant la longitud.

● Consecutive Frame (CF): la resta de trames del paquet segmentat.

● Flow control Frame (FC): resposta del receptor per acordar la modalitat de transferència de les properes "consecutive frames".

Page 21: Reprogramming CAN Bootloader UDS

ISO-Transport ProtocolExemple: missatge de diagnòstic amb 35 = 0x23 bytes de dades

Page 22: Reprogramming CAN Bootloader UDS

Exemple RealLog de reprogramació d'una ECU

Page 23: Reprogramming CAN Bootloader UDS

Exemple

● El primer byte indica la longitud del missatge que s'enviarà● El segon byte indica el servei, que pot tenir 2 respostes:

○ Resposta positiva: servei+40○ Resposta negativa: 7F

● A partir del tercer byte son dades o paràmetres

DiagnosticSessionControl - Programming Session0x7E0 0x02 10 020x7E8 0x06 50 02 00 14 00 C8 50

SecurityAccess #1 i #20x7E0 0x02 27 01 1-Demanem llavor0x7E8 0x06 67 01 D6 D0 63 12 50 2-Rebem la llavor i calculem la clau de seguretat0x7E0 0x06 27 02 00 00 00 00 3-Enviem la clau de seguretat0x7E8 0x02 67 02 50 50 50 50 50 4-Resposta positiva, podem continuar amb la re-programació

RoutineControl - Erase memory0x7E0 0x10 0A 31 01 FF 00 00 68 1-Iniciem la rutina 0xFF000x7E8 0x30 01 00 50 50 50 50 500x7E0 0x21 00 02 AB FF0x7E8 0x04 71 01 FF 00 50 50 50 2-Resposta positiva0x7E0 0x04 31 03 FF 000x7E8 0x03 7F 31 78 50 50 50 50 3- 2 Maneres: Esperar o preguntar per l'estat del esborrat. 0x7E8 0x04 71 03 FF 00 50 50 500x7E0 0x02 3E 80

Log de reprogramació d'una ECU

Page 24: Reprogramming CAN Bootloader UDS

Exemple

RequestDownload0x7E0 0x10 09 34 00 33 00 68 00 Fem la petició per començar la re-programació0x7E8 0x30 01 00 50 50 50 50 500x7E0 0x21 02 38 000x7E8 0x04 74 33 04 00 50 50 50 Ok, i ens indica el tamany màxim que podem enviar en els

transfer data

TransferData0x7E0 0x14 00 36 01 FF FF 00 00 First Frame, indica el tamany de la trama 0x400h (1024 bytes)0x7E8 0x30 01 00 50 50 50 50 50 Flow control, resposta del receptor0x7E0 0x21 FF FF 00 00 FF FF 00 Consecutive frame, resta de trames amb les dades0x7E8 0x30 01 00 50 50 50 50 500x7E0 0x22 00 78 FF 00 00 7E FF0x7E8 0x30 01 00 50 50 50 50 50...0x7E0 0x14 00 36 02 FF FF FF FF Es repeteix fins que finalitza de gravar totes les dades0x7E8 0x30 01 00 50 50 50 50 500x7E0 0x21 FF FF FF FF FF FF FF0x7E8 0x30 01 00 50 50 50 50 50 ...

RequestTransferExit0x7E0 0x01 37 Indiquem que ja no queden mes dades per gravar0x7E8 0x01 77 50 50 50 50 50 50

Log de reprogramació d'una ECU

Page 25: Reprogramming CAN Bootloader UDS

Exemple

RoutineControl - SelfCheck0x7E0 0x10 0C 31 01 FF 01 00 68 Indiquem amb 0xFF01 que volem que la ECU miri si tot s'ha 0x7E8 0x30 01 00 50 50 50 50 50 gravat correctament0x7E0 0x21 00 02 AB FF CC EE0x7E8 0x04 71 01 FF 01 50 50 50 Esperem fins que ens contesta positivament o negativament0x7E0 0x04 31 03 FF 010x7E8 0x04 71 03 FF 01 50 50 50

EcuReset0x7E0 0x02 11 01 Realitzem un reset a la ECU0x7E8 0x02 51 01 50 50 50 50 50

Log de reprogramació d'una ECU

Page 26: Reprogramming CAN Bootloader UDS

Conclusions

Page 27: Reprogramming CAN Bootloader UDS

ConclusionsSobre Bootloader, UDS i ISO-TP

La unió d'aquestes tres tecnologies ens permet realitzar actualitzacions de firmware,

obtenir dades de la ECU, borrarla, etc. d'una manera segura sense haver de tenir accés

a ella.

Page 28: Reprogramming CAN Bootloader UDS

Referències

● Bootloader○ http://dev.emcelettronica.com/what-microcontroller-bootloader-

and-how-it-works

● ISO16765-2 (ISO-TP)○ http://www.iso.

org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=54499

● ISO14229 (UDS)○ http://www.iso.org/iso/catalogue_detail.htm?csnumber=45293

Page 29: Reprogramming CAN Bootloader UDS

Alguna pregunta?

Page 30: Reprogramming CAN Bootloader UDS

Màster en Enginyeria InformàticaFacultat d'Informàtica de Barcelona

Gràcies per la vostra atenció!