Предоставляет единообразно названные базовые типы и символы-идентификаторы для разрядности регистров и порядка байтов целевого процессора.
СОЗДАНО ИИне провереноМодель: claude-opus-5-5 · Усилие: high · Температура: не регулируется · Промпт: 7e73f6d7bb31ПроисхождениеОткрытые вопросы (3)
Причинный якорь: R20-11Действует с R20-11Заново синтезировано для этой версии спецификации.
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Предоставляет единообразно названные базовые типы и символы-идентификаторы для разрядности регистров и порядка байтов целевого процессора.
Platform_Types.h предоставляет платформозависимые базовые типы Classic Platform: целочисленные типы фиксированной ширины от uint8 до sint64, оптимизированные типы *_least, float32/float64, boolean с TRUE/FALSE, а также указатели буфера VoidPtr и ConstVoidPtr. Кроме того, CPU_TYPE, CPU_BIT_ORDER и CPU_BYTE_ORDER определяют разрядность регистров и порядок байтов целевой платформы [SWS_Platform_00046]. boolean разрешается использовать только с TRUE и FALSE и без арифметических или побитовых операторов [SWS_Platform_00034]. Заголовочный файл нельзя расширять, иначе будет утрачено соответствие AUTOSAR.
Platform_Types.h — это платформозависимый базис типов Classic Platform. Заголовочный файл инкапсулирует ширину машинных слов и порядок байтов целевой платформы под унифицированными именами и не подлежит расширению, поскольку любое расширение аннулирует соответствие AUTOSAR [SWS_Platform_00002]. В представлении модели типы находятся по фиксированному пути, такому как /AUTOSAR_Platform/ImplementationDatatypes/uint8TPS StandardizationTemplate с. 77.
Заголовочный файл предоставляет следующие группы типов:
Указатели буфера VoidPtr для данных, передаваемых вызывающей стороне, и ConstVoidPtr для данных, передаваемых вызываемому компоненту [SWS_Platform_91001][SWS_Platform_91002].
Диаграмма деятельности: выбор подходящего платформенного типа следует вопросам: указатель буфера, логическое значение, число с плавающей точкой, минимальная или точная ширина. Источники: [SWS_Platform_91001], [SWS_Platform_00026], SWS PlatformTypes с. 17
boolean реализуется в R20-11 как кратчайший нативно поддерживаемый беззнаковый целочисленный тип, как правило, 8 бит [SWS_Platform_00027]. Более поздние редакции отступают от этого и используют _BoolSWS PlatformTypes с. 18. Тип должен поддерживать указатели [SWS_Platform_00060] и может использоваться только с TRUE и FALSE. Арифметические и побитовые операторы запрещены [SWS_Platform_00034], а повторных определений символов следует избегать с помощью условной проверки [SWS_Platform_00054].
Для каждой платформы, кроме того, необходимо определить три символа: CPU_TYPE для разрядности регистров [SWS_Platform_00045], CPU_BIT_ORDER с MSB_FIRST или LSB_FIRST[SWS_Platform_00048][SWS_Platform_00049] и CPU_BYTE_ORDER с HIGH_BYTE_FIRST или LOW_BYTE_FIRST[SWS_Platform_00050][SWS_Platform_00051]. При этом нельзя смешивать имена битов и их значимость, так как MSB в аккумуляторе всегда находится слева SWS PlatformTypes с. 15. Интерпретация: модуль не имеет ошибок времени выполнения; неверные назначения проявляются только при интеграции или проверке на соответствие стандарту. Вопрос (открытый)
Роль Platform_Types.h: платформозависимый базис типов
Модуль представляет собой не исполняемый блок, а заголовочный файл. Все специфицированные типы и символы определены как «Available via Platform_Types.h», например uint8[SWS_Platform_00013] или CPU_TYPE[SWS_Platform_00064]. Заголовочный файл скрывает характеристики целевого микроконтроллера и компилятора под унифицированными именами: разрядность машинных слов, порядок битов и порядок байтов. Тем самым он относится к абстракции микроконтроллера, требуемой в SRS_BSW_00161, со стандартизированным интерфейсом к верхним уровням SRS BSWGeneral с. 88. Именно на это вышестоящее требование ссылаются и правила порядка байтов SWS PlatformTypes с. 16.
Граница системы проведена строго. Заголовочный файл нельзя расширять, поскольку любое расширение отменяет соответствие AUTOSAR [SWS_Platform_00002]. Возвращаемые типы для успешного или неуспешного завершения API-вызова, напротив, находятся в Std_Types.hSRS BSWGeneral с. 68. В представлении модели платформенные типы сохранены в виде шаблонов (blueprints), например в /AUTOSAR/Platform/ImplementationDatatypes_Blueprint/uint8. Они реализуются в /AUTOSAR_Platform/ImplementationDatatypes/uint8, чтобы поставщики компонентов могли обращаться к ним по предсказуемому пути TPS StandardizationTemplate с. 77.
Целочисленные типы и типы с плавающей точкой гарантированной ширины
Ядром модуля являются беззнаковые и знаковые типы фиксированной ширины от 8 до 64 бит, а также два типа с плавающей точкой. Нормативно требования определяют ширину и диапазон значений, например «32 bit unsigned» для uint32[SWS_Platform_00015]. Определения C-typedef в каталоге API, например typedef unsigned long uint32;, вероятно, следует читать как типичное отображение, которое может варьироваться в зависимости от компилятора (интерпретация). Вопрос Q-d0ca377fc1abd98a (открытый)
Для знаковых типов AUTOSAR поддерживает в компиляторе и целевой платформе исключительно арифметику дополнительного кода. Из этого следуют асимметричные диапазоны значений в таблице [SWS_Platform_00061]. Другие спецификации повсеместно предполагают наличие этих типов. Библиотека CRC, например, определяет uint8 Crc_CalculateCRC8(const uint8*, uint32, uint8, boolean)SWS CRCLibrary с. 41. COM должен поддерживать преобразование порядка байтов для типов от uint16 до float64RS COM с. 14. Оба места взяты из более поздних релизов и служат лишь иллюстрацией применения.
Оптимизированные типы *_least для счетчиков и состояний
Наряду с типами точной ширины модуль определяет шесть оптимизированных типов. Они гарантируют лишь минимальную ширину и производны от uint и sint соответственно:
Таким образом, реализация может выбрать более широкое представление. Сигнатуры каталога отображают все шесть типов на unsigned int и signed int соответственно [SWS_Platform_00020].
В качестве примеров использования спецификация называет счетчики циклов (не более 124 итераций ⇒ uint8_least) и аргументы switch (17 состояний ⇒ uint8_least). За подробностями она отсылает к главе «AUTOSAR Integer Data Types» общих требований к BSW SWS PlatformTypes с. 17.
Корректное использование boolean, TRUE и FALSE в соответствии с правилами
boolean имеет диапазон значений FALSE = 0 и TRUE = 1 и может использоваться только вместе с этими определениями [SWS_Platform_00026]. Для R20-11 действует следующее: boolean реализуется как беззнаковый целочисленный тип с кратчайшей битовой длиной, которую платформа поддерживает нативно, как правило, 8 бит [SWS_Platform_00027]. Место в документе из R24-11/R25-11 формулирует тот же идентификатор иначе: там boolean реализуется через C99-тип _Bool, и AUTOSAR больше не фиксирует точный размер SWS PlatformTypes с. 18. Для R20-11 эта более поздняя редакция не является нормативной.
boolean, кроме того, должен отображаться на тип, на который могут указывать указатели, чтобы параметры могли передаваться через API. Эффективные битовые типы некоторых аппаратных платформ не поддерживают указатели и поэтому исключаются [SWS_Platform_00060]. Для символов TRUE и FALSE действуют три правила:
При присваиваниях переменным типа boolean арифметические и побитовые операторы запрещены: +, ++, -, --, *, /, %, <<, >>, ~ и &. Допустимо только присваивание TRUE или FALSE, а также результатов отношений, логических операций и проверок на (не)равенство. Сравнение выполняется только с помощью == или != с TRUE/FALSE либо через if (var) или if (!var)[SWS_Platform_00034]. Использующие модули следуют этому шаблону. Так, Bfx_GetBit явно возвращает результат проверки бита как TRUE или FALSESWS BFXLibrary с. 19.
Диаграмма деятельности: для переменных boolean допустимы только перечисленные формы присваивания и сравнения, арифметические и побитовые операторы запрещены. Источники: [SWS_Platform_00034], [SWS_Platform_00026].
Нетипизированные указатели буфера: VoidPtr и ConstVoidPtr
Оба типа указателей различаются направлением потока данных:
VoidPtr представляет собой void* для буферов, содержащих данные, возвращаемые вызывающей стороне [SWS_Platform_91001].
ConstVoidPtr представляет собой const void* для буферов, передаваемых вызываемому компоненту [SWS_Platform_91002].
Как это выглядит в интерфейсах, показывает Key Manager. KeyMServiceCertificateByCertId передает RequestData как ConstVoidPtr вместе с длиной типа uint32. Ответ принимает ResponseData типа VoidPtr; ResponseDataLength (INOUT) при этом указывает доступную длину буфера SWS KeyManager с. 111. Другие примеры:
KeyM_CertDataType ссылается на данные сертификата в локальной области данных вызывающей стороны через VoidPtrSWS KeyManager с. 97.
Во всех трех примерах длина передается в виде отдельного параметра uint32 или отдельного элемента структуры, поскольку нетипизированный указатель не несет информации о длине.
При прямом порядке битов (big-endian) действует CPU_BIT_ORDER = MSB_FIRST, при обратном (little-endian) — LSB_FIRST[SWS_Platform_00048][SWS_Platform_00049]. При этом следует строго разделять наименования битов и их весовое значение. MSB в аккумуляторе независимо от типа CPU всегда находится в крайней левой позиции. В архитектурах Motorola (Big Endian Bit Order) обозначение Bit0 относится к старшему биту, во всех остальных — к младшему SWS PlatformTypes с. 15SWS PlatformTypes Рис. 7.1 с. 14.
При прямом порядке байтов (big-endian) действует CPU_BYTE_ORDER = HIGH_BYTE_FIRST: старший байт 16-битного значения располагается по адресу n, младший — по адресу n+1. При обратном порядке (little-endian) действует LOW_BYTE_FIRST с обратным размещением [SWS_Platform_00050][SWS_Platform_00051]. Обозначения Byte0 и Byte1 служат только для иллюстрации и могут отличаться в справочной документации производителя SWS PlatformTypes с. 16.
Необходимость этих указаний обосновывается другими спецификациями. Представление данных в памяти сильно зависит от архитектуры процессора и настроек компилятора. Поэтому SOME/IP требует алгоритм сериализации, переводящий данные в единое сетевое представление RS SOMEIPProtocol с. 21. Предположительно, подобные преобразования в реализациях опираются на CPU_BYTE_ORDER; однако payload явным образом этого не подтверждает. Вопрос Q-87e212e9eb2a2047 (открытый)
Поведение при ошибке
Интерпретация: поскольку Platform_Types.h предоставляет только типы и символы, модуль не имеет ошибок времени выполнения и кодов ошибок. Вопрос Q-e504d08b84d7ff70 (открытый) Признаки ошибок проявляются при компиляции, интеграции или проверке на соответствие стандарту. Требования называют типичные причины [SWS_Platform_00002]:
Расширения заголовочного файла недопустимы; любое расширение аннулирует соответствие стандарту [SWS_Platform_00002].
Повторные определения TRUE/FALSE при наличии поддержки со стороны компилятора должны предотвращаться с помощью условной проверки [SWS_Platform_00054][SWS_Platform_00056].
Тип boolean, не поддерживающий указатели, нарушает [SWS_Platform_00060], так как в этом случае параметры невозможно передать через API.
Арифметика или побитовые операции над boolean недопустимы, как и формы сравнения, отличные от перечисленных [SWS_Platform_00034].
Код, предполагающий обратный код (единичное дополнение) или симметричные диапазоны значений, не поддерживается, так как поддерживается только дополнительный код [SWS_Platform_00061].
При смене релиза следует учитывать предписание для boolean: R20-11 [SWS_Platform_00027] и более поздние редакции SWS PlatformTypes с. 18 различаются. Поэтому код, предполагающий фиксированный размер boolean, перед сменой релиза подлежит проверке.
Руководство, созданное ИИ на основе требований R20-11 и соответствующих фрагментов документации, часть из которых взята из более поздних релизов. Определяющей является спецификация.
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 · Немецкий оригинал