مشروع مفتوح لوحدة التحكم في المحرك الكهربائي. تكنولوجيا تطوير البرمجيات


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

هيكل الإطار.


تم تصميم الإطار للعمل على المنصة المفتوحة لوحدة التحكم في المحركات العالمية DMC v2.0 .

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


(اضغط للتكبير)

لا يحتوي الإطار على إصدارات ، فهو قيد التطوير المستمر ، وهنا حاولت فقط إصلاح حالته الحالية ، والتي يتم نشرها على GitHub.

من وجهة نظر وحدات البرامج ، يحتوي الإطار على الأجزاء الرئيسية التالية:

- مجموعة من وحدات دعم مستوى التطبيق
- نظام تشغيل في الوقت الحقيقي MQX .
- البرامج الوسيطة: نظام الملفات ، وصدفة الأوامر ، ومكدسات بروتوكول الاتصال ، وما إلى ذلك.
- حزمة دعم منخفضة المستوى للوحة (BSP) ، والتي تتضمن الوصول إلى الأجهزة الطرفية لوحدة BLEZ66V1 ووحدة الطاقة.
- حزمة برمجيات للرصد والتصحيح والتشخيص - FreeMaster .
- أدوات التصحيح بما في ذلك RTT ، تتبع أداة ITM ، أجهزة تسجيل ، محطة VT100 .
- وحدة لتوليد ملفات المعلمات.
- وحدات من رموز المصدر المولدة على أساس الخوارزميات في Matlab .

لماذا يتم اختيار MQX؟


نظام التشغيل في الوقت الحقيقي (RTOS) MQX معروف منذ فترة طويلة ، ولكن
ظهرت في المجال العام قبل بضع سنوات. تم تحميل نظام التشغيل هذا بواسطة Freescal قبل شرائها NXP. كان لدى RTOS في البداية ترخيص للاستخدام فقط في وحدات التحكم الدقيقة Freescale ، والآن يمتد الترخيص أيضًا إلى منتجات NXP. نجت RTOS من الشعبية المتفجرة ، مرت بعدة ترقيات للإصدار 4.2 ، وبعد ذلك قررت Freescale جعل إصداراتها اللاحقة تجارية مرة أخرى. لذلك اتضح إصداران ، أحدهما مفتوح ومجمد في التطوير يسمى MQX Classic (المعروف أيضًا باسم MQX v4.2) و MQX 5.0 التجاري مغلق.

في الإطار الموصوف ، يتم استخدام فرع MQX Classic v4.2. هذه نسخة مستقرة ومختبرة بشكل جيد. يسمح الترخيص للمطور بتعديل كود المصدر لـ MQX Classic واستخدامه في المنتجات التجارية ، ومع ذلك ، فإنه لا يسمح بنشر MQX Classic في شكل المصدر. ولكن لا ينبغي أن يكون هذا مشكلة ، لأن MQX Classic متاح للتنزيل مجانًا.

يبدو هيكل RTOS بشكل عام كما يلي:



لماذا أحتاج إلى RTOS؟


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

على سبيل المثال ، يمكن لمهمة المُسجل لدينا محاولة كتابة رسالة طالما كانت مطلوبة على بطاقة SD في انتظار استجابتها ، يمكن أن تذهب مهمة USB في نقل كمية كبيرة من البيانات إلى جهاز كمبيوتر ، ولكن في نفس الوقت سيتم تنفيذ مهمة PID لخوارزمية المحرك بدقة في فاصل زمني محدد ، ومهمة قياس السرعة لن يفوت التدوير حدث تغيير إشارة تشفير واحد.

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

المزايا الرئيسية لـ RTOS MQX.

- نواة النظام تأتي مع مجموعة واسعة من البرامج الوسيطة بما في ذلك نظام الملفات ، مكدس TCP / IP ، مكدس USB ، غلاف الأوامر ، إلخ. كل شيء في كود المصدر.

- مجموعات BSP جاهزة للوحات مختلفة ، مما يلغي الحاجة إلى كتابة مكتبات العمل الطرفية الخاصة بك.
- توثيق مفصل في ملفات pdf مع سهولة التنقل.
- وجود مكون إضافي لمنضدة العمل المضمنة IDE IAR بمعلومات مفصلة للغاية حول الهياكل الداخلية لـ RTOS ، أكثر تفصيلاً بكثير من غيرها من RTOS المعروفة - uCOS و FreeRTOS.
- الكثير من أمثلة تطبيق RTOS وحالات الاختبار.

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

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

