وحدة 6 / 12

الذكاء الاصطناعي في الأنظمة المدمجة وتطوير البرامج الثابتة

المكاسب:

  • القدرة على تسريع هيكل البرامج الثابتة لوحدة التحكم الدقيقة وبرنامج التشغيل ومسودات جهاز الحالة باستخدام الذكاء الاصطناعي
  • القدرة على مراجعة المقاطعة والتوقيت والمراقبة ومنطق الطاقة المنخفضة بدعم من الذكاء الاصطناعي
  • القدرة على التحقق من رمز البرنامج الثابت الذي تم إنشاؤه بواسطة الذكاء الاصطناعي من خلال التحليل الثابت واختبار الأجهزة ومتطلبات الأمان

النظام المدمج هو جهاز إلكتروني مبني حول متحكم دقيق (جهاز كمبيوتر صغير يحتوي على المعالج والذاكرة والأجهزة الطرفية على شريحة واحدة) مصمم للقيام بوظيفة محددة: منظم الحرارة، مودم، عقدة استشعار، سائق المحرك. البرنامج الثابت هو البرنامج الذي يقوم بتشغيل أجهزة هذا الجهاز مباشرة. ستشاهد في هذه الوحدة كيفية استخدام الذكاء الاصطناعي كمسرّع في تطوير البرامج الثابتة (كتابة برنامج التشغيل، وجهاز الحالة، ومنطق المقاطعة والتوقيت، وإدارة الطاقة المنخفضة). الذكاء الاصطناعي قوي حقًا في البرمجة؛ لكن في العالم المضمن، تتشابك التعليمات البرمجية مع الأجهزة، وفي الوقت الفعلي، وفي كثير من الأحيان مع الأمان. لذلك، يجب أن يخضع كل سطر ينتجه الذكاء الاصطناعي للتحليل الثابت، وفحص التسجيل/ورقة البيانات، والاختبار الفعلي في الأجهزة.

أين تكون القوة وأين تكون المخاطرة في البرامج الثابتة للذكاء الاصطناعي

الذكاء الاصطناعي قوي جدًا في الجزء "الهيكلي" و"القالب" من البرنامج الثابت: هيكل برنامج تشغيل I2C/SPI، وإطار عمل جهاز الحالة (المنطق الذي يحدد حالات الجهاز وانتقالاته)، وتنفيذ المخزن المؤقت الحلقي، ومحلل التعليمات، وهيكل الاختبار. يمكنه قراءة جدول التسجيل في ورقة بيانات معقدة وإنشاء رمز التهيئة. يمكن أن يفسر خطأ ما، ويفسر تحذير المترجم.

حيث يكون الأمر محفوفًا بالمخاطر هو جوهر النظام المضمن:

  • تسجيل العناوين وحقول البت: قد يخطئ الذكاء الاصطناعي في تذكر خريطة تسجيل الشريحة؛ يجب التحقق من كل عنوان وبت من ورقة البيانات.
  • التوقيت والوقت الحقيقي: يعتمد عدد الميكروثانية التي تستغرقها العملية، وعدد مرات وصول المقاطعة، على الأجهزة؛ الذكاء الاصطناعي يتنبأ، وأنت تقيس.
  • التزامن: إذا كانت المتغيرات المشتركة بين روتين خدمة المقاطعة (ISR) والحلقة الرئيسية غير محمية عن طريق الوصول الذري والمتقلب، فستحدث أخطاء صامتة وغير قابلة للتكرار.
  • حدود الموارد: تجاوز سعة المكدس، وتسرب الذاكرة، وانتهاء مهلة المراقبة يعني حدوث عطل في الجزء المضمن.

المقاطعة والتوقيت والمراقبة

المقاطعة هي عندما يقع حدث ما (وصول البيانات، انتهاء صلاحية المؤقت)، يتخلى المعالج عن المهمة الرئيسية وينتقل إلى روتين الخدمة (ISR: Interrupt Service Routine). تعد ISRs أكثر أجزاء التعليمات البرمجية حساسية في النظام المضمن. القواعد الأساسية: يجب أن يكون ISR قصيرًا (يُترك العمل الطويل للحلقة الرئيسية)، ويجب ألا تكون هناك عمليات حظر (الانتظار والطباعة) فيه، ويجب حماية المتغيرات المشتركة.

