DEENESPTFRRUARHIKOZHNL

Platform Types (Platform_Types)

ModulPlatform (Platform Types)
BSW-Modul-ID199
Standard-Header#include "Platform_Types.h"
SWS-SpezifikationAUTOSAR_SWS_PlatformTypes.pdf
ClusterGeneral & Standard Types

모듈 가이드AI 생성

대상 프로세서의 레지스터 폭 및 엔디언에 대해 균일하게 명명된 기본 타입과 식별 심볼을 제공합니다.
AI 생성 미검증 모델: 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, TRUE/FALSE이(가) 포함된 boolean 및 버퍼 포인터 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/uint8와(과) 같은 고정된 경로 아래에 위치합니다 TPS StandardizationTemplate 77쪽.

헤더는 다음과 같은 타입 그룹을 제공합니다:

typwahl start Datum festlegen zeiger 버퍼에 대한 포인터? start->zeiger richtung 버퍼를 피호출자에게 전달? zeiger->richtung 예 wahr Wahrheitswert? zeiger->wahr 아니요 cvp ConstVoidPtr (const void*) richtung->cvp 예 vp VoidPtr (void*) Daten an Aufrufer richtung->vp 아니요 bool boolean (TRUE/FALSE 전용) wahr->bool 예 gleit Gleitkommazahl? wahr->gleit 아니요 flt float32 / float64 (IEEE 754-2008) gleit->flt 예 least 최소 너비로 충분한가 (예: 루프 카운터, switch 인자)? gleit->least 아니요 opt uint8_least … sint32_least least->opt 예 fest uint8 … uint64 / sint8 … sint64 least->fest 아니요

액티비티 다이어그램: 적절한 플랫폼 타입의 선택은 버퍼 포인터, 불리언 값, 부동소수점 수, 최소 폭 또는 정확한 폭 여부에 대한 질문을 따릅니다. 출처: [SWS_Platform_91001], [SWS_Platform_00026], SWS PlatformTypes 17쪽

boolean은(는) R20-11에서 기본적으로 지원되는 가장 짧은 부호 없는 정수 타입(일반적으로 8비트)으로 구현됩니다 [SWS_Platform_00027]. 이후 버전에서는 이와 달리 _Bool을(를) 사용합니다 SWS PlatformTypes 18쪽. 해당 타입은 포인터 지정이 가능해야 하며 [SWS_Platform_00060], TRUE 및 FALSE과(와)만 함께 사용되어야 합니다. 산술 및 비트 연산자는 금지되며 [SWS_Platform_00034], 조건부 검사를 통해 심볼의 재정의를 방지해야 합니다 [SWS_Platform_00054].

또한 각 플랫폼별로 세 가지 심볼을 정의해야 합니다: 레지스터 폭을 위한 CPU_TYPE [SWS_Platform_00045], MSB_FIRST 또는 LSB_FIRST을(를) 갖는 CPU_BIT_ORDER [SWS_Platform_00048] [SWS_Platform_00049], 그리고 HIGH_BYTE_FIRST 또는 LOW_BYTE_FIRST을(를) 갖는 CPU_BYTE_ORDER [SWS_Platform_00050] [SWS_Platform_00051]. 이때 MSB는 누산기에서 항상 왼쪽에 위치하므로 비트 이름과 가중치를 혼동해서는 안 됩니다 SWS PlatformTypes 15쪽. 해석: 이 모듈에는 런타임 오류가 없으며, 잘못된 할당은 통합 또는 적합성 테스트 시에만 드러납니다. 질문 (열림)

cpu_symbole start Zielplattform portieren breite CPU의 레지스터 너비? start->breite t8 CPU_TYPE_8 breite->t8 8 Bit t16 CPU_TYPE_16 breite->t16 16 Bit t32 CPU_TYPE_32 breite->t32 32 Bit t64 CPU_TYPE_64 breite->t64 64 Bit bit Bitreihenfolge (Register)? t8->bit t16->bit t32->bit t64->bit msb CPU_BIT_ORDER = MSB_FIRST bit->msb Big Endian lsb CPU_BIT_ORDER = LSB_FIRST bit->lsb Little Endian byte Bytereihenfolge (Speicher)? msb->byte lsb->byte high CPU_BYTE_ORDER = HIGH_BYTE_FIRST byte->high Big Endian low CPU_BYTE_ORDER = LOW_BYTE_FIRST byte->low Little Endian ende Symbole als #define in Platform_Types.h high->ende low->ende

액티비티 다이어그램: 대상의 레지스터 폭, 비트 순서 및 바이트 순서는 각각 정확히 하나의 심볼 값에 매핑됩니다. 출처: [SWS_Platform_00045], [SWS_Platform_00048], [SWS_Platform_00050]

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.h에 위치합니다 SRS BSWGeneral 68쪽. 모델 뷰에서 플랫폼 타입은 예를 들어 /AUTOSAR/Platform/ImplementationDatatypes_Blueprint/uint8 아래에 블루프린트로 저장됩니다. 이는 /AUTOSAR_Platform/ImplementationDatatypes/uint8 아래에 구현되어 컴포넌트 공급업체가 예측 가능한 경로를 통해 접근할 수 있도록 합니다 TPS StandardizationTemplate 77쪽.

einbettung ziel 대상 µC / 컴파일러 (레지스터 너비, 비트 및 바이트 순서) pt Platform_Types.h (Basistypen, boolean, TRUE/FALSE, VoidPtr, ConstVoidPtr, CPU_*) ziel->pt bestimmt Belegung modell Modellsicht /AUTOSAR_Platform/ImplementationDatatypes pt->modell entspricht Blueprint-Pfad bfx Bfx (boolean, uint8 … uint64) pt->bfx Typen crc Crc (uint8, uint32, boolean) pt->crc Typen bmc Bmc (boolean 기반의 Bmc_AtomicFlagType) pt->bmc Basistyp keym KeyM / Csm (ConstVoidPtr, VoidPtr, uint32) pt->keym Pufferzeiger cansm CanSM (boolean-Parameter) pt->cansm Typen

컨텍스트 다이어그램: 대상 플랫폼은 Platform_Types.h의 할당을 결정하며, 이 헤더의 타입들은 모델 뷰에서 고정된 경로 아래에 위치하고 수많은 BSW 모듈에서 사용됩니다. 사용자 예제는 이후 릴리스에서 가져온 것입니다. 출처: [SWS_Platform_00038], TPS StandardizationTemplate 77쪽, SWS BFXLibrary 19쪽, SWS CRCLibrary 41쪽, SWS BSWMulticoreLibrary 16쪽, SWS KeyManager 111쪽, SWS CANStateManager 83쪽

보장된 폭을 갖는 정수 및 부동소수점 타입

모듈의 핵심은 8비트부터 64비트까지의 고정 폭을 갖는 부호 없는 타입 및 부호 있는 타입과 두 가지 부동소수점 타입입니다. 규범적으로 요구사항은 uint32에 대해 “32 bit unsigned”와 같이 폭과 값 범위를 지정합니다 [SWS_Platform_00015]. API 카탈로그의 C typedef(예: typedef unsigned long uint32;)는 컴파일러에 따라 달라질 수 있는 일반적인 매핑으로 해석될 수 있습니다(해석). 질문 Q-d0ca377fc1abd98a (열림)

유형폭 / 포맷값 범위근거
uint88비트, 부호 없음0..255[SWS_Platform_00013]
uint1616비트, 부호 없음0..65535[SWS_Platform_00014]
uint3232비트, 부호 없음0..4294967295[SWS_Platform_00015]
uint6464비트, 부호 없음0..18446744073709551615[SWS_Platform_00066]
sint88비트, 부호 있음-128..+127[SWS_Platform_00016]
sint1616비트, 부호 있음-32768..+32767[SWS_Platform_00017]
sint3232비트, 부호 있음-2147483648..+2147483647[SWS_Platform_00018]
sint6464비트, 부호 있음-9223372036854775808..9223372036854775807[SWS_Platform_00067]
float32IEEE 754-2008 binary32-3.4028235e+38..+3.4028235e+38[SWS_Platform_00041]
float64IEEE 754-2008 binary64±1.7976931348623157e+308[SWS_Platform_00042]

부호 있는 타입의 경우 AUTOSAR는 컴파일러 및 타깃에서 2의 보수 산술만을 지원합니다. 이로부터 표 [SWS_Platform_00061]의 비대칭적인 값 범위가 도출됩니다. 다른 명세들은 이러한 타입들을 일관되게 전제합니다. 예를 들어 CRC 라이브러리는 uint8 Crc_CalculateCRC8(const uint8*, uint32, uint8, boolean)을 정의합니다SWS CRCLibrary 41쪽. COM은 uint16부터 float64까지의 엔디언 변환을 지원해야 합니다RS COM 14쪽. 두 위치 모두 이후 릴리스에서 가져온 것이며 사용 예를 보여줄 뿐입니다.

카운터 및 상태를 위한 최적화된 타입 *_least

정확한 비트 폭을 갖는 타입 외에도 이 모듈은 6개의 최적화된 타입을 정의합니다. 이들은 최소 폭만을 보장하며 uint 또는 sint로부터 파생됩니다:

따라서 구현 시 더 넓은 표현 방식을 선택할 수 있습니다. 카탈로그 시그니처는 6개 타입 모두를 unsigned int 또는 signed int에 매핑합니다[SWS_Platform_00020].

명세에서는 적용 예시로 루프 카운터(최대 124회 반복 ⇒ uint8_least)와 switch 인자(17개 상태 ⇒ uint8_least)를 언급합니다. 자세한 내용은 일반 BSW 요구사항의 “AUTOSAR Integer Data Types” 장을 참조하십시오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의 경우 이 후속 버전은 표준적이지(normative) 않습니다.

파라미터가 API를 통해 전달될 수 있도록 boolean은 포인터가 가리킬 수 있는 타입으로도 매핑되어야 합니다. 일부 하드웨어의 효율적인 비트 타입은 포인터 지정이 불가능하므로 제외됩니다[SWS_Platform_00060]. 기호 TRUE 및 FALSE에는 세 가지 규칙이 적용됩니다:

  • 이들은 #ifndef 가드와 함께 1 및 0으로 정의됩니다[SWS_Platform_00056].
  • 컴파일러가 이미 해당 기호를 제공하는 경우, 조건부 검사를 통해 재정의를 방지해야 합니다[SWS_Platform_00054].
  • 이들은 boolean과 함께만 사용해야 합니다[SWS_Platform_00055].

boolean 변수에 할당할 때 산술 및 비트 연산자는 금지됩니다: +, ++, -, --, *, /, %, <<, >>, ~ 및 &. TRUE 또는 FALSE의 할당과 관계 연산, 논리 연산 및 (불)일치 검사의 결과만 허용됩니다. 비교는 == 또는 !=를 사용하여 TRUE/FALSE에 대해 수행하거나 if (var) 또는 if (!var)를 통해서만 수행됩니다[SWS_Platform_00034]. 이를 사용하는 모듈들도 이 패턴을 따릅니다. 따라서 Bfx_GetBit은 비트 테스트의 결과를 명시적으로 TRUE 또는 FALSE으로 반환합니다SWS BFXLibrary 19쪽.

boolean_regeln start boolean 변수에 대한 연산 art 할당 또는 비교? start->art zuw 우변: TRUE/FALSE, 관계(<, >, <=, >=), 논리(&&, ||, !) 또는 (==, !=)? art->zuw Zuweisung verg 형식: == TRUE/FALSE, != TRUE/FALSE, if (var) 또는 if (!var)? art->verg Vergleich ok 허용됨 zuw->ok 예 nok 허용되지 않음 (예: +, ++, -, --, *, /, %, <<, >>, ~, &) zuw->nok 아니요 verg->ok 예 nokv 허용된 형식으로 나열되지 않음 verg->nokv 아니요

활동 다이어그램: boolean 변수에는 나열된 할당 및 비교 형태만 허용되며, 산술 및 비트 연산자는 허용되지 않습니다. 출처: [SWS_Platform_00034], [SWS_Platform_00026]

타입이 지정되지 않은 버퍼 포인터: VoidPtr 및 ConstVoidPtr

두 포인터 타입은 데이터 흐름 방향에서 차이가 납니다:

  • VoidPtr은 호출자에게 반환되는 데이터를 포함하는 버퍼를 위한 void*입니다[SWS_Platform_91001].
  • ConstVoidPtr은 호출 수신자에게 전달되는 버퍼를 위한 const void*입니다[SWS_Platform_91002].

따라서 데이터 흐름 방향은 이미 타입 이름에 포함되어 있습니다SWS PlatformTypes 27쪽 SWS PlatformTypes 28쪽.

인터페이스에서 이것이 어떻게 나타나는지는 Key Manager가 보여줍니다. KeyMServiceCertificateByCertId은 RequestData을 타입 uint32의 길이와 함께 ConstVoidPtr로 전달합니다. 응답은 타입 VoidPtr의 ResponseData가 수신하며, 이때 ResponseDataLength(INOUT)은 사용 가능한 버퍼 길이를 지정합니다SWS KeyManager 111쪽. 추가 예시:

타입이 지정되지 않은 포인터는 길이 정보를 전달하지 않기 때문에 세 가지 예시 모두에서 길이가 별도의 uint32 파라미터 또는 별도의 구조체 요소로 함께 전달됩니다.

ConstVoidPtr 및 VoidPtr를 사용한 버퍼 전달(예: KeyM)호출자KeyM요청 데이터를 버퍼에 저장Antwortpuffer bereitstellenKeyM_ServiceCertificateByCertId(Service, RequestData: ConstVoidPtr,RequestDataLength: uint32,ResponseData: VoidPtr,ResponseDataLength: uint32 [INOUT])ConstVoidPtr: 버퍼가 피호출자에게 전달됨VoidPtr: 버퍼가 호출자를 위한 데이터를 수신함altOperation angenommenE_OK수락되지 않음E_NOT_OK / KEYM_E_BUSY /KEYM_E_KEY_CERT_SIZE_MISMATCH /KEYM_E_PARAMETER_MISMATCH

시퀀스 다이어그램: 서비스 호출 시 ConstVoidPtr는 호출 수신자에게 요청을 전달하고, VoidPtr는 호출자를 위한 응답을 수신합니다. 출처: SWS KeyManager 111쪽, [SWS_Platform_91001], [SWS_Platform_91002]

typwahl start Datum festlegen zeiger 버퍼에 대한 포인터? start->zeiger richtung 버퍼를 피호출자에게 전달? zeiger->richtung 예 wahr Wahrheitswert? zeiger->wahr 아니요 cvp ConstVoidPtr (const void*) richtung->cvp 예 vp VoidPtr (void*) Daten an Aufrufer richtung->vp 아니요 bool boolean (TRUE/FALSE 전용) wahr->bool 예 gleit Gleitkommazahl? wahr->gleit 아니요 flt float32 / float64 (IEEE 754-2008) gleit->flt 예 least 최소 너비로 충분한가 (예: 루프 카운터, switch 인자)? gleit->least 아니요 opt uint8_least … sint32_least least->opt 예 fest uint8 … uint64 / sint8 … sint64 least->fest 아니요

활동 다이어그램: 타입 선택은 버퍼 포인터, 진리값, 부동소수점 수, 최소 또는 정확한 폭에 관한 질문을 따릅니다. 출처: [SWS_Platform_91001], [SWS_Platform_91002], [SWS_Platform_00026], [SWS_Platform_00041], [SWS_Platform_00020], SWS PlatformTypes 17쪽

플랫폼 식별자: CPU_TYPE, CPU_BIT_ORDER, CPU_BYTE_ORDER

각 플랫폼에 대해 헤더에 세 가지 속성을 정의해야 합니다:

두 순서 기호는 허용된 값 중 정확히 하나를 갖는 #define입니다[SWS_Platform_00038] [SWS_Platform_00039].

cpu_symbole start Zielplattform portieren breite CPU의 레지스터 너비? start->breite t8 CPU_TYPE_8 breite->t8 8 Bit t16 CPU_TYPE_16 breite->t16 16 Bit t32 CPU_TYPE_32 breite->t32 32 Bit t64 CPU_TYPE_64 breite->t64 64 Bit bit Bitreihenfolge (Register)? t8->bit t16->bit t32->bit t64->bit msb CPU_BIT_ORDER = MSB_FIRST bit->msb Big Endian lsb CPU_BIT_ORDER = LSB_FIRST bit->lsb Little Endian byte Bytereihenfolge (Speicher)? msb->byte lsb->byte high CPU_BYTE_ORDER = HIGH_BYTE_FIRST byte->high Big Endian low CPU_BYTE_ORDER = LOW_BYTE_FIRST byte->low Little Endian ende Symbole als #define in Platform_Types.h high->ende low->ende

활동 다이어그램: 타깃으로 포팅할 때 레지스터 폭, 비트 순서 및 바이트 순서가 결정되고 각각 정확히 하나의 기호 값에 매핑됩니다. 출처: [SWS_Platform_00045], [SWS_Platform_00048], [SWS_Platform_00049], [SWS_Platform_00050], [SWS_Platform_00051]

빅 엔디언 비트 순서의 경우 CPU_BIT_ORDER = MSB_FIRST이 적용되고, 리틀 엔디언의 경우 LSB_FIRST이 적용됩니다[SWS_Platform_00048] [SWS_Platform_00049]. 이때 비트 이름과 가중치는 엄격히 구분해야 합니다. MSB는 CPU 타입과 관계없이 누산기에서 항상 맨 왼쪽에 위치합니다. Motorola 아키텍처(빅 엔디언 비트 순서)에서는 Bit0이 최상위 비트를 나타내고, 다른 모든 아키텍처에서는 최하위 비트를 나타냅니다SWS PlatformTypes 15쪽 SWS PlatformTypes 그림 7.1 14쪽.

bitordnung be CPU_BIT_ORDER = MSB_FIRST (Big Endian, z. B. Motorola) Bit0 = MSB msb Register-MSB (immer links) be->msb Bit0 bezeichnet le CPU_BIT_ORDER = LSB_FIRST (Little Endian) Bit0 = LSB lsb Register-LSB (immer rechts) le->lsb Bit0 bezeichnet w7 Wertigkeit 2^7 = 128 msb->w7 entspricht w0 Wertigkeit 2^0 = 1 lsb->w0 entspricht

그림 7.1에 따른 구조 다이어그램: 레지스터 비트의 가중치는 고정되어 있으며, Bit0의 번호 지정만 CPU_BIT_ORDER에 따라 달라집니다. 출처: SWS PlatformTypes 그림 7.1 14쪽, SWS PlatformTypes 15쪽

빅 엔디언 바이트 순서의 경우 CPU_BYTE_ORDER = HIGH_BYTE_FIRST이 적용됩니다: 16비트 값의 최상위 바이트는 주소 n에 위치하고, 최하위 바이트는 n+1에 위치합니다. 리틀 엔디언의 경우 반대 배치를 갖는 LOW_BYTE_FIRST이 적용됩니다[SWS_Platform_00050] [SWS_Platform_00051]. Byte0 및 Byte1이라는 명칭은 설명을 위한 것일 뿐이며 제조업체의 참조 문서에서는 다를 수 있습니다SWS PlatformTypes 16쪽.

byteordnung cluster_high HIGH_BYTE_FIRST (Big Endian) cluster_low LOW_BYTE_FIRST (Little Endian) wert uint16-Wert ms MS Byte (Byte1) Bits 15..8 wert->ms ls LS Byte (Byte0) Bits 7..0 wert->ls hn Adresse n ms->hn ln1 Adresse n+1 ms->ln1 hn1 Adresse n+1 ls->hn1 ln Adresse n ls->ln

그림 7.2/7.3에 따른 구조 다이어그램: 동일한 uint16이 CPU_BYTE_ORDER에 따라 바이트가 바뀐 상태로 주소 n과 n+1에 매핑됩니다. 출처: SWS PlatformTypes 그림 7.2 16쪽, SWS PlatformTypes 그림 7.3 15쪽, [SWS_Platform_00039]

이러한 정보가 왜 필요한지는 다른 명세들에서 이유를 설명합니다. 데이터의 메모리 표현은 프로세서 아키텍처와 컴파일러 설정에 크게 좌우됩니다. 따라서 SOME/IP는 공통 네트워크 표현으로 변환하는 직렬화 알고리즘을 요구합니다RS SOMEIPProtocol 21쪽. 구현에서 이러한 변환은 CPU_BYTE_ORDER에 의존하는 것으로 추정되지만, 페이로드가 이를 명시적으로 증명하지는 않습니다. 질문 Q-87e212e9eb2a2047 (열림)

오류가 발생한 경우의 동작

해석: Platform_Types.h은 타입과 기호만 제공하므로 모듈에는 런타임 오류와 오류 코드가 없습니다. 질문 Q-e504d08b84d7ff70 (열림) 오류 양상은 컴파일, 통합 또는 적합성 테스트 중에 나타납니다. 요구사항에서는 전형적인 원인들을 명시합니다[SWS_Platform_00002]:

  • 헤더 확장은 허용되지 않으며, 모든 확장은 적합성을 무효화합니다[SWS_Platform_00002].
  • 컴파일러 지원이 있는 경우 TRUE/FALSE의 중복 정의는 조건부 검사를 통해 방지해야 합니다[SWS_Platform_00054] [SWS_Platform_00056].
  • 잘못 지정된 순서 기호는 [SWS_Platform_00048]부터 [SWS_Platform_00051]까지를 위반합니다. 제조업체 문서의 비트 이름과 가중치를 혼동하는 것은 특히 오류가 발생하기 쉽습니다SWS PlatformTypes 15쪽.
  • 포인터 지정이 불가능한 boolean은 [SWS_Platform_00060]을 위반하는데, 파라미터가 API를 통해 전달될 수 없기 때문입니다.
  • boolean에 대한 산술 또는 비트 연산은 허용되지 않으며, 나열된 비교 형태 이외의 것도 허용되지 않습니다[SWS_Platform_00034].
  • 1의 보수나 대칭적인 값 범위를 전제하는 코드는 지원되지 않는데, 2의 보수만 지원되기 때문입니다[SWS_Platform_00061].
  • 릴리스 변경 시 boolean에 대한 규정을 준수해야 합니다: R20-11 [SWS_Platform_00027]과 이후 버전 SWS PlatformTypes 18쪽은 서로 다릅니다. 따라서 boolean의 고정된 크기를 전제하는 코드는 변경 전에 검토해야 합니다.

더 자세한 증거

R20-11의 요구사항 및 일부는 이후 릴리스에서 가져온 관련 문서 위치를 기반으로 생성된 AI 가이드입니다. 기준이 되는 것은 명세입니다.

Platform Types (Platform_Types)

Platform-specific fundamental data types (integers, booleans, floating-point numbers) mapped to CPU architecture primitives.

Typen — Übersicht

Typen — Detailansicht

타입 float32 [SWS_Platform_00041] 📄 PDF

typedef float float32;

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".

타입 float64 [SWS_Platform_00042] 📄 PDF

typedef double float64;

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".

타입 VoidPtr [SWS_Platform_91001] 📄 PDF

typedef void* VoidPtr;

This standard AUTOSAR type shall be a void pointer Note: This type shall be used for buffers that contain data returned to the caller.

타입 ConstVoidPtr [SWS_Platform_91002] 📄 PDF

typedef const void* ConstVoidPtr;

This standard AUTOSAR type shall be a void pointer to const. Note: This type shall be used for buffers that are passed to the callee.

타입 CPU_TYPE [SWS_Platform_00064] 📄 PDF

This 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 to the platform.

타입 CPU_BIT_ORDER [SWS_Platform_00038] 📄 PDF

This symbol shall be defined as #define having one of the values MSB_FIRST or LSB_FIRST according to the platform.

타입 CPU_BYTE_ORDER [SWS_Platform_00039] 📄 PDF

This symbol shall be defined as #define having one of the values HIGH_BYTE_FIRST or LOW_ BYTE_FIRST according to the platform.

타입 TRUE_FALSE [SWS_Platform_00056] 📄 PDF

The symbols TRUE and FALSE shall be defined as follows: #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_Platform
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Platform@rel:R20-11#69a4c828
Content hash
69a4c828
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_PlatformTypes.pdf#nameddest=SWS_Platform_00026

타입

boolean 타입

This standard AUTOSAR type shall only be used together with the definitions TRUE and FALSE.

typedef unsigned char boolean;

This standard AUTOSAR type shall be a void pointer to const. Note: This type shall be used for buffers that are passed to the callee.

typedef const void* ConstVoidPtr;

This symbol shall be defined as #define having one of the values MSB_FIRST or LSB_FIRST according to the platform.

This symbol shall be defined as #define having one of the values HIGH_BYTE_FIRST or LOW_ BYTE_FIRST according to the platform.

CPU_TYPE 타입

This 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 to the platform.

float32 타입

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".

typedef float float32;
float64 타입

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".

typedef double float64;
sint16 타입

This standard AUTOSAR type shall be of 16 bit signed.

typedef signed short sint16;

This optimized AUTOSAR type shall be at least 16 bit signed.

typedef signed int sint16_least;
sint32 타입

This standard AUTOSAR type shall be 32 bit signed.

typedef signed long sint32;

This optimized AUTOSAR type shall be at least 32 bit signed.

typedef signed int sint32_least;
sint64 타입

This standard AUTOSAR type shall be 64 bit signed.

typedef signed long long sint64;
sint8 타입

This standard AUTOSAR type shall be of 8 bit signed.

typedef signed char sint8;

This optimized AUTOSAR type shall be at least 8 bit signed.

typedef signed int sint8_least;
TRUE_FALSE 타입

The symbols TRUE and FALSE shall be defined as follows: #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif

uint16 타입

This standard AUTOSAR type shall be of 16 bit unsigned.

typedef unsigned short uint16;

This optimized AUTOSAR type shall be at least 16 bit unsigned.

typedef unsigned int uint16_least;
uint32 타입

This standard AUTOSAR type shall be 32 bit unsigned.

typedef unsigned long uint32;

This optimized AUTOSAR type shall be at least 32 bit unsigned.

typedef unsigned int uint32_least;
uint64 타입

This standard AUTOSAR type shall be 64 bit unsigned.

typedef unsigned long long uint64;
uint8 타입

This standard AUTOSAR type shall be of 8 bit unsigned.

typedef unsigned char uint8;

This optimized AUTOSAR type shall be at least 8 bit unsigned.

typedef unsigned int uint8_least;
VoidPtr 타입

This standard AUTOSAR type shall be a void pointer Note: This type shall be used for buffers that contain data returned to the caller.

typedef void* VoidPtr;