Sunteți pe pagina 1din 27

Învață AUTOSAR Simplu Și Eficient

DESIGNED AND CREATED BY MIHAI SUCIU 1


Curs1. Memory Stack și AUTOSAR_CDD

Definirea componentei AUTOSAR_CDD și depedințele de Memory Stack

DESIGNED AND CREATED BY MIHAI SUCIU 2


Curpins
• Recapitulare
• Definirea arhitecturii
• Introducere in Memory Stack
• V Model
• Requirement-uri pentru componenta AUTOSAR_CDD
• Definirea componentei AUTOSAR_CDD
• Conectarea componentei cu Memory Stack
• Temă de casă
DESIGNED AND CREATED BY MIHAI SUCIU 3
Recapitulare
• AUTOSAR Big Picture

• Arhitectură bazată pe leyere

• Fiecare leyer are o anumită funcționalitate

• RTE-ul este cel care face ”magia”


DESIGNED AND CREATED BY MIHAI SUCIU 4
Definirea arhitecturii
• Arhitectura completă a integrării componentei AUTOSAR_CDD

DESIGNED AND CREATED BY MIHAI SUCIU 5


Definirea arhitecturii, care este scopul
• Arhitectura este definită pentru un ECU din mașină
• AUTOSAR_CDD trebuie să salveze un istoric al mașinii
• AUTOSAR_CDD trebuie să citească viteza roților, kilometrajul și turația
motorului
• AUTOSAR_CDD trebuie să ofere un istoric al datelor către Tester/Service
• AUTOSAR_CDD trebuie să ofere informații altor ECU-uri din mașină

DESIGNED AND CREATED BY MIHAI SUCIU 6


Definirea arhitecturii, care este scopul

DESIGNED AND CREATED BY MIHAI SUCIU 7


Definirea arhitecturii, curs 1
• Arhitectura necesară pentru interacțiunea cu Memory Stack-ul

DESIGNED AND CREATED BY MIHAI SUCIU 8


Introducere in Memory Stack
• NvM – NVRAM Manager
• Mem If – Memory Abstraction Interface
• FEE – Flash Eeprom Emulation
• EA – Eeprom Abstraction
• Drivers :
• Flash Driver ( Used only by FEE)
• Eeprom Driver ( Used only by EA)
DESIGNED AND CREATED BY MIHAI SUCIU 9
Introducere in Memory Stack, NvM
• Cele mai inportante interfețe/funcții
• NvM_Init(*ConfigPtr)
• NvM_MainFunction(void)
• NvM_ReadBlock(Block_Id, *data)
• NvM_WriteBlock(Block_Id, *data)
• NvM_GetErrorStatus(Block_Id, *block_status)
• NvM_SetRamBlockStatus(Block_Id, BlockChanged)
• NvM_ReadAll()
• NvM_WriteAll()
DESIGNED AND CREATED BY MIHAI SUCIU 10
Introducere in Memory Stack, FEE
• Cele mai inportante interfețe/funcții
• Fee_Init(void)
• Fee_MainFunction(void)
• Fee_Read(Block_Id, Offset, *data, Length)
• Fee_Write (Block_Id, *data)
• Fee_GetStatus(void)
• Fee_Cancel(void)
• Fee_JobEndNotification(void)
• Fee_JobErrorNotification(void)
DESIGNED AND CREATED BY MIHAI SUCIU 11
Introducere in Memory Stack, EA
• Cele mai inportante interfețe/funcții
• Ea_Init(void)
• Ea_MainFunction(void)
• Ea_Read(Block_Id, Offset, *data, Length)
• Ea_Write (Block_Id, *data)
• Ea_GetStatus(void)
• Ea_Cancel(void)
• Ea_JobEndNotification(void)
• Ea_JobErrorNotification(void)
DESIGNED AND CREATED BY MIHAI SUCIU 12
Introducere in Memory Stack, Drivers
• Cele mai inportante interfețe/funcții, Flash Driver
• Fls_Init(*ConfigPtr)
• Fls_MainFunction(void)
• Fls_Read(Address, *data, Length)
• Fls_Write (Address, *data, Length)
• Fls_Erase(Address, Length)

• Cele mai inportante interfețe/funcții, Eeprom Driver


• Eep_Init(*ConfigPtr)
• Eep_MainFunction(void)
• Eep_Read(Address, *data, Length)
• Eep_Write (Address, *data, Length)
• Eep_Erase(Address, Length)
DESIGNED AND CREATED BY MIHAI SUCIU 13
Introducere in Memory Stack, Stări Generale

