Saturday, February 4, 2017

طريقك الي تعلم الانظمة المدمجة , ماهي الانظمة المدمجة , ما هو ال Embedded Systems ؟


الانظمة المدمجة

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

2) نظام عمل الساعة
أهم العناصر اللي بيتكون منها النظام هي الآتي:
·        هيكل أو جسم الساعة الخارجي
·        الوجه الخاص بالساعة
·        الأوستيك الخاص بالساعة
·        التروس الموجودة داخل جسم الساعة
·        عقارب الساعة المتصلة بالتروس
·        البطارية الخاصة بالساعة
الغرض من عمل هذه العناصر
استعراض الوقت ومعرفة الوقت بالتفصيل
الخطة التي تعمل بها هذه العناصر
أولا) تتحرك جميع عقارب الساعة في اتجاه دوراني واحد فقط من اليسار إلى اليمين يعرف باسم اتجاه عقارب الساعة.
ثانيا) يتحرك أطول العقارب و أكثرها رٌفعا بشكل دائري كل ثانية بحيث يدور دورة كاملة و يعود إلى موضعه الأصلي كل 60 ثانية
ثالثا) يتحرك عقرب آخر أقل طولا من السابق بشكل دائري كل دقيقة بحيث يدور دورة كاملة و يعود إلى موضعه الأصلي كل 60 دقيقة
رابعا) يتحرك أقصر العقارب طولا بشكل دائري كل ساعة بحيث يدور دورة كاملة و يعود إلى موضعه الأصلي كل 12 ساعة
خامسا) تعود جميع العقارب إلى موضعها الأصلي كل 12 ساعة من كل يوم
بعد الانتهاء من تحليل النظامين السابقين ومعرفة كيفية نقوم بتحليلهم بدقة بنفس الاسلوب السابق فعليك الان ان تكون قد فهمت ولو بنسبة قليلة معني كلمة نظام
الان سوف نقوم بمعرفة معني كلمة نظام مدمج Embedded System
فالنظام المدمج او ما يسمي ب Embedded System ماهو الا كمبيوتر مبرمج لآداء مهمة واحدة أو عدة مهمات محددة فقط ولا يمكنه تنفيذ أي مهام أخرى
و لكونه كمبيوتر فهذا يعني أنه يتكون من جزئين رئيسيين Hardware, Software تماماً مثل جهاز الكمبيوتر العادي فإذا نظرنا عن قرب لجهاز الكمبيوتر فنجده يتكون من مجموعة من المكونات نعرفها جميعا جيداً مثل ( البروسيسور - وحدات الإدخال و الإخراج - الذاكرة بأنواعها - نظام التشغيل ... إلخ )
أما الـ Embedded systems و لكونه مبرمج لآداء مهمة واحدة أو عدة مهمات محددة فقط كما ذكرنا من قبل فلن يحتاج من كل تلك المكونات سوى ما يكفيه لآداء تلك المهام المحددة حيث ان ال  Embedded system نظام بخيل جدا و في غاية الحرص كما سنرى ..
فعلي سبيل المثال نجد أننا قد نستخدم بروسيسور أقل سرعة عن عمد و ذلك لتوفير استهلاك الطاقة و التي تكون بدورها محدودة بالبطارية المستخدمة - معظم الـ Embedded systems تعمل بالبطارية - و يجب توخي الحرص في استنفاذها
كما نجد أيضا أنه يتوجب علينا استخدام ذاكرة أصغر لتقليل تكلفة التصنيع و من الممكن ألا نحتاج إلى شاشة و قد نستغني عن بعض الإضافات (peripherals ) التي لا حاجة لنا بها مثل الإتصال بالإنترنت أو البلوتوث أو إضافة ذاكرة خارجية أو وجود منفذ USB أو ما إلى ذلك من الإضافات بالموجودة بجهاز الكمبيوتر العادي ..
ليس المقصود بذلك هنا هو عدم استخدام تلك الإضافات فحسب و لكن المقصود هو اختيار بروسيسور لا يدعم أمكانية استخدام تلك الإضافات من الأساس و لكنه يكون أرخص في السعر ..
كذلك ال Software  ايضا المبني علي هذا ال Hardware عليه القيام بالمهام المحددة له فقط
في كل مرة في نفس الوقت و ألا يأخذ أي وقت إضافي فيما يعرف بـ
Real time constrains و قد نجد بعض الـ systems التي يوجد بها نوع من السماحية فيما يعرف بـ Fault tolerant و لكن لا تفرح كثيرا فتلك السماحية تكون محدودة أيضاً حيث تنقسم الـ Real time constrains إلى
 Hard real time constrains, Soft real time constrains
