close
menu
 Walid Amriou

The website and the blog of Walid Amriou

You can use the translate tool

ما تحدثت عنه في محاضرتي حول أنظمة تشغيل الوقت الحقيقي في جامعة المسيلة الجزائرية بقسم الإلكترونيك أمام طلبة تخصص الأنظمة المدمجة يوم 11 نوفمبر 2018


الوصف بالإنجليزية: 
This is what I talked about in my lecture about the operation of real-time systems at the University of Algerian gas electronics department to the students of Embedded Systems on November 11, 2018
 
ما أكتبه الآن قمت بالحديث عنه في يوم الأربعاء 28 نوفمبر بداية من الساعة 10:15 صباحا إلى 11:00 صباحا.





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



والسؤال الذي طرحته الذي يشمل كل المحاضرة هو " ماهو نظام التشغيل الوقت الحقيقي؟ وكيف نقوم ببناء أجهزة أنظمة مدمجة تعمل به ؟ ". 

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


لكن ماذا لو كان ما سنقوم به هو نظام معقد من المهام مثل التواصل مع الذاكرة والقيام بإتصالات في نفس الوقت عبر الويفي والبلوتوث وإستقبال بيانات من الحساسات وغيرها فنحن سنكون في مشاكل كبيرة تتعلق بأنه يجب أن تعمل كل هذه الأشياء في نفس الوقت وهنا نحن نتاج لبناء كود برمجي قادر على القيام بتعدد المهام بسهولة، ولكن لكي لا نعيد إختراع العجلة فقد طورت البشرية شيئا يمكن يساعدك بشدة لخلق ذلك وهو ما يسمى بنظام التشغيل أو إختصارا OS حيث سيقوم بالعديد من المهام نيابتا عنك وأنت ما عليك سوى أن تأمره بذلك، فمثلا كانت لدي مشروع صغير يهتم بنقل البيانات من الأندرويد إلى الأردوينو مربوط بكابل USB مع كمبيوتر يعمل بوينداوز وذلك عبر لغة البرمجة جافا والبيانات هي عبارة عن أوامر فقط خاصة بتشغيل مصباح صغير، والشرط كان يجب أن يتم الإتصال عبر الويفي، فهنا نحن نحتاج لخاصية تعدد المهام وذلك لأن البرنامج أو الكود البرمجي الموجود في الكمبيوتر يحتاج لإنتظار البيانات القادمة من جهاز الأندرويد عبر الويفي وأيضا يحتاج للقيام بالمهام الإعتيادية الخاص به هو جعل التطبيق يعمل والشيء المتزامن معه هو أنه ينتظر في بيانات من الأندرويد الذي يحتاج إلى نقله مباشرة نحو الأندرويد ولذلك إستخدمت شيئا يسمى في Runnable  الجافا،  وهو يجعل الواجهة البرمجية تعمل وفي نفس الوقت يقوم بالمهام الأخرى. 
لمعلومات أكثر حول Runnable إضغط في الرابط التالي: الرابط 
ماذا لو كنت ما أقوم به حساس جدا للزمن، بمعنى أنني مثلا أتعامل مع مهام يمكن لتأخرها أن يشكل خطرا حقيقيا، فهنا نحتاج إلى نظام تشغيل قادر على التفاعل مع الزمن ويعتبره بالأهمية الكبيرة وهذا ما يسمى ب Real Time OS وأختصره ب RTOS، ونعني به أنه نظام تشغيل على دراية بكل الأحداث التي ستحدث في النظام أي أنه قادر على التنبئ بالأحداث ومن ثم يقوم درجة من الأهمية لكل حدث لكي يقوم المعالج في وقت مناسب جدا بجعل ذلك الحدث فعال. وأبسط الأمثلة على ذلك هو ما يحدث في التلفاز حيث هناك أهمية كبيرة لكي تصلك الصورة والصوت في نفس الوقت وإلا أصبحت هناك مشاكل وستشعر بالإضطراب، ولأنني أحب الموسيقى فالمثال الثاني يتعلق بالأولكيسترات فمثلا لنتخيل أن فرقة موسيقية عدد أفرادها 50 شخص وهم يجلسون بتوزيع معين فهنا نحتاج لأن يكونوا في درجة عالية من التزامن وإلا أصبح الصوت حقا مزعج ومنه فنحن نحتاج لتحقيق فكرة أن نقوم ببث الصوت في المكبرات في وقت معين ومخصص حتى تصل جميع الأصوات بشكل متزامن. 

قبل أن ننتقل لفكرة لينكس وغيرها، نحتاج لمعرفة معنى النواة أو الكرنل، ولهذا سيفيدك هذا الرابط: نواة نظام التشغيل  وستجد هنا شرحا حول الفرق بين أنواع الكرنل: ماهو الكرنل  

لقد سبق وشرحت في مقال الفرق بين وينداوز ولينكس ومميزات لينكس بشكل غير مباشر، ففي المحاضرة قمت بالحديث عن ذلك بشكل مسهب ولكن يمكنك لمقالي السابق للقراء أن يكون أفضل من ذلك: رابط المقال   وهذه عناوين النقاط التي تحدثت عنها في المحاضرة: 

 ولأنني في شرح أوت 2018 إنتقلت إلى وينداوز 10 في حاسوبي اللابتوب ولكن بقيت في الكمبيوتر المكتبي على لينكس لذلك ولأن شرحي كان عبر حاسوبي اللابتوب فأنا إستخدمت فكرة رائعة من ميكروسوفت وهي عبر دمج ال bash الخاص بأنظمة عديدة منها أوبنتو في وينداوز 10 ويمكن أن تجدها في متجر ميكروسوفت للتطبيقات: 



ويمكنك الحصول عليه بشكل مباشر من متجر ميكروسوفت في حالة إستخدامك لوينداوز 10 عبر الرابط التالي: رابط تطبيق ubuntu bash في متجر ميكروسوفت 

ولكي نرى قوة لينكس في مجال الأنظمة المدمجة، لدي مثال صغير يختص بنقل البيانات من الأردوينو وتسجليها في ملف text ففي حالة وينداوز نحن سنتعامل مع الأردوينو بأنه يتواصل عبر usb لذلك نحتاج لمكتبات مختصة بالتعامل مع الأشياء التي هي في وضع serial ومنه فمثلا في الجافا سيكون الكود الذي نكتبه طويلا جدا، وستحتاج للقيام بعمل الفكرة التي قلتها لك سابقا بخصوص تعدد المهام أي يجب أن تفكر كثير للقيام بذلك، ولكن على لينكس يمكنك القيام بذلك بكود بسيط بلغة bash حيث لن يتجاوز ال 3 أسطر. فمثلا أريد أن أقوم بنسخ نتيجة هذا الكود الذي سيعمل في الأردوينو: 



حيث ما سأجده في الملف ال Text  هو شيء مثل هذا: 



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


 فبسبب أن لينكس يرى الأجهزة وكل شيء كملفات فنحن لدينا القدرة على القيام بعملية " نسخ لصق " البسيطة لكي شيء، فمثلا في حالتنا البيانات تصل من الأردوينو عبر البوابة ttys3 في حالتي فأنا ببساطة سأقوم بإستخدام الأمر cat لكي أنسخ البوابة التي أراها كملف وأضعها في الملف النصي وأضع هذا في حلق لا تنتهي حتى أقوم بغلق النافذة أو الضغط على الكنترول سي أما السطر الأول فهو يعرف سرعة نقل البيانات في البوابة فقط، إنه حقا أمر مذهل جدا. وقد كان لدى شخص ما مشكلة في نسخ قرص CD محمي من النسخ وقد سألني كيف يقوم بذلك لأن جميع الطرق لم تنفع في وينداوز، فقمت بنسخ القرص له إلى ملف iso بسطر واحد في Terminal / bash وهو: 

