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

دليل الوحدةمولَّد بالذكاء الاصطناعي

يُوفر أنواعًا أساسية موحدة التسمية ورموزًا مميزة لعرض السجل وترتيب البايتات (Endianness) للمعالج الهدف.
مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: claude-opus-5-5 · الجهد: high · درجة الحرارة: غير قابل للتحكم · الموجّه: 7e73f6d7bb31 المصدر أسئلة مفتوحة (3)
المرساة السببية: R20-11 صالح اعتبارًا من R20-11 مُركَّب حديثًا لهذا الإصدار من المواصفة.
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

يُوفر أنواعًا أساسية موحدة التسمية ورموزًا مميزة لعرض السجل وترتيب البايتات (Endianness) للمعالج الهدف.

يُوفر 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/uint8 TPS StandardizationTemplate ص. 77.

يُوفر ملف الرأس مجموعات الأنواع التالية:

  • أنواع أعداد صحيحة ثابتة العرض من uint8 إلى sint64 [SWS_Platform_00013] [SWS_Platform_00067]؛ وبالنسبة للأنواع ذات الإشارة، ينطبق متمم الاثنين فقط [SWS_Platform_00061].
  • أنواع محسّنة *_least بعرض أدنى، على سبيل المثال لعدادات الحلقات التكرارية [SWS_Platform_00020].
  • float32 وfloat64 وفقًا للمعيار IEEE 754-2008 [SWS_Platform_00041].
  • مؤشرات المخزن المؤقت VoidPtr للبيانات الموجهة إلى المتصل و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

يتم تنفيذ 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]، و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. تفسير: لا يعرف النموذج أخطاء وقت التشغيل؛ ولا تظهر التعيينات الخاطئة إلا أثناء التكامل أو اختبار التوافق. سؤال (مفتوح)

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. وإلى متطلب Upstream هذا تحديدًا، تُشير أيضًا القواعد الخاصة بترتيب البايتات SWS PlatformTypes ص. 16.

حدود النظام محددة بدقة. لا يجوز توسيع ملف الرأس، لأن أي توسيع يُلغي التوافق مع AUTOSAR [SWS_Platform_00002]. في المقابل، توجد أنواع الإرجاع للنجاح أو الفشل في استدعاء API في Std_Types.h SRS BSWGeneral ص. 68. في عرض النموذج، تُحفظ أنواع المنصة كمخططات أولية (Blueprints)، على سبيل المثال تحت /AUTOSAR/Platform/ImplementationDatatypes_Blueprint/uint8. وتُنفّذ تحت /AUTOSAR_Platform/ImplementationDatatypes/uint8، بحيث يمكن لموردي المكونات الوصول إليها عبر مسار يمكن التنبؤ به TPS StandardizationTemplate ص. 77.

einbettung ziel المتحكم الدقيق الهدف / المترجم (عرض السجل، وترتيب البتات والبايتات) 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 (Bmc_AtomicFlagType من boolean) 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 بت بالإضافة إلى نوعين من الأعداد ذات الفاصلة العائمة. تحدد المتطلبات المعيارية العرض ونطاق القيم، مثل «32 bit unsigned» لـ uint32 [SWS_Platform_00015]. ويُرجح قراءة تعريفات النوع في لغة C (C-Typedefs) في دليل API، على سبيل المثال 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 تحويل Endianness لـ uint16 حتى float64 RS 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:

  • يتم تعريفهما بحماية #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 كـ ConstVoidPtr مصحوبًا بطول من النوع uint32. وتستقبل الاستجابة ResponseData من النوع VoidPtr؛ مع تحديد ResponseDataLength (INOUT) لطول المخزن المؤقت المتاح SWS KeyManager ص. 111. أمثلة أخرى:

  • يُرجع KeyM_CertDataType بيانات الشهادة في منطقة البيانات المحلية للمتصل عبر VoidPtr SWS KeyManager ص. 97.
  • يمرر Crypto Service Manager القيمة الأولية (Seed) كـ 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

يجب تحديد ثلاث خصائص في الترويسة لكل منصة:

كلا رمزي الترتيب هما #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]

في ترتيب البتات ذي النهاية الكبرى (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 ص. 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

في ترتيب البايتات ذي النهاية الكبرى (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.

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 مع تبديل البايتات إلى العنوانين n وn+1 اعتمادًا على CPU_BYTE_ORDER. المصادر: SWS PlatformTypes الشكل 7.2 ص. 16، SWS PlatformTypes الشكل 7.3 ص. 15، [SWS_Platform_00039]

تبرر مواصفات أخرى سبب ضرورة هذه البيانات. إذ يعتمد تمثيل البيانات في الذاكرة اعتمادًا كبيرًا على بنية المعالج وإعدادات المترجم. ولهذا السبب، يتطلب 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].
  • تنتهك رموز الترتيب ذات التعيين غير الصحيح المتطلبات من [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 ومواضع التوثيق المخصصة التي يعود بعضها إلى إصدارات لاحقة. المواصفة هي المرجع المعتمد.

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#7ba63da7
Content hash
7ba63da7
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;