مشروع إثبات مفهوم نظام الوقت الحقيقي

StackOverflow https://stackoverflow.com/questions/706706

  •  22-08-2019
  •  | 
  •  

سؤال

أنا أتلقى دورة تمهيدية (3 أشهر) حول تصميم أنظمة الوقت الفعلي، ولكن أي تنفيذ.

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

من فضلك، هل يمكن أن تعطيني فكرة؟شكرا لكم مقدما.

أنا أبرمج باستخدام TSQL وDelphi وC#، ولكن لن أواجه أي مشكلة في تعلم لغة أخرى.

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

المحلول

وحاول أن تفكر من المهام في الوقت الحقيقي التي هي في الوقت الحرج، على سبيل المثال الفيديو اللعب، الذي فشل إذا لم يتم الانتهاء من المهام (مثل حساب الإطار التالي) في الوقت المناسب.

ويمكنك أيضا أن نفكر في بعض الحلول الصناعية، لكنها على الأرجح أكثر صعوبة للدراسة في بيئة المحلية.

نصائح أخرى

وأقترح عليك النظر في استكشاف في الوقت الحقيقي ومواصفات جافا (RTSJ) . في حين أنها ليست البيئة التقليدية لبناء البرمجيات في الوقت الحقيقي، هو عبارة عن تقنية الصعود ويأتي مع الكثير من الاهتمام. حتى أفضل، يمكنك تشهد بعض الجدل الدائر حول ما يهم وما لا يصلح في أنظمة الوقت الحقيقي.

JavaRTS هو متاح مجانا للتحميل، وبعض مظاهرات مثيرة للاهتمام المتاحة لإظهار السلوك القطعية، وتبين من جامع RT القمامة الخاصة بهم.

وعلى صعيد مشروع معين، وأنا أقترح عليك أن تبدأ بسيطة: 1) بناء عمل المولدات التي يمكنك ضبط لتستهلك كمية معينة من الوقت وحدة المعالجة المركزية. 2) ضع هذا في الإطار الذي يمكن أن يؤدي إلى توزيع مهام العمل مولد (كما الخيوط، أو قطع من العمل المنجز في موضوع)، وآلية لتسجيل العمل المنتج. 3) إنتاج الخرائط من وقت التنفيذ، والوقت الإقامة، والموعد النهائي، الترهل / تجاوز هذه المهام مقابل أولوياتها. 4) إثبات أن المهام قيد التشغيل في سياق المواضيع في الوقت الحقيقي (نائب مشاركة الوقت) تتصرف بشكل مختلف.

ونقاط مكافأة إذا يمكنك قياس النفقات العامة في جدولة عن طريق تحديد في ما زودت الحمل (إجمالي وقت وحدة المعالجة المركزية التي تنتجها المهام مولد عملك مقسوما الوقت الجدار الساعة) المهام الخاصة بك تبدأ المواعيد في عداد المفقودين.

يجب عليك بالتأكيد أن تفكر في بناء نظامك باستخدام لوحة تطوير الأجهزة المجهزة بمعالج صغير (ARM، PIC، AVR، أي شخص سيفي بالغرض).لقد ساعد هذا حقًا في إزالة خوفي من المستوى المنخفض عندما بدأت في التطوير.سيتعين عليك استخدام C أو C++ بالرغم من ذلك.

سيكون لديك بعد ذلك بديلان:إما أن تستخدم نظام التشغيل المعدني، أو تستخدم نظام تشغيل في الوقت الفعلي.

الذهاب المعدن العاري، يمكنك أن تتعلم:

  • كيفية تهيئة المعالج الخاص بك من الصفر والأهم من ذلك كيفية استخدام المقاطعات، وهي أسرع طريقة لديك للاستجابة لحدث خارجي
  • كيفية تنفيذ سلاسل رسائل خفيفة الوزن مع تبديل سريع للسياق، وهو أمر ينفذه كل نظام تشغيل في الوقت الفعلي
  • لتسهيل الأمر قليلًا، ابحث عن مجموعة أدوات التطوير التي تأتي مع الكثير من الوثائق وكود المصدر.لقد استخدمت لوحات Embedded Artists ARM وهي توفر لك الكثير من المواد.

الذهاب مع نظام التشغيل RT:

  • ستقوم بتسريع مشروعك، وستكون قادرًا على تعلم كيفية ضبط نظام تشغيل RT
  • يمكنك تجربة استخدام نظام تشغيل مفتوح المصدر، مثل Linux أو BSDs، وتعلم الكثير من التعليمات البرمجية المصدرية

يعد أي من الخيارين جيدًا، وستحصل على مشروع عملي رائع حقًا لتتباهى به ونأمل أن تفهم مواد الدورة التدريبية الخاصة بك بشكل أفضل.حظ سعيد!

وكما لا تزال تنفذ معظم النظم الحقيقي في C أو C ++ قد تكون جيدة لصقل معرفتك هذه لغات البرمجة. هي جزء لا يتجزأ العديد من النظم الحقيقي أيضا النظم، لذلك قد ترغب للعب مع حولها مصدرا رخيصا واحد مفتوح مثل BeagleBoard ( HTTP: // beagleboard كافيه / ). هذا وسوف تعطيك أيضا فرصة للتعرف عبر تجميع الخ.

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