sudo cat /dev/sr0 > /home/walid/MRI_image.iso

حيث لنتخيل أن ذلك القرص يحتوي على صور طبية رنين مغناطيسي والقرص يراه لينكس كملف موجود في المسار /dev/sr0 فهنا ما أقوم به هو أمر بسيط وهو نسخ ما يوجد في المسار بشكل مباشر إلى مسار آخر عبارة عن ملف آخر بصيغة أنا أختراها ويمكننا حتى حفظه في مسار من نوع .png إذا أردت ذلك أو حتى كأنه ملف صوتي ولكنه نسخة عن القرص.  


ولمن يريد أن يتعلم أكثر حول ال bash الخاص بلينكس فهناك كتاب رائع إسمه " سطر أوامر لينكس " وهو باللغة العربية وهو موجود بشكل مجاني من هنا: رابط التحميل

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

 
ويمكنك أولا تثبيت نظام أوبنتو: يمكنك إتباع هذا الشرح
ومن ثم تقوم بتثبيت باتش فوق النظام: شرح تثبيت باتش RTOS فوق أوبنتو 
وستجد الشرح في الجواب الأول: 


 بعد ذلك إنتقلت للحديث عن FreeRTOS حيث هو نظام تشغيل صغير وسريع من عائلة ال RTOS ويعمل على العديد من المتحكمات مثل البيك والأردوينو وغيرها، ونواته تحتوي فقط على 3 ملفات مكتوبة بلغة السي. ويمكنك التعرف عليه من هنا: رابط ويكيبيديا .

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

في آخر المحاضرة تحدثت عن الأفكار التي يجب أن يعرفها كل مطور أنظمة مدمجة لبناء أجهزة تعمل بRTOS، وقد نقلت هذه الأفكار من هذا الكتاب: 


 الفكرة الأولى كانت حول صناعة أنظمة مدمجة تعمل بRTOS حيث على المهندس أن يعرف سلوك ومميزات العتاديات الموجودة في النظام.


والفكرة الثانية حول أسوء حالة، حيث يجب على المطور أن يعرف أسوء حالة من الممكن أن تصيب النظام في أجزاءه الصغيرة وكمثال هذه الأسئلة خاصة بنظام المكابح: 


الفكرة الثالثة تختص بأنه يجب على المطور أن يعرف الموعد النهائي لكل مهمة لكي يقوم بها في المجال الزمني المخصص لها: 

والفكرة الرابعة تختص بتصنيف المهمات إلى  3 تصنيفات: 
ال Hard task وهي المهام التي لا وجود فيها للتسامح والتي من الممكن أن تأدي تأخر أداءها إلى وفايات أو مشاكل كبيرة جدا في النظام. وهو مثل النظام الذي يتحكم في أنظمة الميتروا وأخذنا مثال نظام ميتروا باريس وتحديدا المسار  14 آلي العمل. 

ال Firm task وهي المهام التي تحتوي على القليل جدا من التسامح  مثل أنظمة البث التلفزي حيث سيقوم جهاز الإستقبال بتصحيح الأخطاء الناتجة عن التسامح. 


ال Soft task وهي المهام التي تحتوي على بعض التسامح ولكن يجب ألا يكون كبير جدا مثل الأنظمة التي تتحكم في بث الإنترنات، فهنا يجب أن يكون التسامح متوافقا مع حاجيات النظام حيث يجب ألا تجعل المستخدم يصل لحد القلق وتدمير الأجهزة. 

في النهاية قمت بشرح رسم شكلي يوضح آلية عمل نظام مدمج يعمل بال RTOS: 


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


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



No comments:

Post a Comment

آخر مقال

المسؤولية في إتخاذ قرارات الحياة Responsibility in making life decisions

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

إقتباس الأسبوع

إقتباس الأسبوع

المقالات الأكثر قراءة

Linkedin

تابعني على تيليغرام

أرسل رسالتك

Name

Email *

Message *

المتابعة بالبريد الإلكتروني

المتابعون