Watchdog هي آلية أمنية تقوم بإعادة تشغيل الجهاز تلقائيًا في حالة تعطل البرنامج؛ يقوم البرنامج الثابت "بتغذيته" بانتظام، وإذا لم يكن الأمر كذلك، تتم إعادة ضبط النظام. يقوم الذكاء الاصطناعي بصياغة هذه الهياكل، ولكن يجب التحقق من صحة مدة المراقبة وأولويات المقاطعة وجدولة الميزانية مقابل الحمل الفعلي على نظامك.

نصيحة: عند طباعة ISR إلى الذكاء الاصطناعي، قم بتوجيهه صراحةً إلى "إبقاء ISR قصيرًا، بدون حظر، ووضع علامة على المتغيرات المشتركة مع الوصول الذري والمتقلب، وتفويض المهمة الطويلة إلى الحلقة الرئيسية باستخدام علامة." ثم تحقق سطرًا تلو الآخر في الكود الذي ينتج أن هذه القواعد مطبقة بالفعل.

انخفاض الطاقة والأمن

تعد إدارة الطاقة المنخفضة أمرًا بالغ الأهمية في الأجهزة التي تعمل بالبطارية: وضع المعالج في وضع السكون، وإيقاف تشغيل الأجهزة الطرفية، والاستيقاظ مع حدث ما. يرسم الذكاء الاصطناعي التحولات في وضع السكون ومنطق الاستيقاظ، لكن الاستهلاك الحالي الفعلي لا يُعرف إلا عن طريق القياس (مقياس التيار على مستوى ميكروأمبير)؛ قول الذكاء الاصطناعي "إنه يرسم ~2 μA في هذا الوضع" هو تخمين.

من منظور أمني، أصبحت الأجهزة المضمنة متصلة بالشبكة بشكل متزايد، كما أن نقاط الضعف في البرامج الثابتة (تجاوز سعة المخزن المؤقت، والإدخال غير المصادق عليه، والتشفير الضعيف، وواجهة تصحيح الأخطاء المفتوحة) تمثل مخاطر جسيمة. قد يذكرك الذكاء الاصطناعي بمبادئ الترميز الآمن، ولكن يتم التحقق من أمان التعليمات البرمجية التي تم إنشاؤها من خلال أدوات التحليل الثابتة ومراجعة التعليمات البرمجية واختبار الأمان عند الضرورة. في الأنظمة ذات الأهمية الحيوية للسلامة (الطبية والسيارات والصناعية) لا ينبغي أبدًا أن تحل مخرجات الذكاء الاصطناعي محل العمليات التي تتطلبها موافقة المهندس المختص ومعايير السلامة ذات الصلة (مثل IEC 61508 وISO 26262).

ثلاث حالات صغيرة

الحالة 1 - متغير مشترك غير محمي. يطلب المهندس رمز UART لتلقي التعليمات البرمجية من الذكاء الاصطناعي. يقوم الكود بزيادة عداد في ISR وتقرأ الحلقة الرئيسية هذا العداد؛ لكن العداد ليس متقلبًا والقراءة متعددة البايت ليست ذرية. يعمل الجهاز معظم الوقت، لكنه أحيانًا يخطئ في قراءة عدد البيانات ولا يمكن تكرار الخطأ. يكتشف التحليل الثابت ومراجعة التعليمات البرمجية العناصر المتقلبة المفقودة؛ يختفي الخطأ عندما يكون العداد محميًا. الدرس المستفاد: أخطاء التزامن متكررة وخبيثة في كود الذكاء الاصطناعي؛ فمن الضروري القراءة والتحقق.

الحالة 2 - بتة تسجيل خاطئة. يقوم المتدرب بتحميل رمز تهيئة ADC الذي تم إنشاؤه بواسطة الذكاء الاصطناعي؛ يقرأ ADC القيم غير المتوقعة. وبمقارنتها بورقة البيانات، يبدو أن الذكاء الاصطناعي قد قام بتعيين بت التكوين في الموقع الخطأ (خريطة لمتغير مختلف من الشريحة). بمجرد تصحيح البت، يعمل ADC بشكل صحيح. الدرس: التحقق من صحة كل تسجيل إملائي مقابل المتغير الصحيح لورقة البيانات.

الحالة 3 - الاستخدام الصحيح. يطلب أحد المهندسين من الذكاء الاصطناعي هيكلًا عظميًا لآلة الحالة لبروتوكول استشعار معقد؛ يصف الحالات والانتقالات وفروع المهلة. ينتج الذكاء الاصطناعي إطارًا نظيفًا وقابلاً للقراءة. يأخذ المهندس هذا الإطار، ويتحقق من الوصول إلى كل سجل باستخدام ورقة البيانات، ويقيس التوقيتات باستخدام راسم الذبذبات، ويختبره في الأجهزة. يتم الانتهاء من التطوير في بضع ساعات بدلاً من بضعة أيام. الدرس المستفاد: الذكاء الاصطناعي يسرع الهيكل العظمي؛ يقوم المهندس بالتحقق.

قوالب سريعة قابلة للنسخ

DRIVER SKELETON TEMPLATE"اكتب الهيكل العظمي لبرنامج تشغيل [I2C/SPI/UART] لـ [الشريحة/الطرفية]: وظائف التهيئة، والقراءة، والكتابة، ومعالجة الأخطاء. اترك عناوين التسجيل وحقول البت في PLACEHOLDER (على سبيل المثال REG_XXX) ولاحظ "ملءها والتحقق منها من ورقة البيانات". استخدم المهلة بدلاً من الانتظار المحظور. حدد ما تفترضه كل وظيفة باستخدام سطر تعليق."

قالب أمن ISR"اكتب مسودة روتين خدمة المقاطعة (ISR) للحدث التالي: [الحدث]. القواعد: اجعل ISR قصيرًا، لا تحظر، قم بوضع علامة على المتغيرات المشتركة مع الوصول الحيوي والذري، وقم بتفويض المهمة الطويلة إلى الحلقة الرئيسية بعلامة. في نهاية الكود، قم بتفصيل مكان تطبيق كل من هذه القواعد حتى أتمكن من التحقق."

STATE MACHINE TEMPLATE"اكتب هيكل آلة الحالة للبروتوكول/العملية التالية: [وصف الحالات والأحداث والانتقالات والمهلات]. حدد إجراءات الدخول/الخروج وفرع الخطأ/المهلة لكل حالة. اترك القيم الخاصة بالأجهزة (التسجيل والمدة) كعناصر نائبة ولاحظ أنه يجب التحقق منها."

قالب مراجعة الكود "افحص كود البرنامج الثابت التالي من منظور مضمن وقم بوضع علامة على المخاطر: متغير مشترك غير محمي (متقلب/ذري)، عملية طويلة/حظر في ISR، خطر تجاوز سعة المكدس، الانتظار بدون مهلة، تسجيل الأخطاء، موجز المراقبة. اقترح كيف يجب علي اختبار/التحقق من كل نتيجة. الكود: [لصق]."

موجه ضعيف / موجه قوي

مطالبة ضعيفة: "اكتب لي برنامج تشغيل UART."

مطالبة قوية: "اكتب إطار عمل برنامج تشغيل UART قائم على المقاطعة لـ [وحدة التحكم الدقيقة]. استخدم المخزن المؤقت الحلقي؛ احتفظ بـ ISR قصيرًا واكتب فقط إلى المخزن المؤقت، وقم بالمعالجة في الحلقة الرئيسية. اجعل الفهارس المشتركة متقلبة وذرية. اترك عناوين التسجيل في العناصر النائبة، وقم بوضع علامة عليها ليتم التحقق منها من ورقة البيانات. وفي نهاية الكود، قم بإدراج ما أحتاج إلى اختباره من حيث التزامن والتوقيت."

تؤدي المطالبة الضعيفة إلى إنتاج تعليمات برمجية تكون عمياء للأجهزة والتزامن؛ تفرض المطالبة القوية قواعد مضمنة وتطالب بقائمة التحقق.

طبقات التحقق من البرامج الثابتة

طبقة

ما يمسك

دور الذكاء الاصطناعي

فحص ورقة البيانات

تسجيل/بت خاطئ

يولد العنصر النائب ومذكرة التحكم

التحليل الثابت (لينتر)