DESIGNED AND CREATED BY MIHAI SUCIU 14


Introducere in Memory Stack, Scriere și Citire

DESIGNED AND CREATED BY MIHAI SUCIU 15


Introducere in Memory Stack, Status Operație

DESIGNED AND CREATED BY MIHAI SUCIU 16


Introducere in Memory Stack, Fee intern
• Mecanismul de stocare al FEE-ului
• Precondiții -> Minim 2 Bank-uri

• Block-ul nu are o adresă fixă

• Fiecare Block se va scrie la prima adresă liberă din Bank

• La începutul și la sfârșitul Bank-ului se vor scrie informații pe care doar


FEE-ul știe să le decodeze(Bank Header and Footer).

• Pe cele două Bank-uri doar FEE-ul trebuie să opereze

DESIGNED AND CREATED BY MIHAI SUCIU 17


Introducere in Memory Stack
• Mecanismul de swapping al FEE-ului
• Precondiții -> Un Bank este plin cu blocuri scrise

• La următoarea cerere de escriere se declanșează swapping-ul

• Scriere se va face pe bank-ul gol

DESIGNED AND CREATED BY MIHAI SUCIU 18


Introducere in Memory Stack
• Mecanismul de swapping al FEE-ului
• Precondiții -> Un Bank este plin cu blocuri scrise

• Scrierea Block-ului s-a făcut pe Bank-ul gol

• FEE-ul va copia ultimele instanțe ale tuturor locurilor din Bank-ul plin
În Bank-ul gol

DESIGNED AND CREATED BY MIHAI SUCIU 19


Introducere in Memory Stack
• Mecanismul de erase al FEE-ului
• Precondiții -> Un Bank este plin cu blocuri scrise

• Ultimele instanțe ale tuturor locurilor din Bank-ul plin s-au copiat
în Bank-ul gol

• FEE-ul va face erase(ștergere) la Bank-ul plin(Bank 1)

DESIGNED AND CREATED BY MIHAI SUCIU 20


Introducere in Memory Stack, EA intern
• Mecanismul de stocare al EA-ului
• Precondiții -> Chipul de Eeprom trebuie să existe

• Fiecare Block va avea o adresă fixă, nu se va schimba.

• Nu există swapping

DESIGNED AND CREATED BY MIHAI SUCIU 21


Introducere in Memory Stack, FEE vs. EA

DESIGNED AND CREATED BY MIHAI SUCIU 22


V Model

DESIGNED AND CREATED BY MIHAI SUCIU 23


Requirement-uri AUTOSAR_CDD, Part 1
• AUTOSAR_CDD trebuie să citească la fiecare 10ms semnalele care oferă
informații despre Viteza Roților, Turația Motorului și Kilometrajul mașinii.
• AUTOSAR_CDD trebuie să salveze viteza și turația maximă citită, pe tot
parcursul vieții mașinii ( Life-Time).
• AUTOSAR_CDD trebuie să salveze Kilometrajul. Dacă Kilometrajul citit este mai
mare cu 100km decât cel salvat, atunci se va mai face o scriere cu ultima
valoare. Kilometrajul se va scrie la fiecare trecere din RUN în Sleep a sistemului.
• Dacă valoarea citită de la semnal este mai mică cu 100 km decât valoarea
scrisă în memoria non-volatilă, atunci AUTOSAR_CDD va seta o eroare.
• AUTOSAR_CDD va scrie trei blocuri diferite, două în FEE(Viteză și Rotație) și unul
în Eeprom(Kilometraj)

DESIGNED AND CREATED BY MIHAI SUCIU 24


Definirea componentei AUTOSAR_CDD
• Structura fișierelor:
• Autosar_CDD.c
• Autosar_CDD.h
• Rte_Autosar_CDD.h

• Interfețele/Funcțiile exportate de modul:


• Autosar_CDD_Init(void)
• Autosar_CDD_MainFunction(void)
• Autosar_CDD_Stop(void)

DESIGNED AND CREATED BY MIHAI SUCIU 25


Conectarea AUTOSAR_CDD cu MeMStack

DESIGNED AND CREATED BY MIHAI SUCIU 26


Temă de casă
• Descarcă specificația de MemoryStack și citește despre NvM, FEE și EA.

• Completează spațiile libere din proiect

DESIGNED AND CREATED BY MIHAI SUCIU 27

S-ar putea să vă placă și