يوجد أدناه جدول لوقت تنفيذ الخدمات على وحدة التحكم الدقيقة في وحدة التحكم في المحرك الخاصة بنا ، مع الحد الأقصى من التحسين لسرعة تنفيذ التعليمات البرمجية المدرجة في المترجم.

توقيت تنفيذ الخدمة RTOS MQX Classic




يقدم الجدول أيضًا فكرة عن الخدمات التي يدعمها RTOS وخيارات النواة المتوفرة. يتم تضمين مشروع الاختبار في IDE IAR في الإطار المنشور.

تكوين دليل المشروع


يبدو الدليل الجذر لإطار العمل كما يلي:


APP_SRC - دليل يحتوي على جميع المصادر باستثناء تلك التي تنتمي إلى توزيع MQX.
FreeMaster_apps - ملفات المشروع للتنفيذ في بيئة FreeMaster .
IAR_proj - ملفات مساحة العمل والمشاريع لطاولة العمل المضمنة في IAR لبيئة ARM v7.70.2. في هذه البيئة ، يتم تصنيف التطبيق النهائي وتصحيحه.
MQX_SRC هو دليل يحتوي على جميع مصادر MQX والوسيطة الموردة مع MQX. نظرًا لأن الترخيص لا يسمح بالنشر مفتوح المصدر من توزيع MQX ، فلا توجد ملفات " .s" و " .s" في هذا الدليل. ولكن قد يتم إرسال الملفات المفقودة إلى أولئك الذين يوافقون على شروط ترخيص NXP.
ParametersManager - دليل برنامج إدارة المعلمات. باستخدام هذا البرنامج ، يتم إنشاء قوائم معلمات التطبيق ويتم إنشاء ملفات " .s" و " .h" بإعلانات معلمات للتضمين في التطبيق.
الاختبارات - دليل بمشاريع اختبار الإطار. هنا هو مشروع MQX_benchmark لإنشاء تقرير مع توقيتات MQX.

الملفات MQX_LIBRARY_O0.a و MQX_LIBRARY_O3.a هي محتويات دليل MQX_SRC الذي تم تجميعه في مكتبات مع الحد الأدنى من التحسين والحد الأقصى من التحسين ، على التوالي.

محتويات دليل IAR_proj



ملفات U3HB_full.eww و U3HB_MQXLib.eww هي ملفات مساحة عمل IAR .
طالما لا توجد مصادر في دليل MQX ، سيعمل ملف U3HB_MQXLib.eww فقط. تستخدم مساحة العمل مكتبات MQX المترجمة. يتم تجميع مصادر MQX الكاملة في مساحة العمل U3HB_full.eww . يعمل دليل OUT كمكان تضع فيه IAR منتجات عملها ، ولا سيما ملفات الخرائط والملفات السداسية.

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

ملف INT_FLASH_MK66FX1M0LVQ18.icf هو ملف تكوين رابط IAR. يحدد عناوين مناطق الذاكرة حيث يضع الرابط الكود ، البيانات ، ناقلات المقاطعة ، المكدس ، إلخ.

محتويات دليل MQX_SRC



يتم استخدام ملفات مساحة العمل MQX_LIBRARY.eww لإنشاء مكتبات MQX. حتى يتم وضع ملفات " .s " و " .s" في الدلائل ، لن يتم تجميع هذا المشروع.
config - الدليل الذي يحتوي على ملفات تهيئة MQX. يتم تحديد تكوين خدمات وبرامج تشغيل MQX في ملف التكوين user_config.h .
mfs - نظام الملفات MQX ، يتضمن FAT32 و RAM FS
mqx - يشمل جوهر MQX الدلائل الفرعية التالية:


rtcs - مكدس TCP / IP. يتضمن الدلائل الفرعية التالية:


shell - دليل يحتوي على ملفات shell.
USB - دليل مع ملفات مكدس USB

تم توثيق وظائف كل وحدة برنامج MQX بشكل جيد من قبل الشركة المصنعة. كمثال ، سأقدم روابط لوثيقتين:

تعليمات استخدام MQX .
دليل مرجعي MQX.
يجب البحث عن الباقي في التوزيع ، والذي يتوفر على موقع NXP .

الإطار نفسه موجود في المستودع هنا .

يمكن العثور على وصف إضافي للعمل مع أمثلة البرامج والتطبيقات في المقالات التالية.

Source: https://habr.com/ru/post/ar403525/


All Articles