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

دروس في المعالجات الصغرية: المقاطعات

المواضيع والدروس والسلاسل والشروح المرتبطة بالقسم

دروس في المعالجات الصغرية: المقاطعات

مشاركةبواسطة Hasan في السبت نوفمبر 15, 2008 1:29 am

الدرس الرابع من السلسلة
المقاطعات وإعادة الإقلاع (Interrupts and Reset)

حتى الآن درسنا حالة العمل المستقرة (steady-state) للمعالج وفي هذه الحالة يتم استخراج وفك تشفير ثمّ تنفيذ التعليمات بالترتيب المعين من قبل عداد البرنامج (PC) وتعليمات التفرع (branch) ولكن هناك حالتين خاصتين لايقوم فيهما المعالج باتّباع هذا الترتيب.
الحالة الأولى: إعادة الإقلاع (Reset): وهي تحدث عند أول تشغيل الجهاز عندما ينتقل المعالج من حالة الخمول (idle) إلى تنفيذ التعليمات, هذا الانتقال يسمّى (Reset) وهو يدفع المعالج لاستخراج وتنفيذ برنامج الإقلاع (boot code) المخزن في ال (ROM) ومن بعدها ينتقل إلى العمل الاعتيادي.
يمكن عمل reset للمعالج عن طريق إرسال إشارة منطقية معينة (1 or 0) إلى إحدى مآخذ (pins) المعالج ويمكن أن يظهر إمّا عند بداية التشغيل أو عند إعادة التشغيل(restart).
أمّا السؤال المطروح هنا فهو: كيف يحدد المعالج أية تعليمة سينفذ بعد إجراء عملية reset؟
لحل هذه المشكلة فإنّ كل معالج يحتوي على ما يسمى (reset vector) والذي يؤشر دائما إلى موقع من الذاكرة يحدد مسبقا من قبل مصنعي المعالج ,لذلك فإن على المبرمج أن يضع أول تعليمة من تعليمات الإقلاع في الموضع الذي يشير إليه ال reset vector, وفي بعض الأحيان لا تأتي أول تعليمة من تعليمات البرنامج الرئيسي مباشرةً بعد آخر تعليمة من تعليمات ال (boot code) لذلك يوضع في نهاية برنامج الإقلاع تعليمة تفرع تقوم بالانتقال بالمعالج إلى عنوان الذاكرة الذي يحوي أوّل تعليمة في البرنامج الرئيسي.
أمّا الحالة الثانية التي يخرج فيها المعالج عن عمله الاعتيادي فهي حالة المقاطعات (Interrupts) وهي تحدث عندما يظهر حدث معين يريد المبرمج عند ظهوره أن يتوقف المعالج مؤقتاً عن أداء عمله الحالي والانتقال إلى معالجة روتين برمجي خاص بهذا الحدث.
مثال: لو افترضنا أنّ لدينا جهاز ما يحتوي على معالج ويقوم بمراقبة درجة حرارة الغرفة. ولأن درجة الحرارة لا تتغير بشكلً دائم وسريع فإنّ المعالج يستطيع أن يقوم بعدة أعمال أخرى غير مراقبة درجة الحرارة. وإذا وضعنا مؤقت زمني (timer) يقوم بمقاطعة المعالج عند مضي فترة معينة, وعند ظهور هذه المقاطعة (interrupt) يقوم المعالج بقراءة درجة الحرارة ثمّ القيام بالعمل المناسب (كتشغيل مروحة تبريد) ومن ثمّ يعود المعالج من روتين المقاطعة للعودة إلى العمل الاعتيادي ويعود المؤقت للعد مرة أخرى من أجل تنفيذ المقاطعة ذاتها عند انتهاء توقيته.
www.4electron.com
يمكن مقاطعة المعالج من خلال إرسال إشارة خاصة إلى المعالج(interrupt signal) كما أنّ المقاطعات يمكن أن تحدث من داخل المعالج وذلك إذا احتوى البرنامج المنفذ على تعليمات خاصة. فعندما تبدأ المقاطعة يقوم المعالج بالاحتفاظ بحالته الراهنة وذلك من خلال دفع محتويات عداد البرنامج(PC) ومحتويات مسجلات أخرى إلى المكدس (stack) ومن ثم يحمل عداد البرنامج بقيمة موجه المقاطعة (interrupt vector) والذي يؤشر إلى عنوان روتين المقاطعة (Interrupt Service Routine)(ISR) في الذاكرة, ففي هذه الحالة لا تختلف عملية المقاطعة عن عملية الانتقال إلى الروتين الفرعي (branch-to-subroutine). ولكن الفارق الوحيد بينهما أن المقاطعات يمكن أن تفعل عن طريق جهاز خارجي بدلاً من البرنامج فيوجد في كل معالج مآخذ خاصة بالمقاطعات (interrupt pins) وكل مأخذ لديه موجه(vector) خاص به وعلى المبرمج أن يعلم أن روتين المقاطعة (ISR) يجب أن يتوضع في عنوان الذاكرة الذي يشير إليه موجه المقاطعة (interrupt vector). وعندما يكتمل تنفيذ روتين المقاطعة (ISR) يقوم المعالج بتنفيذ عملية عودة من الروتين (return-from-routine) والتي تؤدي إلى استعادة الحالة الأصلية للمعالج وذلك من خلال إخراج القيم الأصلية لعداد البرنامج من المكدس ويعود العمل إلى الروتين الذي تمت مقاطعته ويستمر العمل الاعتيادي
بينما ينفذ المعالج روتين مقاطعة ما فإنّ البرنامج ليس بالضرورة أن يملك أدنى معرفة عن الحدث الذي يحصل وذلك لأنّ حالة المعالج تحفظ ثمّ تسترجع عند العودة من الرّوتين, فالروتين الرئيسي ليس لديه أي علم بأنه قد تم توقيفه عن العمل في مكان ما ولمدة معينة ويمكن للمبرمج أن يجعل تلك المعرفة متوفرة للبرنامج المقاطع عن طريق تبادل المعلومات بين روتين المقاطعة وروتينات أخرى.
www.4electron.com
من الشائع في المعالجات وجود عدة مصادر للمقاطعات وذلك اعتماداّ على تعقيد المعالج فيمكن أن يوجد مصدر واحد أو اثنين أو عشرات المصادر و كل من تلك المصادر لديه الموجه (vector) الخاص به. وكنتيجة لهذا التعدد يمكن أن يحصل تضارب (conflict) بين مصادر المقاطعات المتعددة إذا فعّلت في نفس الوقت, ويعالج هذا التضارب بإسناد أولويات (priorities) للمقاطعات, فالمقاطعة ذات الأولوية الأعلى ينفذ روتينها أولا ثم ننتقل لتنفيذ روتين المقاطعة الأقل أهمية.
لا يجب تنفيذ روتين المقاطعة (ISR) قبل أن يكون البرنامج الأصلي جاهزاً لمعالجة حالة المقاطعة فإذا حصل هذا فإن المعالج سينتقل إلى الموضع الذي يشير إليه موجه المقاطعة وسوف يتعطل عن العمل بسبب تنفيذ تعليمات غير صالحة. لذلك يمكن أن نحجب (Mask) المقاطعات ريثما يصبح البرنامج جاهزا لاستقبالها.
كما أنّ الحجب يفيد عند تأدية تعليمات معينة يجب أن تنفذ خلال وقت معين (time-critical operations) فيمكن أن نضع في روتين المقاطعة (ISR) مهمة ما يجب أن تنفذ خلال زمن (10 micro seconds) ففي الظروف العادية سوف تنفذ هذه المهمة في الوقت المحدد ولكن إذا حدثت مقاطعة أخرى أثناء تنفيذ تلك المهمة فليس من المضمون أن ينتهي تنفيذ هذه المهمة في (10 micro seconds)لذلك نقوم بحجب(mask) المقاطعة الفرعية (subinterrupt) حتى تنتهي المقاطعة الأصلية من تنفيذ تعليمات روتينها (ISR) فنقوم عندها بإلغاء الحجب (unmask) عن المقاطعة الفرعية.
إذا وصلت مقاطعة معينة إلى المعالج وهي محجوبة فإنّ المعالج سوف يحفظ طلبها ثمّ يفعّلها بعد إلغاء حجبها.
بعض المعالجات لديها مقاطعة واحدة أو مقاطعتين تصنف على أنّها غير قابلة للحجب (unmaskable) مثل هذه المقاطعات تستعمل من أجل تصحيح الأخطاء حيث يجب أن تنفذ هذه المقاطعات مهما كان يعمل المعالج عند ظهور هذه المعالج. بعض المقاطعات الغير القابلة للحجب يمكن أن تطبق في الROM وذلك لضمان أن محتويات هذه الذاكرة جاهزة دائما للتنفيذ عند طلبها.
www.4electron.com
انتهى الدرس الرابع بفضل الله
في الدرس القادم سوف نقوم إنشاء الله بتجميع الأفكار التي درسناها في هذه السلسلة من أجل دراسة ترابط المعالج مع الذواكر وأجهزة الدخل والخرج من أجل تشكيل حاسب كامل من الناحية الفيزيائية
In Your HEART.....Can't You Feel The GLORY!
صورة العضو الشخصيه
Hasan
عضو شرف
 
مشاركات: 792
اشترك في: الجمعة نوفمبر 09, 2007 8:35 pm
مكان: Damascus
الاختصاص: electronics&communications
النشاط في الموقع: ترجمة المقالات العلمية

Re: دروس في المعالجات الصغرية: المقاطعات

مشاركةبواسطة aboamra في الأحد نوفمبر 30, 2008 10:39 pm

شكراً لكم
صورة العضو الشخصيه
aboamra
 
مشاركات: 1
اشترك في: الأحد نوفمبر 30, 2008 10:28 pm
الاختصاص: atmel
النشاط في الموقع: المؤقتات والمقاطعات


العودة إلى القسم العلمي

المتواجدون الآن

المستخدمون المتصفحون لهذا المنتدى: لا يوجد أعضاء مسجلين متصلين و 20 زائر/زوار

منتديات بورصات