Proporciona tipos básicos nombrados uniformemente y símbolos identificadores para el ancho de registro y la endianness del procesador de destino.
GENERADO POR IAno revisadoModelo: claude-opus-5-5 · Esfuerzo: high · Temperatura: no controlable · Prompt: 7e73f6d7bb31ProcedenciaPreguntas abiertas (3)
Ancla causal: R20-11Válido desde R20-11Sintetizado para esta versión de especificación.
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Proporciona tipos básicos nombrados uniformemente y símbolos identificadores para el ancho de registro y la endianness del procesador de destino.
Platform_Types.h proporciona los tipos básicos dependientes de la plataforma de la Classic Platform: tipos enteros de ancho fijo desde uint8 hasta sint64, tipos *_least optimizados, float32/float64, boolean con TRUE/FALSE, así como los punteros de búfer VoidPtr y ConstVoidPtr. Además, CPU_TYPE, CPU_BIT_ORDER y CPU_BYTE_ORDER identifican el ancho de registro y la endianness del destino [SWS_Platform_00046]. boolean solo debe usarse con TRUE y FALSE y sin operadores aritméticos o de bits [SWS_Platform_00034]. La cabecera no debe ampliarse; de lo contrario, se pierde la conformidad con AUTOSAR.
Platform_Types.h es la base de tipos dependiente de la plataforma de la Classic Platform. La cabecera encapsula los anchos de palabra y la endianness del destino tras nombres uniformes y no debe ampliarse, ya que cualquier ampliación anula la conformidad con AUTOSAR [SWS_Platform_00002]. En la vista del modelo, los tipos se ubican bajo una ruta fija como /AUTOSAR_Platform/ImplementationDatatypes/uint8TPS StandardizationTemplate p. 77.
La cabecera proporciona los siguientes grupos de tipos:
Diagrama de actividades: La elección del tipo de plataforma adecuado sigue las preguntas sobre punteros de búfer, valor booleano, número de coma flotante, ancho mínimo o exacto. Fuentes: [SWS_Platform_91001], [SWS_Platform_00026], SWS PlatformTypes p. 17
boolean se implementa en R20-11 como el tipo entero sin signo más corto admitido de forma nativa, por lo general de 8 bits [SWS_Platform_00027]. Versiones posteriores difieren de ello y utilizan _BoolSWS PlatformTypes p. 18. El tipo debe admitir punteros [SWS_Platform_00060] y solo debe usarse con TRUE y FALSE. Los operadores aritméticos y de bits están prohibidos [SWS_Platform_00034], y las redefiniciones de los símbolos deben evitarse mediante comprobación condicional [SWS_Platform_00054].
Por cada plataforma deben definirse además tres símbolos: CPU_TYPE para el ancho de registro [SWS_Platform_00045], CPU_BIT_ORDER con MSB_FIRST o LSB_FIRST[SWS_Platform_00048][SWS_Platform_00049] y CPU_BYTE_ORDER con HIGH_BYTE_FIRST o LOW_BYTE_FIRST[SWS_Platform_00050][SWS_Platform_00051]. Los nombres de los bits y el peso no deben mezclarse, ya que el MSB se sitúa siempre a la izquierda en el acumulador SWS PlatformTypes p. 15. Interpretación: el módulo no conoce errores de tiempo de ejecución; las asignaciones incorrectas solo se manifiestan durante la integración o la comprobación de conformidad. Pregunta (abierta)
Rol de Platform_Types.h: la base de tipos dependiente de la plataforma
El módulo no es un componente ejecutable, sino una cabecera. Todos los tipos y símbolos especificados están «Available via Platform_Types.h», por ejemplo uint8[SWS_Platform_00013] o CPU_TYPE[SWS_Platform_00064]. La cabecera oculta las propiedades del microcontrolador de destino y del compilador tras nombres uniformes: anchos de palabra, orden de bits y orden de bytes. Con ello forma parte de la abstracción de microcontrolador exigida en SRS_BSW_00161 con interfaz estandarizada hacia las capas superiores SRS BSWGeneral p. 88. A este mismo requisito upstream hacen referencia también las reglas relativas al orden de bytes SWS PlatformTypes p. 16.
El límite del sistema está trazado de forma estricta. La cabecera no debe ampliarse, ya que cualquier ampliación anula la conformidad con AUTOSAR [SWS_Platform_00002]. En cambio, los tipos de retorno para el éxito o el fracaso de una llamada a la API residen en Std_Types.hSRS BSWGeneral p. 68. En la vista del modelo, los tipos de plataforma se definen como Blueprints, por ejemplo bajo /AUTOSAR/Platform/ImplementationDatatypes_Blueprint/uint8. Se implementan bajo /AUTOSAR_Platform/ImplementationDatatypes/uint8, de modo que los proveedores de componentes puedan acceder a ellos a través de una ruta predecible TPS StandardizationTemplate p. 77.
Tipos enteros y de coma flotante con ancho garantizado
El núcleo del módulo son tipos sin signo y con signo de ancho fijo de 8 a 64 bits, así como dos tipos de coma flotante. De forma normativa, los requisitos establecen el ancho y el rango de valores, por ejemplo «32 bit unsigned» para uint32[SWS_Platform_00015]. Los typedefs de C en el catálogo de API, por ejemplo typedef unsigned long uint32;, deberían entenderse como una correspondencia típica que puede variar en función del compilador (interpretación). Pregunta Q-d0ca377fc1abd98a (abierta)
Para los tipos con signo, AUTOSAR solo admite en el compilador y en el destino aritmética de complemento a dos. De ello resultan los rangos de valores asimétricos de la tabla [SWS_Platform_00061]. Otras especificaciones asumen estos tipos de manera coherente en todo momento. La biblioteca CRC define por ejemplo uint8 Crc_CalculateCRC8(const uint8*, uint32, uint8, boolean)SWS CRCLibrary p. 41. COM debe admitir la conversión de endianness para uint16 a float64RS COM p. 14. Ambos pasajes proceden de releases posteriores y solo ilustran el uso.
Tipos optimizados *_least para contadores y estados
Además de los tipos con ancho exacto, el módulo define seis tipos optimizados. Solo garantizan un ancho mínimo y se derivan de uint y sint respectivamente:
Por lo tanto, la implementación puede elegir una representación más amplia. Las firmas del catálogo mapean los seis tipos a unsigned int o bien a signed int[SWS_Platform_00020].
Como ejemplos de uso, la especificación menciona contadores de bucle (como máximo 124 iteraciones ⇒ uint8_least) y argumentos de switch (17 estados ⇒ uint8_least). Para más detalles, remite al capítulo «AUTOSAR Integer Data Types» de los requisitos generales de BSW SWS PlatformTypes p. 17.
Uso conforme a las reglas de boolean, TRUE y FALSE
boolean tiene el rango de valores FALSE = 0 y TRUE = 1 y solo debe utilizarse junto con estas definiciones [SWS_Platform_00026]. Para R20-11 se aplica: boolean se implementa como un tipo entero sin signo con la longitud de bits más corta admitida de forma nativa por la plataforma, por lo general 8 bits [SWS_Platform_00027]. Un pasaje del documento de R24-11/R25-11 formula el mismo identificador de forma diferente: allí boolean se implementa mediante el tipo C99 _Bool, y AUTOSAR ya no define el tamaño exacto SWS PlatformTypes p. 18. Para R20-11, esta versión posterior no es normativa.
boolean debe asignarse además a un tipo al que puedan apuntar punteros, de modo que los parámetros puedan pasarse por API. Los tipos de bits eficientes de algunos tipos de hardware no admiten punteros y, por tanto, quedan descartados [SWS_Platform_00060]. Para los símbolos TRUE y FALSE se aplican tres reglas:
En las asignaciones a variables boolean están prohibidos los operadores aritméticos y bit a bit: +, ++, -, --, *, /, %, <<, >>, ~ y &. Solo se permite la asignación de TRUE o FALSE, así como de resultados de relaciones, operaciones lógicas y comprobaciones de (des)igualdad. Las comparaciones solo se realizan con == o != frente a TRUE/FALSE o mediante if (var) o bien if (!var)[SWS_Platform_00034]. Los módulos consumidores siguen este patrón. Así, Bfx_GetBit devuelve el resultado de una prueba de bits expresamente como TRUE o FALSESWS BFXLibrary p. 19.
Diagrama de actividad: Para variables boolean solo se permiten las formas de asignación y comparación enumeradas, no los operadores aritméticos ni de bits. Fuentes: [SWS_Platform_00034], [SWS_Platform_00026]
Punteros a búfer sin tipo: VoidPtr y ConstVoidPtr
Ambos tipos de puntero difieren en la dirección del flujo de datos:
VoidPtr es un void* para búferes que contienen datos devueltos al llamador [SWS_Platform_91001].
ConstVoidPtr es un const void* para búferes que se pasan a la entidad llamada [SWS_Platform_91002].
El Key Manager muestra cómo se refleja esto en las interfaces. KeyMServiceCertificateByCertId pasa RequestData como ConstVoidPtr junto con una longitud de tipo uint32. La respuesta la recibe ResponseData de tipo VoidPtr; en este caso, ResponseDataLength (INOUT) indica la longitud de búfer disponible SWS KeyManager p. 111. Otros ejemplos:
KeyM_CertDataType hace referencia a datos de certificado en el área de datos local del llamador a través de un VoidPtrSWS KeyManager p. 97.
En los tres ejemplos, la longitud se transmite como un parámetro uint32 propio o como un elemento de estructura propio, ya que un puntero sin tipo no lleva información de longitud.
Con orden de bits big-endian se aplica CPU_BIT_ORDER = MSB_FIRST; con little-endian, LSB_FIRST[SWS_Platform_00048][SWS_Platform_00049]. Es fundamental separar estrictamente los nombres de los bits de su significancia. En el acumulador, el MSB siempre se encuentra en el extremo izquierdo, independientemente del tipo de CPU. En arquitecturas Motorola (Big Endian Bit Order), Bit0 designa el bit más significativo; en todas las demás, el menos significativo SWS PlatformTypes p. 15SWS PlatformTypes Fig. 7.1 p. 14.
Con orden de bytes big-endian se aplica CPU_BYTE_ORDER = HIGH_BYTE_FIRST: el byte más significativo de un valor de 16 bits se ubica en la dirección n, el menos significativo en n+1. Con little-endian se aplica LOW_BYTE_FIRST con la disposición inversa [SWS_Platform_00050][SWS_Platform_00051]. Las designaciones Byte0 y Byte1 solo sirven para ilustrar y pueden diferir en la documentación de referencia de un fabricante SWS PlatformTypes p. 16.
Otras especificaciones justifican por qué son necesarios estos datos. La representación en memoria de los datos depende en gran medida de la arquitectura del procesador y de la configuración del compilador. Por ello, SOME/IP exige un algoritmo de serialización que realice la conversión a una representación de red común RS SOMEIPProtocol p. 21. Presumiblemente, tales conversiones en las implementaciones se basan en CPU_BYTE_ORDER; no obstante, el payload no lo demuestra de forma expresa. Pregunta Q-87e212e9eb2a2047 (abierta)
Comportamiento en caso de error
Interpretación: Dado que Platform_Types.h solo proporciona tipos y símbolos, el módulo no conoce errores de tiempo de ejecución ni códigos de error. Pregunta Q-e504d08b84d7ff70 (abierta) Los patrones de error se manifiestan durante la compilación, la integración o la verificación de conformidad. Los requisitos nombran las causas típicas [SWS_Platform_00002]:
No se permiten extensiones de la cabecera; cualquier extensión anula la conformidad [SWS_Platform_00002].
Las definiciones duplicadas de TRUE/FALSE cuando ya existe soporte del compilador deben evitarse mediante una comprobación condicional [SWS_Platform_00054][SWS_Platform_00056].
Los símbolos de orden con valores incorrectos infringen desde [SWS_Platform_00048] hasta [SWS_Platform_00051]. Mezclar los nombres de bits de la documentación del fabricante con la significancia resulta especialmente propenso a errores SWS PlatformTypes p. 15.
Un boolean que no admita punteros infringe [SWS_Platform_00060], ya que los parámetros no podrían pasarse por API.
Las operaciones aritméticas o de bits sobre boolean son inadmisibles, al igual que cualquier forma de comparación distinta de las enumeradas [SWS_Platform_00034].
El código que asuma complemento a uno o rangos de valores simétricos no está respaldado, ya que solo se admite el complemento a dos [SWS_Platform_00061].
Al cambiar de versión debe tenerse en cuenta la especificación para boolean: R20-11 [SWS_Platform_00027] y las versiones posteriores SWS PlatformTypes p. 18 difieren. Por lo tanto, el código que presuponga un tamaño fijo de boolean debe verificarse antes de realizar el cambio.
Guía generada por IA sobre la base de los requisitos de R20-11 y pasajes de documentos asociados, que en parte proceden de versiones posteriores. La especificación es el documento vinculante.
Platform Types (Platform_Types)
Platform-specific fundamental data types (integers, booleans, floating-point numbers) mapped to CPU architecture primitives.
Typen — Übersicht
typedef booleanThis standard AUTOSAR type shall only be used together with the definitions TRUE and FALSE.
typedef uint8This standard AUTOSAR type shall be of 8 bit unsigned.
typedef uint16This standard AUTOSAR type shall be of 16 bit unsigned.
typedef uint32This standard AUTOSAR type shall be 32 bit unsigned.
typedef uint64This standard AUTOSAR type shall be 64 bit unsigned.
typedef sint8This standard AUTOSAR type shall be of 8 bit signed.
typedef sint16This standard AUTOSAR type shall be of 16 bit signed.
typedef sint32This standard AUTOSAR type shall be 32 bit signed.
typedef sint64This standard AUTOSAR type shall be 64 bit signed.
typedef uint8_leastThis optimized AUTOSAR type shall be at least 8 bit unsigned.
typedef uint16_leastThis optimized AUTOSAR type shall be at least 16 bit unsigned.
typedef uint32_leastThis optimized AUTOSAR type shall be at least 32 bit unsigned.
typedef sint8_leastThis optimized AUTOSAR type shall be at least 8 bit signed.
typedef sint16_leastThis optimized AUTOSAR type shall be at least 16 bit signed.
typedef sint32_leastThis optimized AUTOSAR type shall be at least 32 bit signed.
typedef float32This standard AUTOSAR type shall follow the 32-bit binary interchange format according to IEEE 754-2008 with encoding...
typedef float64This standard AUTOSAR type shall follow the 64-bit binary interchange format according to IEEE 754-2008 with encoding...
typedef VoidPtrThis standard AUTOSAR type shall be a void pointer Note: This type shall be used for buffers that contain data returned to the...
typedef ConstVoidPtrThis standard AUTOSAR type shall be a void pointer to const.
CPU_TYPEThis symbol shall be defined as #define having one of the values CPU_TYPE_8, CPU_TYPE_16, CPU_TYPE_32 or CPU_TYPE_64 according...
CPU_BIT_ORDERThis symbol shall be defined as #define having one of the values MSB_FIRST or LSB_FIRST according to the platform.
CPU_BYTE_ORDERThis symbol shall be defined as #define having one of the values HIGH_BYTE_FIRST or LOW_ BYTE_FIRST according to the platform.
TRUE_FALSEThe symbols TRUE and FALSE shall be defined as follows: #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif
This standard AUTOSAR type shall follow the 32-bit binary interchange format according to IEEE 754-2008 with encoding parameters specified in chapter 3.6, table 3.5, column "binary32".
This standard AUTOSAR type shall follow the 64-bit binary interchange format according to IEEE 754-2008 with encoding parameters specified in chapter 3.6, table 3.5, column "binary64".
This standard AUTOSAR type shall follow the 32-bit binary interchange format according to IEEE 754-2008 with encoding parameters specified in chapter 3.6, table 3.5, column "binary32".
This standard AUTOSAR type shall follow the 64-bit binary interchange format according to IEEE 754-2008 with encoding parameters specified in chapter 3.6, table 3.5, column "binary64".
gemini-3.8-flash-low· 2026-10-13 · Original en alemán