Debug OS Training: Confidential 05/19/2021 Bute Viorel-Gabriel, © Continental AG

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 16

Debug OS Training

Space for Sender Information 05/19/2021


Confidential Bute Viorel-Gabriel, © Continental AG 1
Agenda

1Protection Hook si Error Hook


2E_OS_LIMIT , MPW si MPR(Aurix) / Data abort (M3n)
3MPW & MPR / Data abort – cum se rezolva
4Sesiune debug

Space for Sender Information 05/19/2021


Confidential Bute Viorel-Gabriel, © Continental AG 2
Protection Hook si Error Hook

› Microkernel-ul reporteaza erorile/defectiunile aparute in system prin intermediul a 3 hook-


uri, conform standardului AUTOSAR:
 ErrorHook()
 ProtectionHook()
 ShutdownHook()
› Instantele acestor functii sunt prezente in fiecare core configurat. Microkerneu-ul activeaza
functia hook aferenta core-ului in care eroarea apare.

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 3
Protection Hook si Error Hook

›Inainte de a rula aplicatia, puneti


breakpoint in ProtectionHook si
ErrorHook !!!

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 4
Protection Hook si Error Hook

› ProtectionHook() – este chemat cand


o eroarea serioasa apare in sistem.
(accesul la zone de memorie
nepermise, depasirea timpului de
executie)
› ErrorHook() – este chemat atunci cand
un Task sau un ISR Cat2 cauzeaza o
eroare.

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 5
E_OS_LIMIT , MPW si MPR

E_OS_LIMIT – ErrorHook()
› Sunt cazuri exceptionale cand o eroare indica o atentionare (warning) care poate aparea
in timpul normal de functionare a sistemului. Aceste cazuri sunt:
› ActivateTask, ChainTask E_OS_LIMIT (standard)
› GetAlarm E_OS_NOFUNC (standard)
› SetAbsAlarm, SetRelAlarm E_OS_STATE (standard)
› CancelAlarm E_OS_NOFUNC (standard)

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 6
E_OS_LIMIT , MPW si MPR ActivateTask(T1)
ActivateTask(T2)
E_OS_LIMIT - ErrorHook() ActivateTask(T3)

T2 T1 T2 T1
T1 T1
Prio: Prio: … Prio: Prio: …
Prio: LOW Prio: LOW
HIGH LOW HIGH LOW

ErrorHook este apelat deoarece T1 este


reactivat, desi executia acestuia nu a fost
finalizata in ciclu anterior.
T2 T1 T2 T1
T1 Prio: T3
MEDI
Prio: Prio: Prio: …
Prio: LOW Prio: HIGH
UM LOW HIGH LOW

Space for Sender Information 05/19/2021


Confidential Bute Viorel-Gabriel, © Continental AG 7
E_OS_LIMIT , MPW si MPR

MPW si MPR(Aurix) / DataAbort(M3N) – ProtectionHook()

› MPW – Memory Protection WRITE – instruction de scriere ( ex:STD)


› MPR – Memory Protection READ – instructiuni de citire (ex: LOAD)
› Aceste erori apar in momentul in care, din thread-ul curent, se incearca accesul unei zone
de memorie la care acesta nu are acces.

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 8
E_OS_LIMIT , MPW si MPR

MPW si MPR(Aurix) / DataAbort(M3N) – ProtectionHook()

› MPW – Memory Protection WRITE – instruction de scriere ( ex:STD)


› MPR – Memory Protection READ – instructiuni de citire (ex: LOAD)
› Aceste erori apar in momentul in care, din thread-ul curent, se incearca accesul unei zone
de memorie la care acesta nu are acces.

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 9
MPW & MPR / DataAbort – cum se rezolva?

1. Setati breakpoint in ProtectionHook()


2. Odata apelat ProtectionHook(), adaugati structura error_info in View->Watch
3. Prin intermediul error_object_name se poate determina aplicatia din OS care
genereaza ProtectionHook()
4. Prin registrul deadd / far_el1 se determa ce regiune de memorie se incearca a fi
accesata din aplicatia determinata la punctul (3)
5. Arhitectul / project mangerul trebuie sa fie informat despre problema aparuta. In
baza pasilor (1)-(4) parcursi de catre developer, se vor lua deciziile necesare pentru
solutionarea problemei.

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 10
Sesiune Debug (Aurix/M3N)
1. Setati breakpoint in ProtectionHook()

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 11
Sesiune Debug (Aurix/M3N)
2. Odata apelat ProtectionHook(), adaugati structura error_info in View->Watch

AURIX M3N
OR

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 12
Sesiune Debug (Aurix/M3N)
3. Prin intermediul error_object_name se poate determina aplicatia din OS care
genereaza ProtectionHook()

Task-ul Init_Task_c0 face parte din aplicatia


OsApp_BSW_QM_c0. Prin urmare aplicatia
respective genereaza ProtectionHook.

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 13
Sesiune Debug (Aurix/M3N)
4. Prin registrul deadd / el_fl1 se determa ce regiune de memorie se incearca a fi
accesata din aplicatia determinata la pasul (3)
AURIX
Start
address

Size
region

Se deschide
fisierul .map si se
cauta sectiunea
‘Task entry address’

Pentru a afla zona de memorie ce se doreste a fi accesata:


deadd ϵ [Start address ; Start address+ Size region] . In
exemplul dat regiunea cautata este OsApp_BSW_QM_c0

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 14
Sesiune Debug (Aurix/M3N)
4. Prin registrul deadd / far_el1 se determa ce regiune de memorie se incearca a fi
accesata din aplicatia determinata la pasul (3)
M3N

Se deschide
fisierul .map si se
cauta ‘Execution
Region’

Pentru a afla zona de memorie ce se doreste a fi accesata:


far_el1 ϵ [Exec base; Exec base+ Size ] . In exemplul dat
regiunea cautata este SharedBuffer_B

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 15
Sesiune Debug (Aurix/M3N)

› Arhitectul / project mangerul trebuie sa fie


informat despre problema aparuta. In baza
pasilor (1)-(4) , parcursi de catre developer , se
vor lua deciziile necesare pentru solutionarea
problemei.

Space for Sender Information 05/19/2021


Confidential Author, © Continental AG 16

You might also like