AUTOSAR Classic LIN
Das LIN-Cluster umfasst Low-Cost-Subbus-Kommunikation für Karosserie- und Komfortfunktionen inklusive Treiber, LinIf-Schedule-Tabellen-Handling, Transceiver-Steuerung und State-Management.
Initialisation et état
Lin_GetStatusLin_GetVersionInfoLin_InitLinIf_GetVersionInfoLinIf_InitLinSM_GetVersionInfoLinSM_InitLinTp_GetVersionInfoLinTp_InitLinTrcv_GetVersionInfoLinTrcv_InitServices · Get…
Services · Set…
Services · Wakeup…
Services · Check…
Services · Goto…
Services · Schedule…
Services · Autres
Lin_GoToSleepLin_GoToSleepInternalLin_SendFrameLinIf_EnableBusMirroringLinIf_HeaderIndicationLinIf_LinErrorIndicationLinIf_TransmitLinSM_RequestComModeLinTp_ChangeParameterLinTp_ShutdownLinTp_TransmitCallbacks
LinIf_RxIndicationLinIf_TxConfirmationCallouts et interfaces attendues
<User_ResponseErrorSignalChanged><User_RxIndication><User_SaveConfigurationRequest><User_TriggerTransmit><User_TxConfirmation>Cyclique
LinSM_MainFunctionTypes
Lin_ConfigTypeLin_FrameCsModelTypeLin_FrameDlTypeLin_FramePidTypeLin_FrameResponseTypeLin_PduTypeLin_SlaveErrorTypeLin_StatusTypeLinIf_ConfigTypeLinIf_SchHandleTypeLinSM_ConfigTypeLinSM_ModeTypeLinTp_ConfigTypeLinTp_ModeLinTrcv_ConfigTypeLinTrcv_TrcvModeTypeLinTrcv_TrcvWakeupModeTypeLinTrcv_TrcvWakeupReasonTypeFonctions
<User_ResponseErrorSignalChanged><User_RxIndication><User_SaveConfigurationRequest><User_TriggerTransmit><User_TxConfirmation>Lin_CheckWakeupLin_GetStatusLin_GetVersionInfoLin_GoToSleepLin_GoToSleepInternalLin_InitLin_SendFrameLin_WakeupLin_WakeupInternalLinIf_CheckWakeupLinIf_EnableBusMirroringLinIf_GetConfiguredNADLinIf_GetPIDTableLinIf_GetTrcvModeLinIf_GetTrcvWakeupReasonLinIf_GetVersionInfoLinIf_GotoSleepLinIf_HeaderIndicationLinIf_InitLinIf_LinErrorIndicationLinIf_RxIndicationLinIf_ScheduleRequestLinIf_SetConfiguredNADLinIf_SetPIDTableLinIf_SetTrcvModeLinIf_SetTrcvWakeupModeLinIf_TransmitLinIf_TxConfirmationLinIf_WakeupLinIf_WakeupConfirmationLinSM_GetCurrentComModeLinSM_GetVersionInfoLinSM_GotoSleepConfirmationLinSM_GotoSleepIndicationLinSM_InitLinSM_MainFunctionLinSM_RequestComModeLinSM_ScheduleRequestLinSM_ScheduleRequestConfirmationLinSM_WakeupConfirmationLinTp_ChangeParameterLinTp_GetVersionInfoLinTp_InitLinTp_ShutdownLinTp_TransmitLinTrcv_CheckWakeupLinTrcv_GetBusWuReasonLinTrcv_GetOpModeLinTrcv_GetVersionInfoLinTrcv_InitLinTrcv_SetOpModeLinTrcv_SetWakeupModeTypes
Lin_ConfigTypeLin_FrameCsModelTypeLin_FrameDlTypeLin_FramePidTypeLin_FrameResponseTypeLin_PduTypeLin_SlaveErrorTypeLin_StatusTypeLinIf_ConfigTypeLinIf_SchHandleTypeLinSM_ConfigTypeLinSM_ModeTypeLinTp_ConfigTypeLinTp_ModeLinTrcv_ConfigTypeLinTrcv_TrcvModeTypeLinTrcv_TrcvWakeupModeTypeLinTrcv_TrcvWakeupReasonTypeCarte des thèmes
Lin
17LinIf
35LinSM
12Aucune donnée d'élément pour cette version
Lin
This function checks if a wakeup has occurred on the addressed LIN channel.
Std_ReturnType Lin_CheckWakeup (uint8 Channel);Service Lin_GetStatus.
Lin_StatusType Lin_GetStatus (uint8 Channel, const uint8* * Lin_SduPtr);Returns the version information of this module.
void Lin_GetVersionInfo (Std_VersionInfoType* versioninfo);The service instructs the driver to transmit a go - to - sleep - command on the addressed LIN channel. Only used for LIN master nodes.
Std_ReturnType Lin_GoToSleep (uint8 Channel);Sets the channel state to LIN_ CH_ SLEEP, enables the wake - up detection and optionally sets the LIN hardware unit to reduced power operation mode (if supported by HW).
Std_ReturnType Lin_GoToSleepInternal (uint8 Channel);Initializes the LIN module.
void Lin_Init (const Lin_ConfigType* Config);Sends a LIN header and a LIN response, if necessary. The direction of the frame response (master response, slave response, slave - to - slave communication) is provided by the Pdu Info Ptr. Only used for LIN master nodes.
Std_ReturnType Lin_SendFrame (uint8 Channel, const Lin_PduType* PduInfoPtr);Generates a wake up pulse and sets the channel state to LIN_ CH_ OPERATIONAL.
Std_ReturnType Lin_Wakeup (uint8 Channel);Sets the channel state to LIN_ CH_ OPERATIONAL without generating a wake up pulse.
Std_ReturnType Lin_WakeupInternal (uint8 Channel);This is the type of the external data structure containing the overall initialization data for the LIN driver and the SFR settings affecting the LIN channels. A pointe r to such a structure is provided to the LIN driver initialization routine for configuration of the driver, LIN hardware unit and LIN hardware channels.
This type is used to specify the Checksum model to be used for the LIN Frame.
This type is used to specify the number of SDU data bytes to copy.
Represents all valid protected identifier used by Lin_ Send Frame().
Thi s type is used to specify whether the frame processor is required to transmit the response part of the LIN frame.
This Type is used to provide PID, checksum model, data length and SDU pointer from the LIN Interface to the LIN driver.
This type represents the slave error types that are detected during header reception and response transmission / reception.
LIN operation states for a LIN channel or frame, as returned by the API service Lin_ Get Status().
LinIf
Notifies the change of the response error signal with the new value. Only applicable for LIN slave nodes. AUTOSAR CP R20 - of Document ID : AUTOSAR_ SWS_ LINInterface
void <User_ResponseErrorSignalChanged> (NetworkHandleType Channel, boolean RespErrSigValue);Indication of a received PDU from a lower layer communication interface module.
void <User_RxIndication> (PduIdType RxPduId, const PduInfoType* PduInfoPtr);Notifies the reception of a Save Configuration request. Only applicable for LIN slave nodes.
boolean <User_SaveConfigurationRequest> (NetworkHandleType Channel);Within this API, the upper layer module (called module) shall check whether the available data fits into the b uffer size reported by Pdu Info Ptr - >Sdu Length. If it fits, it shall copy its data into the buffer provided by Pdu Info Ptr - >Sdu Data Ptr and update the length of the actual copied data in Pdu Info Ptr - >Sdu Length. If not, it returns E_ NOT_ OK without ch anging Pdu Info Ptr.
Std_ReturnType <User_TriggerTransmit> (PduIdType TxPduId, PduInfoType* PduInfoPtr);The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.
void <User_TxConfirmation> (PduIdType TxPduId, Std_ReturnType result);Will be called when the Ecu M has been notified about a wakeup on a specific LIN channel.
Std_ReturnType LinIf_CheckWakeup (EcuM_WakeupSourceType WakeupSource);Enables or disables mirroring for a LIN channel.
Std_ReturnType LinIf_EnableBusMirroring (NetworkHandleType Channel, boolean MirroringActive);Reports the current configured NAD. Only applicable for LIN slave nodes.
Std_ReturnType LinIf_GetConfiguredNAD (NetworkHandleType Channel, uint8* Nad);Retrieves all assigned PID values. The order is congruent to the LIN frame index. Only applicable for LIN slave nodes.
Std_ReturnType LinIf_GetPIDTable (NetworkHandleType Channel, Lin_FramePidType* PidBuffer, uint8* PidBufferLength);Returns the actual sta te of a LIN Transceiver Driver.
Std_ReturnType LinIf_GetTrcvMode (NetworkHandleType Channel, LinTrcv_TrcvModeType* TransceiverModePtr);Returns the reason for the wake up that has been detected by the LIN Transceiver Driver.
Std_ReturnType LinIf_GetTrcvWakeupReason (NetworkHandleType Channel, LinTrcv_TrcvWakeupReasonType* TrcvWuReasonPtr);Returns the version information of this module.
void LinIf_GetVersionInfo (Std_VersionInfoType* versioninfo);Initiates a transition into the Sleep Mode on the selected channel.
Std_ReturnType LinIf_GotoSleep (NetworkHandleType Channel);The LIN Driver will call this function to report a received LIN header. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).
Std_ReturnType LinIf_HeaderIndication (NetworkHandleType Channel, Lin_PduType* PduPtr);Initializes the LIN Interface.
void LinIf_Init (const LinIf_ConfigType* ConfigPtr);The LIN Driver will call this function to report a detected error event during header or response processing. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).
void LinIf_LinErrorIndication (NetworkHandleType Channel, Lin_SlaveErrorType ErrorStatus);The LIN Driver will call this function to report a successfully received response and provides the reception data to the LIN Interface. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).
void LinIf_RxIndication (NetworkHandleType Channel, uint8* Lin_SduPtr);Requests a schedule table to be executed. Only used for LIN master nodes.
Std_ReturnType LinIf_ScheduleRequest (NetworkHandleType Channel, LinIf_SchHandleType Schedule);Sets the current configured NAD. Only applicable for LIN slave nodes.
Std_ReturnType LinIf_SetConfiguredNAD (NetworkHandleType Channel, uint8 Nad);Sets all assigned PID values. The order is congruent to the LIN frame index. Only applicable for LIN slave nodes.
Std_ReturnType LinIf_SetPIDTable (NetworkHandleType Channel, Lin_FramePidType* PidBuffer, uint8 PidBufferLength);Set the given LIN transceiver to the given mode.
Std_ReturnType LinIf_SetTrcvMode (NetworkHandleType Channel, LinTrcv_TrcvModeType TransceiverMode);This API enables, disables and cl ears the notification for wakeup events on the addressed network
Std_ReturnType LinIf_SetTrcvWakeupMode (NetworkHandleType Channel, LinTrcv_TrcvWakeupModeType LinTrcvWakeupMode);Re quests transmission of a PDU.
Std_ReturnType LinIf_Transmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);The LIN Driver will call this function to report a successfully transmitted response. This function is only applicable for LIN slave nodes (available only if the ECU has any LIN slave channel).
void LinIf_TxConfirmation (NetworkHandleType Channel);Initiates the wake up process.
Std_ReturnType LinIf_Wakeup (NetworkHandleType Channel);The LIN Driver or LIN Transceiver Driver will call this function to report the wake up source after the successful wakeup detection during Check Wakeup or after power on by bus.
void LinIf_WakeupConfirmation (EcuM_WakeupSourceType WakeupSource);Request to change a specific transport protocol parameter (e.g. block size).
Std_ReturnType LinTp_ChangeParameter (PduIdType id, TPParameterType parameter, uint16 value);Returns the version information of this module.
void LinTp_GetVersionInfo (Std_VersionInfoType* versioninfo);Initializes the LIN Transport Layer.
void LinTp_Init (const LinTp_ConfigType* ConfigPtr);Shutdowns the LIN TP.
void LinTp_Shutdown (void);Requests transmission of a PDU.
Std_ReturnType LinTp_Transmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);A pointer to an instance of this structure will be used in the initialization of the LIN Interface. The outline of the structure is defined in chapter 10 Configuration Specification.
Index of the schedule table that is selectable and followed by LIN Interface. Value is unique per LIN c hannel/ controller, but not per ECU. The number of schedule tables is limited to 255
This is the base type for the configuration of the LIN Transport Protocol A pointer to an instance of this structure will be used in the initialization of the LIN Transport Protocol. The outline of the structure is defined in chapter 10 Configuration Specification
This type denotes which Schedule table can be requested by LIN TP during diagnostic session
LinSM
Function to query the current communication mode.
Std_ReturnType LinSM_GetCurrentComMode (NetworkHandleType network, ComM_ModeType* mode);-
void LinSM_GetVersionInfo (Std_VersionInfoType* versioninfo);The Lin If will call this callback when the go to sleep command is sent successfully or not sent successfully on the network.
void LinSM_GotoSleepConfirmation (NetworkHandleType network, boolean success);The Lin If will call this callback when the go to sleep command is received on the network or a bus idle timeout occurs. Only applicable for LIN slave nodes.
void LinSM_GotoSleepIndication (NetworkHandleType Channel);This function initializes the Lin SM.
void LinSM_Init (const LinSM_ConfigType* ConfigPtr);Periodic function that runs the timers of different request timeouts
void LinSM_MainFunction (void);Requesting of a communication mode. The mode switch will not be made instant. The Lin SM will notify the caller when mode transition is made.
Std_ReturnType LinSM_RequestComMode (NetworkHandleType network, ComM_ModeType mode);The upper layer requests a schedule table to be changed on one LIN network.
Std_ReturnType LinSM_ScheduleRequest (NetworkHandleType network, LinIf_SchHandleType schedule);The Lin If module will call this callback when the new requested schedule table is active.
void LinSM_ScheduleRequestConfirmation (NetworkHandleType network, LinIf_SchHandleType schedule);The Lin If will call this callback when the wake up signal command is sent not successfully/ successfully on the network.
void LinSM_WakeupConfirmation (NetworkHandleType network, boolean success);Data structure type for the post - build configuration parameters.
Type used to report the current mode to the Bsw M
LinTrcv
Service LinTrcv_CheckWakeup.
Std_ReturnType LinTrcv_CheckWakeup (uint8 LinNetwork);This API provides the reason for the wakeup that the LIN transceiver has detected in the parameter "Reason". The ability to dete ct and differentiate the possible wakeup reasons depends strongly on the LIN transceiver hardware.
Std_ReturnType LinTrcv_GetBusWuReason (uint8 LinNetwork, LinTrcv_TrcvWakeupReasonType* Reason);API detects the actual software state of LIN transceiver driv er.
Std_ReturnType LinTrcv_GetOpMode (uint8 LinNetwork, LinTrcv_TrcvModeType* OpMode);This service provides the version information of this module through the parameter "versioninfo".
void LinTrcv_GetVersionInfo (Std_VersionInfoType* versioninfo);Initializes the Lin Transceiver Driver module.
void LinTrcv_Init (const LinTrcv_ConfigType* ConfigPtr);The internal state of the LIN transceiver driver is switched to mode given in the parameter Op Mode.
Std_ReturnType LinTrcv_SetOpMode (uint8 LinNetwork, LinTrcv_TrcvModeType OpMode);This API enables, disables and clears the notification for wakeup events on the addressed network. A vailable via Lin Trcv.h
Std_ReturnType LinTrcv_SetWakeupMode (uint8 LINNetwork, LinTrcv_TrcvWakeupModeType TrcvWakupMode);Configuration data structure of the Lin Trcv module. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_LINTransceiverDriver
Operating modes of the LIN Transceiver Driver
Wake up operating modes of the LIN Transceiver Driver.
This type denotes the wake up reason detected by the LIN transceiver in detail.
Guide du clusterGÉNÉRÉ PAR IA
Permet la mise en réseau économique des capteurs et actionneurs via le Local Interconnect Network dans le véhicule.
Permet la mise en réseau économique des capteurs et actionneurs via le Local Interconnect Network dans le véhicule.
Le cluster de modules LIN Communication réalise le raccordement standardisé des sous-systèmes de bus LIN via les modules LinSM, LinIf, LinTrcv et Lin (SWS COMManager p. 19). Il contrôle la transmission basée sur une table d'ordonnancement (schedule) des trames pour les maîtres, ainsi que l'évaluation réactive de l'en-tête et la transmission des données pour les esclaves ([SWS_LinIf_91004], [SWS_Lin_00168]). Parallèlement, le cluster coordonne la transition ordonnée entre la communication complète et le mode veille, ainsi que le traitement autonome des erreurs via le signal response_error ([SWS_LinIf_00763]).
Le cluster de modules LIN Communication fournit l'implémentation AUTOSAR complète du protocole LIN et comprend le gestionnaire d'états LinSM, l'interface LinIf (y compris le protocole de transport LinTp), le pilote de transceiver LinTrcv ainsi que le pilote MCAL Lin (SWS COMManager p. 19). Il relie les sous-réseaux, les capteurs et les actionneurs à la matrice de communication AUTOSAR et fait une distinction stricte entre les nœuds maîtres avec exécution autonome du schedule et les nœuds esclaves répondant de manière purement réactive ([SWS_LinIf_00197], [SWS_Lin_00272]).
Diagramme d'architecture\u00a0: architecture en couches et relations d'interfaces du cluster LIN entre les services de communication, la couche d'abstraction et la MCAL. Sources\u00a0: SWS COMManager p. 19, AUTOSAR SWS LINInterface p. 133.
La transmission des données s'effectue sur les calculateurs (ECU) maîtres par le pilotage périodique du pilote via Lin_SendFrame, suivi de l'interrogation d'état via Lin_GetStatus ([SWS_Lin_00168]). Sur l'esclave en revanche, la détection d'un en-tête dans le pilote entraîne le callback synchrone LinIf_HeaderIndication ([SWS_LinIf_91004]). L'interface décide de la réception, de la réponse ou de l'ignorance sur la base du PID et acquitte la fin des opérations via LinIf_RxIndication ou LinIf_TxConfirmation ([SWS_LinIf_91005], [SWS_LinIf_91006]). Le LinTp intégré traite les messages de diagnostic via des commutations automatisées de la table de schedule ([SWS_LinIf_00641]).
Dans le cycle de fonctionnement, LinSM coordonne les transitions d'état entre LINSM_NO_COM et LINSM_FULL_COM ([SWS_LinSM_00026], [SWS_LinSM_00032]). Le réveil s'effectue par impulsion de bus via Lin_Wakeup ([SWS_Lin_00169]). Le passage en mode veille s'effectue pour le maître par l'envoi actif d'une trame de sommeil (sleep frame), et pour l'esclave après réception de la commande de sommeil ou en cas de bus au repos (bus idle) via LinIf_GotoSleep, Lin_GoToSleepInternal et la commande de mise en veille du transceiver ([SWS_LinSM_00231], [SWS_LinIf_00757]).
Diagramme de séquence\u00a0: interaction des modules BSW lors de l'entrée d'un esclave LIN en état de veille après le signal bus sleep. Sources\u00a0: [SWS_LinSM_91000], [SWS_LinSM_00231], [SWS_LinIf_00757], AUTOSAR SWS LINStateManager p. 48.
Les erreurs de communication sont détectées sur les esclaves via LinIf_LinErrorIndication et signalées de manière autonome au maître dans le signal response_error ([SWS_LinIf_91007], [SWS_LinIf_00763]). Des zones de synchronisation inter-canaux et des séparations strictes entre tâches cycliques (LinIf_MainFunction) et ISR du pilote garantissent la stabilité du système ([SWS_LinIf_00384]).
Architecture système & rôle du cluster de modules
Le cluster de modules LIN Communication fournit la communication standardisée via le Local Interconnect Network (LIN) selon la norme ISO 17987 au sein de la pile logicielle de base AUTOSAR Classic (Basic Software). Il sert principalement de sous-système de bus économique pour raccorder capteurs et actionneurs dans le réseau de bord du véhicule (AUTOSAR FO Features p. 58). Le cluster s'étend sur plusieurs couches de l'architecture AUTOSAR\u00a0: le LIN State Manager (LinSM) opère au niveau des Communication Services, la LIN Interface (LinIf) incluant le protocole de transport intégré (LinTp) constitue la Communication Abstraction, le LIN Transceiver Driver (LinTrcv) fait partie de l'ECU Abstraction et le LIN Driver (Lin) réside en tant que module proche du matériel dans la couche d'abstraction du microcontrôleur (MCAL) (SWS COMManager p. 19).
Sur le plan architectural, le cluster différencie strictement les nœuds maîtres et les nœuds esclaves. Un maître LIN contrôle de façon autonome le trafic sur le bus via des tables d'ordonnancement (schedule tables) et génère tous les en-têtes, tandis que les esclaves LIN répondent de manière purement réactive aux en-têtes reçus ou évaluent les signaux ([SWS_LinIf_00197], [SWS_Lin_00272]). Pour les tâches de diagnostic et de transport selon l'ISO 14229, la LIN Interface encapsule la fonctionnalité TP, qui traite les messages de diagnostic segmentés (Master Request Frame MRF et Slave Response Frame SRF) via le PduR et le DCM ([SWS_LinIf_00351], [SWS_LinIf_00629]). Vers l'extérieur, le cluster interagit intensément avec le Communication Manager (ComM), le Basic Software Mode Manager (BswM), le PDU Router (PduR) et l'ECU State Manager (EcuM) (SWS COMManager p. 19).
Diagramme d'architecture\u00a0: architecture en couches et relations d'interfaces du cluster LIN entre les services de communication, la couche d'abstraction et la MCAL. Sources\u00a0: SWS COMManager p. 19, AUTOSAR SWS LINInterface p. 133.
Interaction & voies d'interaction entre les modules
Les voies d'interaction dans le cluster diffèrent fondamentalement selon le rôle du nœud. Dans le maître LIN, la LIN Interface initie l'exécution de la table de schedule active via sa tâche périodique. Pour les trames d'émission arrivées à échéance, LinIf récupère les données utiles via les mécanismes de trigger transmit de la couche supérieure et transmet la structure Lin_PduType au pilote LIN via Lin_SendFrame ([SWS_Lin_00232], SWS LINInterface p. 37). Le pilote transmet l'en-tête et les données de manière non bloquante ([SWS_Lin_00027]). À l'expiration du temps d'exécution maximal de la trame, LinIf détermine le résultat de la transmission via Lin_GetStatus ([SWS_Lin_00168], SWS LINInterface p. 35). Lors des créneaux de réception, LinIf récupère les données déposées par le pilote dans le tampon et les achemine vers les couches supérieures ([SWS_Lin_00233]).
Sur un esclave LIN, le chemin de données s'exécute de manière événementielle\u00a0: si le pilote MCAL Lin détecte sur le matériel un en-tête valide comprenant break, synch et PID, il appelle de manière synchrone le callback LinIf_HeaderIndication ([SWS_Lin_00280], [SWS_LinIf_91004]). L'interface vérifie l'identifiant protégé (PID) à l'aide de la table PID interne ([SWS_LinIf_00816], [SWS_LinIf_00823]). S'il s'agit d'une trame d'émission, LinIf récupère les données utiles, configure le type de réponse sur LIN_FRAMERESPONSE_TX et met les données à disposition du pilote dans le tampon ([SWS_Lin_00230]). Si la trame est configurée en réception, le pilote signale le succès via LinIf_RxIndication une fois les octets complètement reçus ([SWS_LinIf_91005]), après quoi LinIf transmet les données au PDU Router. Les confirmations des réponses d'esclave émises s'effectuent via LinIf_TxConfirmation ([SWS_LinIf_91006]).
De plus, le pilotage du transceiver est encapsulé de manière transparente via la LIN Interface\u00a0: l'interface transmet de manière synchrone les demandes de mode telles que LinIf_SetTrcvMode à LinTrcv_SetOpMode ([SWS_LinIf_00544], [SWS_LinTrcv_00002]). Lors des transactions de protocole de transport, LinTp commande via BswM_LinTp_RequestMode la commutation ciblée de la table de schedule du maître entre le mode application (LINTP_APPLICATIVE_SCHEDULE), la demande de diagnostic (LINTP_DIAG_REQUEST) et la réponse de diagnostic (LINTP_DIAG_RESPONSE) ([SWS_LinIf_00641], [SWS_LinIf_00642], [SWS_LinIf_00643]).
Diagramme de séquence\u00a0: flux de commande et de données dynamique lors de l'indication d'en-tête, du déclenchement d'émission et de l'acquittement de réception sur un esclave LIN. Sources\u00a0: [SWS_Lin_00280], [SWS_LinIf_91004], [SWS_LinIf_91005], AUTOSAR SWS LINInterface p. 133.
Synchronisation, réentrance et contextes de tâches
L'exécution au sein du cluster de modules est répartie entre contextes de tâches cycliques et niveaux d'interruption proches du matériel. Au cœur du contrôle séquentiel cyclique dans la LIN Interface se trouve la fonction ordonnancée LinIf_MainFunction_<LinIfChannel.ShortName>, qui est obligatoirement instanciée séparément pour chaque canal LIN configuré ([SWS_LinIf_00384], [SWS_LinIf_00725]). Elle prend en charge l'avancement des créneaux de schedule, les interrogations d'état auprès du pilote et le traitement des temporisations (timeouts) du protocole de transport ([SWS_LinIf_00800], SWS LINInterface p. 119). En parallèle, LinSM_MainFunction gère les compteurs à rebours et temporisateurs de confirmation pour les requêtes asynchrones de canal et de réveil ([SWS_LinSM_00162], [SWS_LinSM_00159]).
Contrairement au niveau des tâches, les routines de pilote du module MCAL Lin s'exécutent dans le contexte d'interruption (ISR) en présence d'un contrôleur géré par interruption ou d'une interface UART (AUTOSAR CP SWS LINDriver p. 53). Les callbacks LinIf_HeaderIndication, LinIf_RxIndication et LinIf_TxConfirmation sont déclenchés de manière synchrone directement depuis ce contexte ISR ([SWS_Lin_00280], [SWS_LinIf_91005], [SWS_LinIf_91006]). Cela nécessite une protection stricte des zones critiques (Exclusive Areas) dans la LIN Interface\u00a0: les appels de commande tels que LinIf_Transmit, LinIf_GotoSleep, LinIf_ScheduleRequest ou LinIf_Wakeup ne doivent modifier les structures internes de canal que sous protection contre les accès parallèles issus de LinIf_MainFunction ou des callbacks ISR (SWS LINInterface p. 119).
En ce qui concerne la réentrance, les fonctions d'API des modules LinIf et LinSM sont principalement conçues comme réentrantes pour différents canaux ou réseaux, mais non réentrantes pour un même canal ([SWS_LinSM_00126], [SWS_LinIf_00201], [SWS_LinIf_00204]). Il en va de même pour les services de pilote dans Lin (par ex. Lin_Wakeup, Lin_GoToSleepInternal), qui doivent être strictement synchronisés par canal physique ([SWS_Lin_00167], [SWS_Lin_00169]). Dans le cas d'un matériel UART simple sans FIFO multi-octets, le pilote LIN met temporairement les octets en mémoire tampon au niveau logiciel ([SWS_Lin_00026]), ce qui, Interprétation : sous une charge de bus élevée, devrait entraîner une augmentation de la charge d'interruptions CPU sur les nœuds esclaves. Question Q-0d07d89d1ade6a01 (ouverte)
Cycles de vie et modes de fonctionnement typiques
Pendant le démarrage du système, le BswM initialise les modules BSW selon une chaîne prédéfinie : les pilotes de base Lin_Init et LinTrcv_Init sont d'abord initialisés, suivis de LinIf_Init, LinTp_Init et enfin LinSM_Init (ModemanagementGuide p. 54). Par défaut, LinIf_Init définit l'ordonnancement de tous les canaux maîtres sur NULL_SCHEDULE ([SWS_LinIf_00233]) et charge, pour les esclaves, les tables NAD et PID préconfigurées ([SWS_LinIf_00767], [SWS_LinIf_00768]). LinSM démarre à l'état LINSM_NO_COM sans émettre de rappels vers ComM ou BswM lors de l'initialisation ([SWS_LinSM_00026], [SWS_LinSM_00166]).
Si le ComM demande l'autorisation de communication via LinSM_RequestComMode(COMM_FULL_COMMUNICATION), LinSM déclenche directement LinIf_Wakeup et démarre une minuterie de surveillance ([SWS_LinSM_00047], [SWS_LinSM_00100]). LinIf transmet l'impulsion physique de réveil sur le bus via Lin_Wakeup ([SWS_LinIf_00205], [SWS_Lin_00043]). Si LinIf signale le succès du processus de réveil via LinSM_WakeupConfirmation(success=TRUE), l'état passe à LINSM_FULL_COM ([SWS_LinSM_00049], [SWS_LinSM_00132]). Cela est signalé à ComM via ComM_BusSM_ModeIndication et à BswM via BswM_LinSM_CurrentState ([SWS_LinSM_00033], [SWS_LinSM_00192]). Pour les esclaves, le bus n'est considéré comme réveillé avec succès que lorsque le maître transmet le premier en-tête LIN et que celui-ci est reçu ([SWS_LinIf_00761], SWS LINStateManager p. 28).
Le passage en mode veille (Go-to-Sleep) diffère considérablement : sur un maître, la requête COMM_NO_COMMUNICATION entraîne l'appel de LinIf_GotoSleep ([SWS_LinSM_00036], [SWS_LinSM_10208]). LinIf charge le pilote, via Lin_GoToSleep, d'émettre une trame standardisée Go-to-Sleep sur le bus ([SWS_Lin_00166], [SWS_Lin_00089]). Sur un esclave en revanche, l'interface reçoit la commande Go-to-Sleep ou détecte un délai d'inactivité du bus (bus-idle timeout) et informe LinSM via LinSM_GotoSleepIndication ([SWS_LinSM_91000]). LinSM appelle ensuite de manière synchrone LinIf_GotoSleep ([SWS_LinSM_00231]). L'interface commute localement le pilote à l'état LIN_CH_SLEEP via Lin_GoToSleepInternal ([SWS_LinIf_00757], [SWS_Lin_00095]) et place l'émetteur-récepteur en état de veille via LinIf_SetTrcvMode(LINTRCV_TRCV_MODE_SLEEP) ([SWS_LinIf_00544], AUTOSAR CP SWS LINInterface p. 137). Après la confirmation LinSM_GotoSleepConfirmation, LinSM passe finalement à LINSM_NO_COM ([SWS_LinSM_00046], [SWS_LinSM_00233]).
Diagramme de séquence\u00a0: interaction des modules BSW lors de l'entrée d'un esclave LIN en état de veille après le signal bus sleep. Sources\u00a0: [SWS_LinSM_91000], [SWS_LinSM_00231], [SWS_LinIf_00757], AUTOSAR SWS LINStateManager p. 48.
Gestion des erreurs, traçage DET et dégradation
Le cluster dispose d'un concept multicouche de détection d'erreurs et de diagnostic. Les erreurs de développement sont enregistrées via le Default Error Tracer (Det) : des paramètres de canal ou de réseau non valides signalent LIN_E_INVALID_CHANNEL ([SWS_Lin_00259]), LINIF_E_NONEXISTENT_CHANNEL ([SWS_LinIf_00539]) ou LINSM_E_NONEXISTENT_NETWORK ([SWS_LinSM_00127]). Les appels de modules non initialisés entraînent LIN_E_UNINIT, LINIF_E_UNINIT ou LINSM_E_UNINIT ([SWS_Lin_00258], [SWS_LinSM_00128]). Les erreurs d'émetteur-récepteur telles que des numéros de réseau non valides signalent LINTRCV_E_INVALID_LIN_NETWORK au DET ([SWS_LinTrcv_00145]).
Les perturbations de communication survenant en cours d'exploitation sont classées comme erreurs d'exécution : l'interface définit LINIF_E_RESPONSE en cas de trames erronées ainsi que LINIF_E_NC_NO_RESPONSE lors de réponses manquantes aux requêtes de configuration de nœud ([SWS_LinIf_00729]). Les erreurs physiques de bus et de protocole (erreurs de trame, erreurs de somme de contrôle, erreurs de surveillance de bit) sont signalées sur l'esclave par le pilote MCAL via LinIf_LinErrorIndication avec le statut Lin_SlaveErrorType ([SWS_LinIf_91007], [SWS_Lin_91140]). Sur les nœuds maîtres, Lin_GetStatus fournit des codes d'erreur détaillés tels que LIN_TX_HEADER_ERROR, LIN_TX_ERROR ou LIN_RX_ERROR à l'interface ([SWS_Lin_00168], [SWS_Lin_00233]).
Un mécanisme central de gestion d'erreurs pour les esclaves LIN est le signal standardisé response_error. L'interface LIN gère ce signal de 1 bit de manière autonome : si une erreur de transmission survient, LinIf arme le bit, qui est transmis au maître dans la trame d'émission inconditionnelle suivante ([SWS_LinIf_00763], SWS LINInterface p. 58). Après une transmission réussie de la trame, LinIf efface automatiquement l'indicateur ([SWS_LinIf_00747]). Dans le canal de diagnostic, LinTp surveille de strictes fenêtres temporelles de protocole : en cas d'absence de N-PDU, les temporisateurs $N_{As}$ et $N_{Cr}$ interrompent la transaction de manière définie et signalent E_NOT_OK au routeur de PDU ([SWS_LinIf_00799], [SWS_LinIf_00804], [SWS_LinIf_00806]). Si la capacité de tampon fait défaut sur le routeur de PDU, l'interface interrompt la réception et bascule la table d'ordonnancement du maître vers le mode application ([SWS_LinIf_00676], [SWS_LinIf_00792]).
Ce guide est basé sur les spécifications AUTOSAR de la version R20-11 des modules Lin, LinIf, LinSM et LinTrcv. Toutes les références normatives proviennent des documents et des entrées d'exigences référencés.
Module im Cluster
LIN Driver (Lin)
Controls hardware LIN controllers on the ECU.
LIN Interface (LinIf)
Abstracts LIN hardware and manages schedule tables and frame transmission.
LIN Network Management (LinNm)
AUTOSAR Classic Communication Services-Modul LIN Network Management (LinNm, Spezifikation: AUTOSAR_SWS_LINNetworkManagement.pdf).
LIN State Manager (LinSM)
Manages state transitions of LIN networks.
LIN Transceiver Driver (LinTrcv)
Controls physical bus transceiver states and wakeup on LIN lines.
gemini-3.8-flash-low· 2026-10-13 · Original allemand