و لتضح الصورة أكثر و لنعرف أهمية أن يكون الـ System يتميز بكونه Real time فلنفكر في التطبيقات الحرجة لتلك الأنظمة مثل جهاز تنظيم ضربات القلب على سبيل المثال فلا يمكن بأي حال من الأحوال أن يحدث تأخير و لو لجزء من الثانية في البرنامج الذي يعمل عليه الجهاز .. مثال آخر هو الـ Air bag الموجودة بالسيارات و التي تعمل عند تعرض السيارة لحادث لحماية السائق من الاصطدام بعجلة القيادة فهل تعتقد أنه سيكون لها أي أهمية اذا تأخرت عن العمل لبضع أجزاء من الثانية بعد حدوث الاصطدام .. بالتأكيد لا
تلخيصاً لكل ما سبق فلكي نقوم بتعريف أي نظام على أنه Embedded system فإليك بعض المواصفات التي يجب أن تنطبق عليه :
1-  يحتوي بداخله على كمبيوتر
2-  يقوم بمهمة واحدة أو عدة مهمات محددة مسبقاً فقط ولا يستطيع تنفيذ غيرها
3-  محدود الذاكرة
4-  محدود الطاقة ( يعمل بالبطاريات عادة )
5 - يحمل بروسيسور محدود الإمكانيات
6 - يتسم نظام التشغيل خاص به ويكون Real time operating system

ومن الامثلة علي الانظمة المدمجة
·        Switches & Routers
·        Mobile phones & Tablets
·        Fax, printer and scanners
·        Mp3, Mp4 and Mp5 players
·        Digital cameras
·        CD/DVD players
·        Microwave
·        Washing machine
·        Medical devices

و قريبا ستكون مزروعة داخل أجسادنا لمتابعة وظائف الجسم الحيوية و ستكون موجودة بكل شيئ نراه حولنا من الإبرة إلى الصاروخ فيما يعرف بـ Internetof things
و نلاحظ من الأمثلة أن الـ Software الخاص بأي منها مرتبط بالـ Hardware المبني عليه فلا يمكن وضع الـ Software الخاص بأي System على الـ Hardware الخاص بـ System آخر بالطبع .. فلن يتحول الـ Microwave إلى Mobile phone

و بعبارة أخرى أكثر دقة فأي System يكون مبني خصيصا على الـ Application المستخدم به و ذلك من خلال اختيار ما يناسبه من :
·        Processor
·        Available memory
·        Amount of I/O
·         Communication protocols
و لكن هل يمكن اعتبار جهاز الكمبيوتر أنه Embedded system ؟
لابد الان انك تعرف الاجابة علي هذا السوال ولكن سنقوم بتوضيح الاجابة بصورة اوضح
فجهاز الكمبيوتر يمكنه القيام بعدد لا نهائي من المهام بناء على الـ software الموجود عليه
 ( تشغيل أغاني - تشغيل فيديو - تحرير النصوص - تشغيل الألعاب - تصميم الجرافيكس - تصفح انترنت ... إلخ ) لذا يمكن وصف الـ Hardware الخاص به بأنه :
