مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: 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.
دور 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.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 (C-Typedefs) في دليل API، على سبيل المثال typedef unsigned long uint32;، على أنها تخطيط نموذجي يمكن أن يختلف باختلاف المترجم (تفسير). سؤال Q-d0ca377fc1abd98a (مفتوح)
بالنسبة للأنواع ذات الإشارة، يدعم AUTOSAR في المترجم والهدف حساب متمم الاثنين حصريًا. وينتج عن ذلك نطاقات القيم غير المتماثلة في الجدول [SWS_Platform_00061]. تفترض المواصفات الأخرى هذه الأنواع باستمرار. على سبيل المثال، تُعرّف مكتبة CRC uint8 Crc_CalculateCRC8(const uint8*, uint32, uint8, boolean)SWS CRCLibrary ص. 41. ويجب أن يدعم COM تحويل Endianness لـ 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.
يوضح Key Manager كيف يبدو ذلك في الواجهات؛ حيث يمرر KeyMServiceCertificateByCertIdRequestData كـ ConstVoidPtr مصحوبًا بطول من النوع uint32. وتستقبل الاستجابة ResponseData من النوع VoidPtr؛ مع تحديد ResponseDataLength (INOUT) لطول المخزن المؤقت المتاح SWS KeyManager ص. 111. أمثلة أخرى:
يُرجع KeyM_CertDataType بيانات الشهادة في منطقة البيانات المحلية للمتصل عبر VoidPtrSWS KeyManager ص. 97.
في ترتيب البتات ذي النهاية الكبرى (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]:
إن boolean غير القابل للتأشير ينتهك [SWS_Platform_00060]، لأن المعلمات لا يمكن تمريرها حينئذٍ عبر API.
تُعد العمليات الحسابية أو عمليات البت على boolean غير مسموح بها، وكذلك صيغ المقارنة الأخرى غير المدرجة [SWS_Platform_00034].
الكود الذي يفترض متمم الآحاد أو نطاقات قيم متناظرة غير مشمول، حيث يتم دعم متمم الاثنين فقط [SWS_Platform_00061].
عند تغيير الإصدار، يجب مراعاة التوجيه الخاص بـ boolean: حيث يختلف R20-11 [SWS_Platform_00027] عن الصيغ اللاحقة SWS PlatformTypes ص. 18. ولذلك يجب فحص الكود الذي يفترض حجمًا ثابتًا لـ boolean قبل التغيير.
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 · الأصل الألماني