سؤال

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

لقد كنت أبحث عن نوع من مشروع اللغة المفسر لـ Freertos من شأنه أن يتيح لنا تنفيذ ميزات جديدة على مستوى أعلى. من الناحية المثالية ، أود أن أحصل على الأمور في نهاية المطاف حتى تصبح الأجهزة أقرب إلى أجهزة الكمبيوتر العامة معنا في كتابة برامج التشغيل ، بدلاً من الاضطرار إلى تنفيذ كل ميزة لأنفسنا.

هل هناك أي مشاريع Freertos تفسر Java أو Python أو Bytecode مماثلة؟

لقد نظرت إلى Google ، لكن بما أنني لست مهندسًا للبرامج الثابتة ، لست متأكدًا مما إذا كنت أبحث عن الكلمات الرئيسية المناسبة.

شكرا لكم جميعا

هل كانت مفيدة؟

المحلول

لا أعتقد أن RTOs ، أو حتى نظام التشغيل ، مهم جدًا هنا إذا كان الرمز محمولًا. اعتمادًا على مخطط الإدخال والإخراج الخاص بك ، ربما ستحتاج إلى القيام ببعض النقل.

فيما يتعلق بلغات البرمجة النصية القابلة للتضمين ، فإن 2 أنا على دراية بها لوا و بيدق.

أعتقد أن هناك إصدارات من Python وغيرها من اللغات التي يتم نقلها إلى أنظمة مضمنة ، لكنها تميل إلى أن تكون مجموعة Linux المضمنة. اعتمادًا على النظام الأساسي الخاص بك (لا توجد فكرة عما إذا كان MCU صغيرًا مع 8K ROM أو جهاز كمبيوتر مدمج) قد يكون خيارًا.

نصائح أخرى

لا توجد لغات مفصلة هناك "مصنوعة" لاستخدام Freertos ، أو أي مكتبة خيوط متحكم أخرى (تسمى بشكل فضفاض "RTOs" داخل مجتمع E2E).

ومع ذلك ، فإن اللغات التي لديّ خبرة مباشرة في استخدام الأنظمة المضمنة التي تتم كتابة (أ) مكتوبة في C ، و (ب) صغيرة بما يكفي لتضمين في متحكم: تشمل:

  • لوا (مناسبة لأي شيء تقريبًا ، حتى بعض الصور)
  • بيثون (مناسبة لمعظم بنيات الذراع ، على أي حال ، مع أكثر من 1 ميجابايت ذاكرة الوصول العشوائي)

ليس لدي تجربة مباشرة معها ، لكن روبي قد يكون من السهل تضمينه مثل بيثون.

بدلاً من البحث عن المترجمين المترجمين الخاصين Freertos ، قد تحاول البحث عن أي مترجمين من متحكم خاص بك ، أو متحكم بشكل عام. قد يكون من الممكن توزيعها مع Freertos أو تحويل المترجم المترجم إلى مهمة.

يبدو أن هناك شخص يحاول الذهاب إليه لوا على Freertos (PIC32).

أعتقد أن سؤالك يتلخص في النهاية في إيجاد طرق لزيادة مستوى التجريد فوق آليات RTOs منخفضة المستوى. على الرغم من أنه من الصحيح أن اللغات المفسرة تعمل بمستوى أعلى إلى حد ما من التجريد من C ، إلا أنه يمكنك فعل أفضل بكثير من ذلك من خلال تطبيق الأساليب على أساس الأطر القائمة على الحدث وآلات الدولة. كانت هذه الأطر القائمة على الحدث موجودة منذ عقود وقد أثبتت في عدد لا يحصى من أنظمة مضمنة في جميع أنواع المجالات. اليوم ، تحتوي كل أداة نمذجة تقريبًا للأنظمة المدمجة القادرة على جيل الكود (على سبيل المثال ، RT RALL-ROSE RT ، Rhapsody ، وما إلى ذلك) ، تحتوي على متغير من إطار عمل الحالة.

ولكن يمكن استخدام أطر عمل الحدث المدفوعة بالأحداث أيضًا بدون أدوات كبيرة. على سبيل المثال ، تقوم أطر آلة QP State Machine (State-Machine.com) ، بكل ما يمكن أن تقوم به RTOs التقليدية ، بشكل أكثر كفاءة ، بالإضافة إلى العديد من الأشياء التي لا يمكن لـ RTOs.

عندما تبدأ في استخدام نموذج البرمجة الحديثة التي تعتمد على الأحداث مع آلات الدولة ، ستتغير مشاكلك. لن تكافح بعد الآن مع 15 مستوى من البيانات المعقدة IF-ELSE ، وسوف تتوقف عن القلق بشأن Semaphores أو آليات RTOs منخفضة المستوى. بدلاً من ذلك ، ستبدأ في التفكير في مستوى أعلى من التجريد حول آلات الدولة والأحداث التي تم تبادلها بينها. بعد تجربة هذه القفزة الكمومية ، لن ترغب أبدًا في العودة إلى RAW RTOs ورمز السباغيتي.

Miro Samek ، State-Machine.com

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top