General purpose platform that holds different types of software
مما يتعارض بالتالي مع تعريفنا للـ Embedded system في كونه يقوم بمهمة واحدة أو عدد من المهمات المحددة مسبقا فقط .. لكن رغم ذلك فيمكن النظر إلى بعض مكونات الكمبيوتر على أنها Embedded systems على سبيل المثال DVD player و كارت الـ LAN لكل منهما مهمة محددة يقوم بها و تنطبق عليه كافة مواصفات الـ Embedded system السابقة لذلك يمكن اعتبارهما كذلك
ينبغي على مبرمج الأنظمة المدمجة أن يتعامل مع كل تلك القيود التي ذكرناها
و كون الـ Software مرتبط بشدة بالـ Hardware يستوجب على المبرمج أن يكون على علم دقيق بالـ Hardware الذي يتعامل معه مما يتطلب دراسته الجيدة للإلكترونيات و الفيزياء
أدوات التطوير أكثر تعقيدا فأنت تقوم بكتابة الـ Software على جهاز كمبيوتر يحمل بروسيسور مختلف و له إمكانيات مختلفة عن البروسيسور الحقيقي الذي سيعمل عليه الـ Software في الواقع و لا يمكنك تجربة الـ Software بالكامل و التأكد من فاعليته من خلال الكمبيوتر المستخدم في كتابة الـ Software قبل أن تقوم بحرقه على الـ Hardware الفعلي الذي سيعمل عليه لاحقا لتتأكد من فاعليته على أرض الواقع و ليس مجرد محاكاة تقوم بها
من المهم جدا أن تراعي مشكلة محدودية الطاقة كون معظم الـ Embedded systems تعمل بالبطارية لذا قد تلجأ إلى استخدام Sleep mode أو استخدام Clock rate أقل إذا أصبح الحمل على البروسيسور أقل و إن زاد الحمل فيتم زيادة الـ Clock rate مرة أخرى
و بالنهاية فأجور و مرتبات من يعملون بمجال الـ Embedded systems engineering تكون أعلى من أجور أي Software engineer آخر و كذلك إمكانية دخول هذا المجال و التخصص به لغير دارسي مجال الهندسة تكاد تكون مستحيلة بعكس مجال البرمجة التقليدي سواء في تطوير مواقع الإنترنت أو الموبايل أو حتى برامج الـ Desktop و الذي يمكن أن يتخصص به أي شخص و إن لم يدرس الهندسة من قبل.
لغات البرمجة الخاصة ببرمجة الانظمة المدمجة
a)  Assembly programming
فى الشغل مش بتحتاج الاسميلى الا فى حالات قليلة.. لما تكون محتاج تعمل جزئية فى الكود عاوزها تتنفذ فى وقت صغير جدا لانه التطبيق اللى بتعمله سرعة تنفيذ الكود فى الجزئية دى حرجة ... زى التطبيقات الخاص بتتبع الصواريخ و دقة التوجيه مثلا.
كمان بيكون فيه وظائف خاصة بيأديها البروسيسور.. عشان تخليه ينفذها لازم تكتبله امرها بالاسميللى لانها ملهاش مقابل فى لغة اخري ك C
لكن الطبيعى فى الشركات انه الشغل بيكون بلغة السى و هنوضح فيما بعد الاسباب
الخلاصة.. انك محتاج يكون عندك فكرة عن لغة الاسميبلى لكن مش محتاج تحترفها
b) C, advanced C and data structure
لغة السى ميزتها انها لغة وسطية  قريبة من الهاردوير لكن مش قوى زى الاسمبيلى.. و مفهوم syntax بتاعتها لكن ليست كاللغات ال High Level Langauge..
المقصود بلغة السى يعنى ازاى تعرف متغيرات و Functions و Array و Pointers و ازاى تعمل برنامج يشتغل بدقة.
اما الـ advanced C ازاى تستخدم الحاجات اللى مش شائعة فى شغل الطلبة و الكلية فى البرامج بتاعتك.. زى انك تستخدم Pointers كتيير و يكون بين Pointers علاقات.. و تستخدم array of pointers to structures
و تتعامل مع الداتا مظبوط و تبعتها و تستقبلها فى فنشكنز مختلفة.. و يكون عندك خلفية عن مكتابات لغة السى و Functions المتاحة فيها
لغة السى ليها كذا Standard و اللى بنشتغل عليه فى Embedded  هو
ANSI standard which is C99 & C89 as I remember
 فعليك الان ان تتقن لغة ال C اذا ارت ان تدخل الي عالم ال Embedded systems وبرمجته
فلتكن على يقين أنك بمجرد دخولك هذا المجال قد أصبحت مميزا عن العديد ممن حولك ممن يعملون في مجال الـ Software لكن مع ذلك عليك أن تعلم منذ البداية أيضا أن هذا المجال هو لأصحاب النفس الطويل و الآمال و الطموحات الكبيرة نظرا لكثرة ما قد تحتاج لتتعلمه لتتمكن من التميز في هذا المجال.


0 التعليقات:

Post a Comment