18
CAN STACK

AUTOSAR 403 CAN Stack

Embed Size (px)

Citation preview

Page 1: AUTOSAR 403 CAN Stack

CAN STACK

Page 2: AUTOSAR 403 CAN Stack

OVERVIEW

• AUTOSAR CAN Stack• Overview.• Included modules.• From COMM_NO_COMMUNICATION to

COMM_FULL_COMMUNICATION.• Transmission request. • Receive indication.

Page 3: AUTOSAR 403 CAN Stack

AUTOSAR CAN STACK: OVERVIEWAutosar VFB

• The integration of functions from different suppliers is established through a virtual functional bus.

• Allow virtual integration between SW-c as long as communication mechanism is defined.

• Collection of all communication mechanism. • Interfaces on an abstract level that allow s/w design regardless the target h/w.

RTE• Realization of VFB for a specific ECU.• It mange the communication inter/intra ECU.

Page 4: AUTOSAR 403 CAN Stack

AUTOSAR CAN STACK: OVERVIEWCommunication Stack for CAN• COM: - Transfer signals from, and to, RTE.

- Pass signals to CANTP or PDURdepending on the used service.

• PDU-Router: - Route I-PDUs between the following

modules: Communication interface (CANIF),

Transport protocol (CANTP), Diagnostics (DCM)

Page 5: AUTOSAR 403 CAN Stack

AUTOSAR CAN STACK: OVERVIEWCommunication Stack for CAN• CANIF: - It abstracts the interface regardless

Location of the driver (internal/external).

• CANTP:

- Segment and reassemble data Longer than 8 bytes.

• CAN Driver:Abstraction for the CAN controller hardware.

Page 6: AUTOSAR 403 CAN Stack

AUTOSAR CAN STACK: OVERVIEWCommunication Stack for CAN• CANSM:

Change communication mode

as requested.

• CANTRCV: Control external CAN transceiver

hardware, It observe the bus and provide

physical network diagnostics.

Page 7: AUTOSAR 403 CAN Stack

AUTOSAR CAN STACK: OVERVIEWIncluded modules from service layer: • ComM: Propagate requested communication mode to CanSM

• BSWM: Forward user requests to ComM and report communication state to the user.

• ECUM: Detect passive wake up and initialize related modules.

Page 8: AUTOSAR 403 CAN Stack

AUTOSAR CAN STACK: INCLUDED MODULES

Page 9: AUTOSAR 403 CAN Stack

Active VS Passive Wake-up

• Active wake-up: when the current ECU is the source of the wake-up signal (sensor).

• Passive wake-up: when another ECU is the source of the wake-up signal. In this case the ECU should receive NM frames to keep the ECU in the passive wake-up mode.

AUTOSAR CAN STACK: FROM COMM_NO_COMMUNICATION TO COMM_FULL_COMMUNICATION

Page 10: AUTOSAR 403 CAN Stack

Modules interaction1. For active wake-up User request communication mode.

2. ComM propagate requested mode to CANSM.3. CANSM change the current mode to the requested mode by

calling CANIF APIs.

4. CANIF contact the CAN driver which write values in the CAN controller register to go the requested communication mode.

5. The CAN controller send mode indication signal to upper modules till it is back to ComM.

AUTOSAR CAN STACK: FROM COMM_NO_COMMUNICATION TO COMM_FULL_COMMUNICATION

Page 11: AUTOSAR 403 CAN Stack

6- ComM notifies the BSWM to manage what will happen next to start data transmitting.

AUTOSAR CAN STACK: FROM COMM_NO_COMMUNICATION TO COMM_FULL_COMMUNICATION

SWC1 RTE COMM CANSM CANIF CAN

Controller Controller

Red arrows indicate request directionBlue arrows indicate confirmation messages direction

Page 12: AUTOSAR 403 CAN Stack

AUTOSAR CAN STACK: FROM COMM_NO_COMMUNICATION TO COMM_FULL_COMMUNICATION

APIs and State transitions: COMM CANSM CANIF CAN Hardware

(controller)Start State COMM_NO_COM

MUNICATIONS_RNOCO: S_CAN_TRCV_NORMAL

CANIF_CS_INIT: CANIF_CS_STOPPED

CAN_READY STOP/SLEEP

Called APIs CanSM_RequestComMode(NetworkHandle,ComM_Mode:=COMM_FULL_COMMUNICATION)

CanIf_SetControllerMode(CanSMControllerId, CANIF_CS_STARTED)ANDCanIf_SetPduMode(CanSMControllerId, CANIF_SET_ONLINE)

Can_SetControllerMode (Controller, CAN_T_STARTED).

request CAN controller mode transition to START()

Callback fn. Configurable confirmation to BswM.

ComM_BusSM_ModeIndication(Channel,ComMode:=COMM_FULL_COMMUNICATION)

CanSM_ControllerModeIndication(uint8, COMM_FULL_COMMUNICATION)

CanIf_ControllerModeIndication

End State COMM_FULL_COMMUNICATION

S_FUCO: S_NO_BUS_OFF

CANIF_CS_INIT: CANIF_CS_STARTED

CAN_READY START

Page 13: AUTOSAR 403 CAN Stack

AUTOSAR CAN STACK: FROM COMM_NO_COMMUNICATION TO COMM_FULL_COMMUNICATION

Modules state machine:

ComM CANSM CANIF CAN

Page 14: AUTOSAR 403 CAN Stack

Modules interaction1. When BSWM receive confirmation signal that the channel is

ready it notifies the COM to take the massage from the RTE.

2. COM propagate the IPDU to PDUR which in turn forward the message to the corresponding interface of TP modules (in our case if the message is loner than 8 bytes will be forwarded to CANTP else to CANIF).

3. CANIF sends data to the CAN driver which writes data in the CAN controller registers.

4. After successful transmission TxConfirmation signal is sent to upper layers.

AUTOSAR CAN STACK: TRANSMISSION REQUEST

Page 15: AUTOSAR 403 CAN Stack

Modules interaction

SWC1 RTE COM PDUR CANIF CAN

Controller Controller

Red arrows indicate request directionBlue arrows indicate confirmation messages direction

AUTOSAR CAN STACK: TRANSMISSION REQUEST

Page 16: AUTOSAR 403 CAN Stack

AUTOSAR CAN STACK: TRANSMISSION REQUEST

COM PduR CANIF CAN Hardware (controller)

Called APIs PduR_ComTrans

mit

CanIf_Transmit Can_write Copy LPDU to harware

Callback fn.

Rte_COMCbkTAck_signalX()

Com_TxConfirmation

PduR_CanTxConfirmation

CanIf_CanTxConfirmation

Tx interrupt

APIs and State transitions:

Page 17: AUTOSAR 403 CAN Stack

Modules interactionTo detect received data Interrupt or polling can be used

Interrupt: The controller will notify CANIF when data is received

Polling: CANIF will periodically check weather data is received or not.

For both modes after the CANIF detects that there is received data it will notify upper modules to read data.

After reaching the COM the received data will be available to be called by the RTE when required.

AUTOSAR CAN STACK: RECEIVE INDICATION

Page 18: AUTOSAR 403 CAN Stack

AUTOSAR CAN STACK: RECEIVE INDICATION

COM PduR CANIF CAN Hardware (controller)

Callback fn.

Rte_COMCbk_signalX()

Com_RxIndication PduR_<module>RxIndication

CanIf_RxIndication ReceiveInterrupt()

Called APIs CanIf_ReadRxNotifStatus()CanIf_ReadRxPduData

Read data fromCANIF Rxbuffer()

APIs and State transitions: