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

मॉड्यूल गाइडएआई जनित

टारगेट प्रोसेसर की रजिस्टर चौड़ाई और एंडियननेस के लिए समान रूप से नामित बेस प्रकार और पहचान प्रतीक प्रदान करता है।
एआई-जनित असत्यापित मॉडल: 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 का प्लेटफ़ॉर्म-निर्भर प्रकार आधार (type base) है। यह हेडर एकसमान नामों के पीछे लक्ष्य की शब्द-चौड़ाई (word widths) और एंडियननेस को समाहित (encapsulate) करता है तथा इसका विस्तार नहीं किया जाना चाहिए, क्योंकि कोई भी विस्तार AUTOSAR-अनुरूपता को समाप्त कर देता है [SWS_Platform_00002]। मॉडल दृश्य (model view) में, ये प्रकार /AUTOSAR_Platform/ImplementationDatatypes/uint8 TPS StandardizationTemplate पृ. 77 जैसे एक निश्चित पथ के अंतर्गत स्थित होते हैं।

हेडर निम्नलिखित प्रकार-समूह प्रदान करता है:

  • uint8 से sint64 तक के निश्चित चौड़ाई वाले पूर्णांक प्रकार [SWS_Platform_00013] [SWS_Platform_00067]; हस्ताक्षरित (signed) प्रकारों के लिए केवल टूज़ कॉम्प्लिमेंट लागू होता है [SWS_Platform_00061]।
  • न्यूनतम चौड़ाई वाले अनुकूलित प्रकार *_least, उदाहरण के लिए लूप काउंटरों के लिए [SWS_Platform_00020]।
  • IEEE 754-2008 के अनुसार float32 और float64 [SWS_Platform_00041]।
  • कॉलर को लौटाए जाने वाले डेटा के लिए बफ़र पॉइंटर VoidPtr और कॉल किए गए घटक (callee) को दिए जाने वाले डेटा के लिए ConstVoidPtr [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_00026], SWS PlatformTypes पृ. 17

R20-11 में boolean को सबसे छोटे मूल रूप से समर्थित अहस्ताक्षरित (unsigned) पूर्णांक प्रकार के रूप में कार्यान्वित किया जाता है, जो सामान्यतः 8 बिट होता है [SWS_Platform_00027]। बाद के संस्करण इससे भिन्न हैं और _Bool SWS PlatformTypes पृ. 18 का उपयोग करते हैं। प्रकार पॉइंटर-सक्षम होना चाहिए [SWS_Platform_00060] और इसका उपयोग केवल TRUE और FALSE के साथ किया जा सकता है। अंकगणितीय और बिटवाइज़ ऑपरेटर निषिद्ध हैं [SWS_Platform_00034], तथा सशर्त जाँच (conditional check) के माध्यम से प्रतीकों के पुनर्परिभाषा से बचा जाना चाहिए [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]। बिट नामों और सार्थकता (significance) को आपस में मिश्रित नहीं किया जाना चाहिए, क्योंकि MSB संचायक (accumulator) में हमेशा बाईं ओर होता है 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 में अपेक्षित माइक्रोकंट्रोलर अमूर्तता (abstraction) से संबंधित है 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-typedefs, उदाहरण के लिए 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 कंपाइलर और लक्ष्य पर विशेष रूप से टूज़ कॉम्प्लिमेंट अंकगणित का समर्थन करता है। इससे तालिका [SWS_Platform_00061] की असममित मान सीमाएँ प्राप्त होती हैं। अन्य विनिर्देश इन प्रकारों को निरंतर रूप से पूर्व-आवश्यकता मानते हैं। CRC लाइब्रेरी उदाहरण के लिए uint8 Crc_CalculateCRC8(const uint8*, uint32, uint8, boolean) SWS CRCLibrary पृ. 41 को परिभाषित करती है। COM को uint16 से float64 के लिए एंडियननेस रूपांतरण का समर्थन करना चाहिए RS COM पृ. 14। दोनों संदर्भ बाद के रिलीज़ से हैं और केवल उपयोग को दर्शाते हैं।