متقلبة، اكتب، أخطاء الحدود

قائمة القواعد والشرح

تحذيرات المترجم

تحويل ضمني، قيمة غير مستخدمة

تعليق تحذيري

اختبار في الأجهزة

التوقيت والسلوك الفعلي

اقتراح سيناريو الاختبار

راسم الذبذبات/المحلل

دقة الإشارة والبروتوكول

نقطة القياس والموجة المتوقعة

تحذير: لا يعني مجرد "تجميع" البرنامج الثابت و"عمله معظم الوقت" أنه صحيح. تحدث أخطاء التزامن والتوقيت فقط في ظل ظروف معينة؛ ولهذا السبب لا غنى عن التحليل الثابت والاختبار الحقيقي في الأجهزة.

الأخطاء الشائعة

  • عدم حماية المتغيرات المشتركة. يجب أن تكون البيانات بين ISR والحلقة الرئيسية متطايرة وذرية.
  • عدم التحقق من عنوان التسجيل/البت باستخدام ورقة البيانات. قد يقوم الذكاء الاصطناعي بتعيين المتغير الخاطئ.
  • إبقاء ISR طويلًا أو حجبًا بداخله. لا يمكن للنظام الاستجابة، ويتم تفويت المقاطعات.
  • افتراض التوقيت دون القياس. الوقت الفعلي يعتمد على الأجهزة؛ تم التحقق منها باستخدام راسم الذبذبات.
  • ترك رمز الأمان/السلامة الحرجة للموافقة على الذكاء الاصطناعي. يعد المهندس المختص والعملية القياسية ذات الصلة أمرًا ضروريًا.

في ملخص

في هذه الوحدة، استخدمت الذكاء الاصطناعي كمسرّع قوي في إنشاء هيكل البرامج الثابتة وبرنامج التشغيل وجهاز الحالة ورسم ISR. ولكن في العالم المضمن، تتشابك التعليمات البرمجية مع الأجهزة والوقت الفعلي والأمان: يتم التحقق من قيم التسجيل/البت من ورقة البيانات، ويتم التحقق من التزامن من خلال التحليل الثابت، ويتم التحقق من التوقيت من راسم الذبذبات، ويتم التحقق من السلوك من خلال اختبار حقيقي في الأجهزة. يقوم الذكاء الاصطناعي بتسليم الهيكل العظمي في دقائق؛ يتحقق المهندس من عمل البرامج الثابتة بشكل صحيح وآمن وفي الوقت المحدد. في الأنظمة ذات الأهمية الحيوية للسلامة، لا تحل مخرجات الذكاء الاصطناعي محل عمليات معايير السلامة ذات الصلة وموافقة المهندس المختص.

مهمة التطبيق

حدد جهازًا طرفيًا (مثل مستشعر I2C). باستخدام قالب "الهيكل العظمي للسائق"، اطلب من الذكاء الاصطناعي الحصول على هيكل عظمي للسائق يترك السجلات في العناصر النائبة. ثم قم بإنشاء مخطط ISR للمقاطعة الجاهزة للبيانات من هذا المستشعر باستخدام قالب "أمن ISR". أخيرًا، قم بمسح الكود الذي ينتجه باستخدام قالب "مراجعة الكود" بحثًا عن المخاطر المضمنة واكتب ثلاث خطوات للتحقق/الاختبار على الأقل.

قائمة مرجعية

  • [ ] لقد قمت بالتحقق من كل عنوان تسجيل وبت من متغير ورقة البيانات الصحيح.
  • [ ] لقد جعلت المتغيرات المشتركة بين ISR والحلقة الرئيسية متطايرة وذرية.
  • [ ] لقد أبقيت ISR قصيرًا، ولم أقم بالحظر، وقمت بتسليم المهمة الطويلة إلى الحلقة الرئيسية.
  • [ ] لقد خططت لاختبار التوقيت والسلوك الفعلي في الأجهزة وباستخدام راسم الذبذبات.
  • [ ] لقد قمت بمسح الكود ضوئيًا باستخدام التحليل الثابت وتحذيرات المترجم.
  • [ ] لقد تركت الأجزاء الحساسة للأمان/السلامة لموافقة مهندس مختص والعملية القياسية ذات الصلة.