نقل برامج Windows إلى أنظمة التشغيل المضمنة/الحقيقية

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

  •  01-07-2019
  •  | 
  •  

سؤال

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

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

يمكن أن تكون الحفرة المحتملة عبارة عن اختلافات في التعامل مع IPC، ولكن بدون التعرض لمزيد من المعلومات، يكون من الصعب التعامل مع التفاصيل.

ملحوظة: على الرغم من أن Windows يعتمد حاليًا، إلا أنه لا يوجد استخدام مكثف بشكل خاص لـ Win32 API (COM بشكل أساسي) أو أنواع Windows.

شكرًا

يحرر::قاعدة التعليمات البرمجية هي C\C++

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

المحلول

إذا كنت تستخدم واجهة Windows COM (أفترض أنك لا تتحدث عن المنفذ التسلسلي هنا، ولكن عن نموذج الكائن المشترك)، فقد يلزم استخلاص التعليمات البرمجية الخاصة بك بعيدًا عن ذلك.

عندما تتحدث عن IPC، فمن الواضح أن هذه قاعدة كود من نوع متعدد المهام/متعدد المعالجة.في هذه الحالة، سيكون عليك أن تتوصل بطريقة ما إلى طريقة للتعامل مع اختلاف البيئة.

أولا وقبل كل شيء، أنت سوف تحتاج إلى نوع من RTOS نظرًا لأن تطبيقك متعدد المهام.نظرًا لأنك قمت بإنشاء منفذ لنظام Linux، فقد ترغب في النظر في استخدام إصدار Linux في الوقت الفعلي.سيؤدي هذا إلى تقليل عدد المنافذ التي يتعين عليك القيام بها.

إذا كنت لا ترغب في استخدام Linux كنظام أساسي مضمن، فاجعل الكود الخاص بك متوافقًا مع POSIX (Linux هو) وتأكد من أن نظام RTOS الذي تختاره يدعم POSIX.بهذه الطريقة، سيكون منفذ Linux والنظام الأساسي المضمن هو نفسه في الغالب.

خلاصة القول، سيكون COM هو طائر الباتروس الخاص بك.

نظرًا لأنك لم تذكر استخدام واجهة المستخدم الرسومية، فلن نتناول ذلك الذي - التي علبة من الديدان :)

نصائح أخرى

إذا كان التطبيق في الغالب C وposix، فهذا ليس بالأمر الصعب.يمكن أن تعني الأنظمة الأساسية المضمنة اليوم نسخة كاملة تقريبًا من XP أو Linux تعمل على بطاقة فلاش مدمجة.

بالنسبة لواجهة المستخدم الرسومية، يحتوي كل من QT وWX على إصدارات مضمنة ترسم عناصر واجهة المستخدم مباشرةً.

الخطوة الأكثر أهمية هي فصل جميع وظائف اعتماد نظام التشغيل عن منطق المشروع.

بعد القيام بذلك، سترى على الفور مقدار التعليمات البرمجية التي يتعين عليك نقلها للانتقال إلى نظام التشغيل الجديد، وستكون قادرًا على بدء النقل بشكل جيد.

يعتمد ذلك على إمكانيات النظام الأساسي المدمج لديك.إذا كان 8 بت، فلديك طريق صعب للأمام، ولكن إذا كان 32 بت مع ذاكرة وصول عشوائي مناسبة وما إلى ذلك، فهناك الكثير من المكتبات مفتوحة المصدر عبر الأنظمة الأساسية المتاحة.

إستعملت DirectFB بالنسبة لتطبيق واجهة المستخدم الرسومية المضمن الأخير، كان خفيف الوزن ولا بأس به ولكنه ليس متعدد المنصات.في المرة القادمة أعتقد أنني سأحاول wxWidgets.

لا أحب استخدام أدوات GNU dev على نظام Windows نظرًا لأن MS Dev Studio أفضل بكثير من أي أدوات GNU ولكنني بدأت اللعب بها مؤخرًا مطور سطح المكتب واسكانا والذي يعتمد على Eclipse وGCC وهو واعد.

إذا كنت في وضع يسمح لك بتحديد نظام التشغيل الحقيقي/المضمن الذي تستخدمه، فهل فكرت في نظام التشغيل Windows CE؟

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