سيتعلق الأمر باستخدام طرازات ليست من أبسط الأجهزة ، مثل ، على سبيل المثال ، SoC (نظام على رقاقة) أو لوحات الدوائر المطبوعة مع العديد من الأجهزة المدمجة على متنها. في تطوير هذه الأجهزة نفسها ، يمكن التمييز بين مرحلتين. تم تطوير الجهاز أولاً. هذه عملية بطيئة - يمكن أن تستغرق سنة أو أكثر.
بعد ظهور المراجعة الأولى للجهاز الفعلي وإجراء الفحوصات الأساسية ، يتم نقل الجهاز إلى مطوري البرامج. من هذه اللحظة ، تبدأ المرحلة الثانية - تطوير برنامج للجهاز. يمكن أن تكون هذه البرامج الثابتة ، BIOS ، BSP / CSP (حزمة دعم اللوحة ووحدة المعالجة المركزية) لأنظمة التشغيل المختلفة ، وكذلك برامج التشغيل.
بالمناسبة ، في تطوير الرقائق ، والتي تسمى غالبًا "السيليكون" ، تسمى هذه المراحل "ما قبل السيليكون" و "ما بعد السيليكون" أو ببساطة "السيليكون".
من الناحية النظرية ، يمكن تطوير البرامج قبل ظهور جهاز مادي. ومع ذلك ، في الممارسة العملية ، القليل جدا يفعل. التطوير بدون إمكانية الإطلاق الوسيط وتصحيح الأخطاء ، وهذا هو بالضبط ما هو مطلوب من أجله الجهاز ، هو عمل مكروه للغاية ، لقد قابلت القليل من هؤلاء الماسوشيين. الجميع ينتظر "الأجهزة" ، لكنها ، كما كتبت أعلاه ، ستظهر فقط في غضون عام.
إلى جانب ذلك ، هناك مشكلة أخرى في الجهاز. يتم إصدار النسخة الأولى في إصدار محدود ويتم توزيع قطعة واحدة في كل مرة. ببساطة ، لا توجد لوحات ورقائق كافية للجميع. هناك طوابير ، صراعات ، الأمر يتعلق بالاعتداء. وإذا قمت بحرق جهاز عن طريق الخطأ ، وهو أمر سهل للغاية ، فحينئذٍ تتوقف جميع عمليات التطوير حتى يتم العثور على جهاز آخر. في كثير من الأحيان لا يتم العثور عليها ، من الضروري إنتاج واحدة جديدة ، ثم انتظار التسليم. هذا يبطئ العملية بشكل كبير.
ومن ثم تأتي أجهزة المحاكاة لمساعدة مطوري البرمجيات!
يبدأ إنشاء نموذج جهاز افتراضي بالتزامن مع تصميم الجهاز الفعلي. ولكن نظرًا لأن إنشاء نموذج وإصداره أسهل بكثير ، فإن الإصدارات الأولى من هذه النماذج لا تظهر تقليديًا في غضون عام ، ولكن قبل ذلك بكثير. باستخدام مثل هذه النماذج ، يمكن لمطوري البرامج بدء مهامهم على الفور دون انتظار "الأجهزة".
نعم ، لن تكون هناك جميع الوظائف ، لكن المبرمجين في المراحل الأولى لا يحتاجون إليها كلها. حتى يتم تصنيع الجهاز ، يجب أن يكون لدى فرق المهندسين المعماريين والمصممين ومطوري البرمجيات خطط واضحة ومتسقة تعكس الوظائف المحددة التي يجب القيام بها في أي مرحلة. في كل تكرار ومع كل مرحلة ، ينمو النموذج الافتراضي بوظائف إضافية ، والتي بدورها يستخدمها مطورو البرامج لكتابة برنامج تشغيل أو إنشاء برنامج ثابت لهذه الوظيفة المعينة.
في هذا النهج ، يستخدم مطورو النماذج والبرامج المواصفات المشتركة. من خلال تشغيل البرامج على نموذج ، فإنهم في الواقع يختبرون عمل بعضهم البعض.
ميزة إضافية هي التحقق من صحة "الأجهزة" على الرغم من حقيقة أن الأجهزة نفسها ليست موجودة حتى الآن. يبدو الأمر مفاجئًا للوهلة الأولى ، لكننا هنا نتحدث عن أخطاء معمارية في تصميم الجهاز ، يمكن اكتشاف بعضها عند تشغيل برنامج على أحد الطرازات. وهذا رائع جدًا لأنه من الممكن إصلاح هذه الأخطاء في الأجهزة قبل إصدارها. وإلا فإن هذه الأخطاء ستؤدي إلى الحاجة إلى إعادة إصدار المراجعات التالية ، وهذه متعة باهظة الثمن.
كانت لدينا حالة عندما تم تنفيذ 10 كتل لمعالجة تدفق البيانات الواردة في جهاز معقد ، وسمحت لنا سجلات التحكم والإدارة بالعمل مع نصفها فقط. تم تنفيذ هذا في الإصدار السابق من الجهاز ، ونسي المهندسون المعماريون ببساطة توسيع هذا الجزء. عندما أنشأنا النموذج وقام الفريق الآخر بكتابة وتشغيل برنامج التشغيل ، سرعان ما تبين أن جميع الوظائف المتقدمة لم تكن متاحة. تم تصحيح البنية والمواصفات في الوقت المناسب قبل إنشاء النموذج الأولي المادي للجهاز.
يمكن لشركات الأجهزة الكبيرة دعم نظام بيئي كامل مبني حول منتجاتها. يتضمن هذا النظام البيئي العديد من الشركات الأخرى ، بما في ذلك تلك التي تنتج برامج لهذه المعدات. على سبيل المثال ، يمكن أن تكون هذه الشركات المصنعة لـ BIOS ، ما يسمى بـ IBV (بائعو BIOS المستقلون) ، وأشهرهم AMI و Insyde و Phoenix. تتلقى هذه الشركات أيضًا نماذج من الشركة المصنعة للأجهزة وتبدأ في التطوير قبل ظهور الجهاز الفعلي. على سبيل المثال ، بالنسبة لمنصات Intel ، يتم استخدام محاكي Simics ، والذي يمكن قراءته بمزيد من التفصيل في مقالة شركاء النظام الإيكولوجي Shift Left مع Intel من أجل Faster Time-to-Market .
من الواضح أن إنشاء النماذج يتطلب تكاليف إضافية. يعتمد مقدار التكاليف ، بالطبع ، على نوع النماذج (وظيفية ، لكل دورة ، وما إلى ذلك) ، ولكن بشكل عام ، يمكن افتراض أن تكلفة إنشاء نموذج مساوية تقريبًا لتكلفة كتابة البرنامج للجهاز. ليست كل الشركات على استعداد لدفع هذا السعر مقابل إصدار سابق ، وهذا هو السبب في أن هذا النهج شائع في الشركات الكبيرة. لديهم ميزانيات كافية لذلك ، والإطلاق المبكر لمنتج في السوق يزيد دخلهم بشكل كبير. على الرغم من وجود اتجاه مؤخرًا نحو استخدام أجهزة المحاكاة على نطاق واسع لتطوير البرمجيات وفي الشركات الصغيرة.
في كثير من الأحيان ، لتقليل التكاليف ، لا يقوم النموذج بتنفيذ جميع الوظائف الممكنة ، ولكن فقط الحد الأدنى اللازم لسيناريوهات معينة لاستخدام الجهاز. على سبيل المثال ، إذا لم يكن من المخطط استخدام جهاز الشبكة في شبكات VLAN ، ولكن فقط لتحديث البرنامج الثابت والتنزيل عبر tftp ، فليس من الضروري تنفيذ منطق بعلامات VLAN ، ولكن يجب تنفيذ وظائف سيناريوهات تمهيد الجهاز عبر الشبكة وتحديثات البرامج الثابتة بالكامل الصوت.
ما هي النتيجة النهائية؟
إذا افترضنا أن وقت تطوير الأجهزة والبرامج متساوٍ تقريبًا مع بعضهما البعض (انظر الصورة أعلاه) ، فإن استخدام النماذج يمكن أن يقلل بشكل كبير ، تقريبًا مرتين ، من الوقت اللازم لتسويق منتج (ما يسمى TTM - وقت التسويق) ، حيث يتم تطوير "الأجهزة" والبرمجيات بالتوازي وليس بالتتابع. لهذا ، غالبًا ما يتم استخدام مصطلح Shift Left ، والذي جاء من مجال الاختبار ، حيث يعني الاختبار في أقرب وقت ممكن. ينطبق المصطلح نفسه على تطوير البرامج ، والذي يبدو أنه يتحول إلى اليسار في المخطط الزمني عند تنفيذه على جهاز المحاكاة.
بحلول الوقت الذي تظهر فيه المراجعة الأولى للجهاز ، كل ما تبقى هو التحقق من وظائف البرنامج على الأجهزة الحقيقية. من الناحية المثالية ، يجب ألا تكون الأخطاء والإصلاحات كبيرة ولا تؤدي هذه المرحلة إلى تأخيرات كبيرة ، حيث تم بالفعل كتابة الكود وتصحيحه على النموذج.
هذا النهج ليس "مجانيًا" ، فهو يتطلب ميزانية إضافية وفريقًا من المبرمجين ، لذلك عليك أن تفهم بوضوح المبلغ الذي ستدفعه هذه التكاليف في حالة أو أخرى.
هذه ليست حالة الاستخدام الوحيدة لأجهزة المحاكاة. سأتحدث عن البحث المعماري وخلق بيئات معقدة في المقالات التالية. لا تقم بالتبديل.