काउंटरों और स्थितियों के लिए अनुकूलित प्रकार *_least

सटीक चौड़ाई वाले प्रकारों के अतिरिक्त, यह मॉड्यूल छह अनुकूलित प्रकारों को परिभाषित करता है। वे केवल एक न्यूनतम चौड़ाई की गारंटी देते हैं और क्रमशः uint या sint से व्युत्पन्न होते हैं:

इस प्रकार कार्यान्वयन एक व्यापक निरूपण चुन सकता है। कैटलॉग हस्ताक्षर सभी छह प्रकारों को क्रमशः 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 के लिए, यह बाद का संस्करण मानक नहीं है।

boolean को ऐसे प्रकार पर भी मैप किया जाना चाहिए जिस पर पॉइंटर्स इंगित कर सकें, ताकि API के माध्यम से पैरामीटर पास किए जा सकें। कुछ हार्डवेयर के कुशल बिट-प्रकार पॉइंटर-सक्षम नहीं होते हैं और इसलिए बाहर हो जाते हैं [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 प्रकार uint32 की लंबाई के साथ RequestData को ConstVoidPtr के रूप में पास करता है। प्रतिक्रिया प्रकार VoidPtr के ResponseData को प्राप्त होती है; ResponseDataLength (INOUT) उपलब्ध बफ़र लंबाई को निर्दिष्ट करता है SWS KeyManager पृ. 111। अन्य उदाहरण:

  • KeyM_CertDataType कॉलर के स्थानीय डेटा क्षेत्र में प्रमाणपत्र डेटा को एक VoidPtr के माध्यम से संदर्भित करता है SWS KeyManager पृ. 97।
  • Crypto Service Manager सीड को ConstVoidPtr के रूप में पास करता है SWS CryptoServiceManager पृ. 124।

तीनों उदाहरणों में, लंबाई को एक अलग 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

प्रत्येक प्लेटफ़ॉर्म के लिए हेडर में तीन विशेषताएँ निर्धारित की जानी हैं:

  • CPU_TYPE_8, CPU_TYPE_16, CPU_TYPE_32 या CPU_TYPE_64 में से किसी एक मान के साथ CPU_TYPE [SWS_Platform_00044] के माध्यम से रजिस्टर चौड़ाई [SWS_Platform_00045] [SWS_Platform_00064]।
  • CPU_BIT_ORDER [SWS_Platform_00043] के माध्यम से रजिस्टर स्तर पर बिट क्रम।
  • CPU_BYTE_ORDER [SWS_Platform_00046] के माध्यम से मेमोरी में बाइट क्रम।

दोनों क्रम प्रतीक #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 प्रकार की परवाह किए बिना हमेशा सबसे बाईं ओर होता है। मोटोरोला आर्किटेक्चर (Big Endian Bit Order) में, Bit0 सबसे महत्वपूर्ण (highest-value) बिट को निर्दिष्ट करता है, जबकि अन्य सभी में यह सबसे कम महत्वपूर्ण (lowest-value) बिट को निर्दिष्ट करता है 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 (खुला) त्रुटि पैटर्न संकलन (compilation), एकीकरण या अनुरूपता परीक्षण के दौरान दिखाई देते हैं। आवश्यकताएँ विशिष्ट कारणों का नाम देती हैं [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] के अलावा अन्य की।
  • ऐसा कोड जो वन्स कॉम्प्लिमेंट या सममित मान सीमाओं को पूर्वमान्यता देता है, समर्थित नहीं है, क्योंकि केवल टूज़ कॉम्प्लिमेंट समर्थित है [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#05109928
Content hash
05109928
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;
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.

typedef const void* ConstVoidPtr;
CPU_BIT_ORDER टाइप

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

CPU_BYTE_ORDER टाइप

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;
sint16_least टाइप

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;
sint32_least टाइप

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;
sint8_least टाइप

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;
uint16_least टाइप

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;
uint32_least टाइप

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;
uint8_least टाइप

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;