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.
Inicialización y estado
Lin_GetStatusLin_GetVersionInfoLin_InitLinIf_GetVersionInfoLinIf_InitLinSM_GetVersionInfoLinSM_InitLinTp_GetVersionInfoLinTp_InitLinTrcv_GetVersionInfoLinTrcv_InitServicios · Get…
Servicios · Set…
Servicios · Wakeup…
Servicios · Check…
Servicios · Goto…
Servicios · Schedule…
Servicios · Otros
Lin_GoToSleepLin_GoToSleepInternalLin_SendFrameLinIf_EnableBusMirroringLinIf_HeaderIndicationLinIf_LinErrorIndicationLinIf_TransmitLinSM_RequestComModeLinTp_ChangeParameterLinTp_ShutdownLinTp_TransmitCallbacks
LinIf_RxIndicationLinIf_TxConfirmationCallouts e interfaces esperadas
<User_ResponseErrorSignalChanged><User_RxIndication><User_SaveConfigurationRequest><User_TriggerTransmit><User_TxConfirmation>Cíclico
LinSM_MainFunctionTipos
Lin_ConfigTypeLin_FrameCsModelTypeLin_FrameDlTypeLin_FramePidTypeLin_FrameResponseTypeLin_PduTypeLin_SlaveErrorTypeLin_StatusTypeLinIf_ConfigTypeLinIf_SchHandleTypeLinSM_ConfigTypeLinSM_ModeTypeLinTp_ConfigTypeLinTp_ModeLinTrcv_ConfigTypeLinTrcv_TrcvModeTypeLinTrcv_TrcvWakeupModeTypeLinTrcv_TrcvWakeupReasonTypeFunciones
<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_SetWakeupModeTipos
Lin_ConfigTypeLin_FrameCsModelTypeLin_FrameDlTypeLin_FramePidTypeLin_FrameResponseTypeLin_PduTypeLin_SlaveErrorTypeLin_StatusTypeLinIf_ConfigTypeLinIf_SchHandleTypeLinSM_ConfigTypeLinSM_ModeTypeLinTp_ConfigTypeLinTp_ModeLinTrcv_ConfigTypeLinTrcv_TrcvModeTypeLinTrcv_TrcvWakeupModeTypeLinTrcv_TrcvWakeupReasonTypeMapa de temas
Lin
17LinIf
35LinSM
12No hay datos de elementos para esta versión
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.
Guía del clústerGENERADO POR IA
Permite la interconexión rentable de sensores y actuadores a través de Local Interconnect Network en el vehículo.
Permite la interconexión rentable de sensores y actuadores a través de Local Interconnect Network en el vehículo.
El clúster de módulos LIN Communication implementa la conexión estandarizada de subsistemas de bus LIN a través de los módulos LinSM, LinIf, LinTrcv y Lin (SWS COMManager p. 19). Controla la transmisión de tramas basada en schedule en los masters, así como la evaluación reactiva de cabeceras y la transmisión de datos en los slaves ([SWS_LinIf_91004], [SWS_Lin_00168]). Al mismo tiempo, el clúster coordina la transición ordenada entre comunicación completa y modo de suspensión, así como el tratamiento autónomo de errores mediante la señal response_error ([SWS_LinIf_00763]).
El clúster de módulos LIN Communication proporciona la implementación completa de AUTOSAR del protocolo LIN e incluye el gestor de estados LinSM, la interfaz LinIf (incluido el protocolo de transporte LinTp), el controlador de transceptor LinTrcv y el controlador MCAL Lin (SWS COMManager p. 19). Conecta subredes, sensores y actuadores a la matriz de comunicación de AUTOSAR y distingue estrictamente entre nodos master con procesamiento autónomo de schedule y nodos slave con respuesta puramente reactiva ([SWS_LinIf_00197], [SWS_Lin_00272]).
Diagrama de arquitectura: arquitectura en capas y relaciones de interfaz del clúster LIN entre servicios de comunicación, capa de abstracción y MCAL. Fuentes: SWS COMManager p. 19, AUTOSAR SWS LINInterface p. 133.
La transmisión de datos se lleva a cabo en ECUs master mediante la activación periódica del controlador a través de Lin_SendFrame y la posterior consulta de estado vía Lin_GetStatus ([SWS_Lin_00168]). En el slave, por el contrario, la detección de una cabecera en el controlador conduce a la callback síncrona LinIf_HeaderIndication ([SWS_LinIf_91004]). La interfaz decide en función del PID sobre la recepción, respuesta o ignorado, y confirma la finalización a través de LinIf_RxIndication o LinIf_TxConfirmation ([SWS_LinIf_91005], [SWS_LinIf_91006]). El LinTp integrado gestiona los mensajes de diagnóstico mediante conmutaciones automatizadas de la tabla de schedule ([SWS_LinIf_00641]).
En el ciclo de funcionamiento, LinSM coordina las transiciones de estado entre LINSM_NO_COM y LINSM_FULL_COM ([SWS_LinSM_00026], [SWS_LinSM_00032]). El despertar se realiza mediante un pulso de bus a través de Lin_Wakeup ([SWS_Lin_00169]). La transición al modo de suspensión se produce en el master mediante el envío activo de una trama de suspensión, y en el slave tras la recepción del comando de suspensión o en caso de bus inactivo vía LinIf_GotoSleep, Lin_GoToSleepInternal y control de suspensión del transceptor ([SWS_LinSM_00231], [SWS_LinIf_00757]).
Diagrama de secuencia: interacción de los módulos BSW durante la entrada de un slave LIN en el estado de suspensión tras la señal de reposo del bus. Fuentes: [SWS_LinSM_91000], [SWS_LinSM_00231], [SWS_LinIf_00757], AUTOSAR SWS LINStateManager p. 48.
Los errores de comunicación se registran en los slaves a través de LinIf_LinErrorIndication y se notifican de forma autónoma al master en la señal response_error ([SWS_LinIf_91007], [SWS_LinIf_00763]). Las áreas de sincronización entre canales y las separaciones estrictas entre tareas cíclicas (LinIf_MainFunction) y las ISR del controlador aseguran la estabilidad del sistema ([SWS_LinIf_00384]).
Arquitectura del sistema & rol del clúster de módulos
El clúster de módulos LIN Communication proporciona en la pila de Basic Software de AUTOSAR Classic la comunicación estandarizada a través de Local Interconnect Network (LIN) según la norma ISO 17987. Actúa principalmente como un subsistema de bus rentable para conectar sensores y actuadores en la red del vehículo (AUTOSAR FO Features p. 58). El clúster abarca varias capas de la arquitectura AUTOSAR: el LIN State Manager (LinSM) opera en el nivel de Communication Services, la LIN Interface (LinIf), incluido el protocolo de transporte integrado (LinTp), constituye la Communication Abstraction, el LIN Transceiver Driver (LinTrcv) forma parte de la ECU Abstraction y el LIN Driver (Lin) reside como módulo próximo al hardware en la capa de abstracción de microcontrolador (MCAL) (SWS COMManager p. 19).
Desde el punto de vista arquitectónico, el clúster diferencia estrictamente entre nodos master y slave. Un master LIN controla el tráfico del bus de forma autosuficiente a través de tablas de schedule y genera todas las cabeceras, mientras que los slaves LIN responden de forma puramente reactiva a las cabeceras recibidas o evalúan señales ([SWS_LinIf_00197], [SWS_Lin_00272]). Para tareas de diagnóstico y transporte según ISO 14229, la LIN Interface encapsula la funcionalidad TP, que gestiona mensajes de diagnóstico segmentados (Master Request Frame MRF y Slave Response Frame SRF) a través de PduR y DCM ([SWS_LinIf_00351], [SWS_LinIf_00629]). Hacia el exterior, el clúster interactúa intensamente con el Communication Manager (ComM), el Basic Software Mode Manager (BswM), el PDU Router (PduR) y el ECU State Manager (EcuM) (SWS COMManager p. 19).
Diagrama de arquitectura: arquitectura en capas y relaciones de interfaz del clúster LIN entre servicios de comunicación, capa de abstracción y MCAL. Fuentes: SWS COMManager p. 19, AUTOSAR SWS LINInterface p. 133.
Interacción y rutas de interacción entre los módulos
Las rutas de interacción en el clúster difieren fundamentalmente según el rol del nodo. En el master LIN, la LIN Interface inicia el procesamiento de la tabla de schedule activa a través de su tarea periódica. Para las tramas de transmisión pendientes, LinIf obtiene los datos útiles mediante mecanismos de Trigger Transmit de la capa superior y transfiere la estructura Lin_PduType al controlador LIN vía Lin_SendFrame ([SWS_Lin_00232], SWS LINInterface p. 37). El controlador transmite la cabecera y los datos de forma no bloqueante ([SWS_Lin_00027]). Una vez transcurrido el tiempo de ejecución máximo de la trama, LinIf determina el resultado de la transmisión a través de Lin_GetStatus ([SWS_Lin_00168], SWS LINInterface p. 35). En los slots de recepción, LinIf recoge los datos almacenados por el controlador en el búfer y los reenvía a las capas superiores ([SWS_Lin_00233]).
En un slave LIN, la ruta de datos transcurre guiada por eventos: si el controlador MCAL Lin detecta en el hardware una cabecera válida de sincronización, ruptura e identificador protegido (Break, Synch y PID), invoca de forma síncrona la callback LinIf_HeaderIndication ([SWS_Lin_00280], [SWS_LinIf_91004]). La interfaz verifica el identificador protegido (PID) mediante la tabla interna de PID ([SWS_LinIf_00816], [SWS_LinIf_00823]). Si se trata de una trama de transmisión, LinIf recoge los datos útiles, configura el tipo de respuesta a LIN_FRAMERESPONSE_TX y pone los datos a disposición del controlador en el búfer ([SWS_Lin_00230]). Si la trama está configurada como de recepción, el controlador notifica el éxito vía LinIf_RxIndication ([SWS_LinIf_91005]) tras la recepción completa de los bytes, tras lo cual LinIf transfiere los datos al PDU Router. Las confirmaciones de respuestas de slave enviadas se realizan mediante LinIf_TxConfirmation ([SWS_LinIf_91006]).
A través de la interfaz LIN se encapsula además el control del transceptor de forma transparente: la interfaz reenvía solicitudes de modo como LinIf_SetTrcvMode de forma síncrona a LinTrcv_SetOpMode ([SWS_LinIf_00544], [SWS_LinTrcv_00002]). En transacciones de protocolo de transporte, LinTp controla a través de BswM_LinTp_RequestMode la conmutación selectiva de la tabla de schedule del master entre el modo de aplicación (LINTP_APPLICATIVE_SCHEDULE), solicitud de diagnóstico (LINTP_DIAG_REQUEST) y respuesta de diagnóstico (LINTP_DIAG_RESPONSE) ([SWS_LinIf_00641], [SWS_LinIf_00642], [SWS_LinIf_00643]).
Diagrama de secuencia: flujo dinámico de control y datos en la indicación de cabecera, disparo de transmisión y confirmación de recepción en un slave LIN. Fuentes: [SWS_Lin_00280], [SWS_LinIf_91004], [SWS_LinIf_91005], AUTOSAR SWS LINInterface p. 133.
Sincronización, reentrancia y contextos de tareas
La ejecución dentro del clúster de módulos se divide en contextos de tareas cíclicas y niveles de interrupción cercanos al hardware. El núcleo del control de ejecución cíclica en la LIN Interface es la función planificada LinIf_MainFunction_<LinIfChannel.ShortName>, que se instancia obligatoriamente por separado para cada canal LIN configurado ([SWS_LinIf_00384], [SWS_LinIf_00725]). Esta asume el avance de los slots de schedule, las consultas de estado en el controlador y la gestión de tiempos de espera del protocolo de transporte ([SWS_LinIf_00800], SWS LINInterface p. 119). Paralelamente a esto, LinSM_MainFunction gestiona los temporizadores de cuenta atrás y de confirmación para solicitudes asíncronas de canal y de wakeup ([SWS_LinSM_00162], [SWS_LinSM_00159]).
A diferencia del nivel de tareas, las rutinas del controlador del módulo MCAL Lin se ejecutan en el contexto de interrupción (ISR) si existe un controlador gestionado por interrupciones o una interfaz UART (AUTOSAR CP SWS LINDriver p. 53). Las callbacks LinIf_HeaderIndication, LinIf_RxIndication y LinIf_TxConfirmation se disparan de forma síncrona directamente desde este contexto de ISR ([SWS_Lin_00280], [SWS_LinIf_91005], [SWS_LinIf_91006]). Esto requiere una protección estricta de las áreas críticas (Exclusive Areas) en la LIN Interface: las llamadas de control como LinIf_Transmit, LinIf_GotoSleep, LinIf_ScheduleRequest o LinIf_Wakeup solo deben modificar estructuras de canales internas estando protegidas frente a accesos paralelos desde la LinIf_MainFunction o callbacks de ISR (SWS LINInterface p. 119).
En cuanto a la reentrancia, las funciones de API de los módulos LinIf y LinSM están diseñadas predominantemente como reentrantes para diferentes canales o redes, pero no reentrantes para el mismo canal ([SWS_LinSM_00126], [SWS_LinIf_00201], [SWS_LinIf_00204]). Del mismo modo se comportan los servicios del controlador en Lin (por ejemplo, Lin_Wakeup, Lin_GoToSleepInternal), que deben sincronizarse estrictamente por canal físico ([SWS_Lin_00167], [SWS_Lin_00169]). En hardware UART simple sin FIFO multibyte, el controlador LIN almacena en búfer los bytes temporalmente por software ([SWS_Lin_00026]), lo que, según interpretación: probablemente provoque una mayor carga de interrupciones de CPU en los nodos slave bajo una alta carga de bus. Pregunta Q-0d07d89d1ade6a01 (abierta)
Ciclos de vida típicos y modos de funcionamiento
Durante el inicio del sistema, el BswM inicializa los módulos BSW en una cadena predeterminada: primero se inicializan los controladores básicos Lin_Init y LinTrcv_Init, seguidos de LinIf_Init, LinTp_Init y, por último, LinSM_Init (ModemanagementGuide p. 54). LinIf_Init establece el schedule de todos los canales master por defecto en NULL_SCHEDULE ([SWS_LinIf_00233]) y carga en los slaves las tablas de NAD y PID preconfiguradas ([SWS_LinIf_00767], [SWS_LinIf_00768]). LinSM arranca en el estado LINSM_NO_COM, sin emitir callbacks a ComM o BswM durante la inicialización ([SWS_LinSM_00026], [SWS_LinSM_00166]).
Si el ComM solicita la habilitación de la comunicación a través de LinSM_RequestComMode(COMM_FULL_COMMUNICATION), LinSM activa directamente LinIf_Wakeup e inicia un temporizador de supervisión ([SWS_LinSM_00047], [SWS_LinSM_00100]). LinIf envía el pulso físico de wakeup al bus a través de Lin_Wakeup ([SWS_LinIf_00205], [SWS_Lin_00043]). Si LinIf notifica el proceso de despertar exitoso vía LinSM_WakeupConfirmation(success=TRUE), el estado cambia a LINSM_FULL_COM ([SWS_LinSM_00049], [SWS_LinSM_00132]). Esto se señaliza a ComM vía ComM_BusSM_ModeIndication y a BswM vía BswM_LinSM_CurrentState ([SWS_LinSM_00033], [SWS_LinSM_00192]). En los slaves, el bus solo se considera despierto con éxito cuando el master envía la primera cabecera LIN y esta es recibida ([SWS_LinIf_00761], SWS LINStateManager p. 28).
El apagado al modo de suspensión (Go-to-Sleep) difiere drásticamente: en un master, la solicitud COMM_NO_COMMUNICATION da lugar a la llamada de LinIf_GotoSleep ([SWS_LinSM_00036], [SWS_LinSM_10208]). LinIf encarga al controlador a través de Lin_GoToSleep enviar una trama Go-to-Sleep estandarizada en el bus ([SWS_Lin_00166], [SWS_Lin_00089]). En un slave, en cambio, la interfaz recibe el comando Go-to-Sleep o detecta un tiempo de espera de bus inactivo e informa a LinSM vía LinSM_GotoSleepIndication ([SWS_LinSM_91000]). LinSM llama entonces de forma síncrona a LinIf_GotoSleep ([SWS_LinSM_00231]). La interfaz conmuta el controlador localmente al estado LIN_CH_SLEEP a través de Lin_GoToSleepInternal ([SWS_LinIf_00757], [SWS_Lin_00095]) y pone el transceptor en estado de suspensión vía LinIf_SetTrcvMode(LINTRCV_TRCV_MODE_SLEEP) ([SWS_LinIf_00544], AUTOSAR CP SWS LINInterface p. 137). Tras la confirmación LinSM_GotoSleepConfirmation, LinSM cambia finalmente a LINSM_NO_COM ([SWS_LinSM_00046], [SWS_LinSM_00233]).
Diagrama de secuencia: interacción de los módulos BSW durante la entrada de un slave LIN en el estado de suspensión tras la señal de reposo del bus. Fuentes: [SWS_LinSM_91000], [SWS_LinSM_00231], [SWS_LinIf_00757], AUTOSAR SWS LINStateManager p. 48.
Tratamiento de errores, rastreo en DET y degradación
El clúster cuenta con un concepto de detección de errores y diagnóstico de varios niveles. Los errores de desarrollo se registran a través del Default Error Tracer (Det): los parámetros de canal o de red no válidos notifican LIN_E_INVALID_CHANNEL ([SWS_Lin_00259]), LINIF_E_NONEXISTENT_CHANNEL ([SWS_LinIf_00539]) o LINSM_E_NONEXISTENT_NETWORK ([SWS_LinSM_00127]). Las llamadas a módulos no inicializados conllevan LIN_E_UNINIT, LINIF_E_UNINIT o LINSM_E_UNINIT ([SWS_Lin_00258], [SWS_LinSM_00128]). Los errores de transceptor, como números de red no válidos, notifican LINTRCV_E_INVALID_LIN_NETWORK a DET ([SWS_LinTrcv_00145]).
Las perturbaciones de comunicación que se producen durante el funcionamiento continuo se clasifican como errores de tiempo de ejecución: la interfaz define LINIF_E_RESPONSE en caso de tramas erróneas, así como LINIF_E_NC_NO_RESPONSE ante respuestas ausentes a solicitudes de configuración de nodos ([SWS_LinIf_00729]). Los errores físicos de bus y de protocolo (errores de trama, errores de suma de comprobación, errores de monitorización de bits) los notifica el controlador MCAL en el slave a través de LinIf_LinErrorIndication con el estado Lin_SlaveErrorType ([SWS_LinIf_91007], [SWS_Lin_91140]). En los nodos master, Lin_GetStatus proporciona códigos de error detallados como LIN_TX_HEADER_ERROR, LIN_TX_ERROR o LIN_RX_ERROR a la interfaz ([SWS_Lin_00168], [SWS_Lin_00233]).
Un mecanismo de fallo central para los LIN-Slaves es la señal estandarizada response_error. La interfaz LIN gestiona esta señal de 1 bit de forma autónoma: si se produce un error de transmisión, LinIf activa el bit, que se transmite al máster en la siguiente trama de transmisión incondicionada ([SWS_LinIf_00763], SWS LINInterface p. 58). Tras una transmisión correcta de la trama, LinIf borra el flag de forma automática ([SWS_LinIf_00747]). En el canal de diagnóstico, LinTp supervisa estrictas ventanas de tiempo de protocolo: en caso de ausencia de N-PDUs, los temporizadores $N_{As}$ y $N_{Cr}$ cancelan la transacción de forma definida y notifican E_NOT_OK al PDU Router ([SWS_LinIf_00799], [SWS_LinIf_00804], [SWS_LinIf_00806]). Si falta capacidad de búfer en el PDU Router, la interfaz cancela la recepción y conmuta la tabla de planificación del máster de nuevo al modo de aplicación ([SWS_LinIf_00676], [SWS_LinIf_00792]).
Esta guía se basa en las especificaciones AUTOSAR para la versión R20-11 de los módulos Lin, LinIf, LinSM y LinTrcv. Todas las referencias normativas proceden de los documentos y entradas de requisitos referenciados.
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 en alemán