الأنظمة المدمجة بإستخدام الأردوينو _ الدرس 1 مقدمة في الأنظمة المدمجة




قبل أن نبدأ في تعلم الأنظمة المدمجة بإستخدام الأردوينو، علينا أولا بالطبع معرفة معنى كلمة أو جملة " الأنظمة المدمجة"، أولا يجب أن نقسمها إلى جزئين، والأول هو " النظام " أو System والثاني وهو " المدمج" أو Embedded. فكلمة نظام تعني ربط العديد من العناصر لأداء مهمة fonction معينة أو عدة مهام، ضمن خطة معينة Algorithem. أما كلمة Embedded أو المدمج أو تسمى أيضا بالمضمن فتعني بالتقريب المخفي أو الموضوع داخل شيء. فجملة " الأنظمة المدمجة " أو Embedded system تعني بالتقريب في مجال الإلكترونيك والمعلوماتية بأنه كمبيوتر أو شريحة تقوم بأداء مهمة أو عدة مهام ضمن نطاق خطة معينة حيث يساعد هذا الكمبيوتر في التحكم في هيكل أو جزء من هيكل كامل لنظام أكبر. قد أكون شرحت بالتقريب هذا المفهوم لأنه حقيقة صعب الشرح ولكن أحب بالتقريب شرحه بأنه وضع بروسيسور أو معالج في نظام ما أو تضمين بروسيسور في نظام ما، وهو الأقرب للفهم. ويجب بالطبع في بعض التطبيقات أن نقول أن مفهوم الأنظمة المدمجة هو تضمين بروسيسور مع ذاكرة وواجهات ومداخل ومخارج ... في نظام من أجل التحكم فيه أو الحصول على البيانات منه، وربما هذا هو الشرح الأعم والأوضح.


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

أولا نبدأ بالميكربروسيسور أو المعالج وهو قطعة إلكترونية قابلة للبرمجة ومن عائلة الإلكترونيات الرقمية وهو شريحة ذات أطراف تستقبل الأوامر وتقوم بتنفيذها بإستخدام أو بدون بيانات وذلك حسب برنامج مخزن في شريحة ذاكرة خارجية. ولأننا لكي نتعلم علينا الرجوع أحيانا للماضي فيمكننا مثلا ملاحظة الميكروبروسيسور 8086 وهو من شركة إنتل وصنع سنة 1971 وهو يعتبر من أوائل الميكربروسيسورات ( سأختصر كلمة ميكروبروسيسور إلى معالج)، فقلت هو يعتبر من أوئل معالجات x86 أو 32 بت لذلك من المفيد فهم بعض الأشياء فيه لفهم ماهية المعالج الحقيقية. ويمكننا الإستعانة بمعماريته الداخلية (َ Architecture ) والتي هي: 

حيث تلاحظ بأنه مقسم إلى جزئين وهوما interface bus و unité d'exécution أي جزء للتعامل مع الذاكرات أو bus والثاني للتعامل مع المعالجة. حيث أن الجزء الخاص ب bus يحتوي على registers وهي ذاكرات صغيرة ذات 16 بت فقط وregistre d'instructions أي ريجيستري للتعليمات وهو توضع فيه التعليمة بعد البحث عنها في الذاكرة الخارجية. بينما في الجهة الأخرى فيتكون من registres أيضا أي ريجسترات وكذلك من ALU وهي وحدة العمليات المنطقية والعددية وكذلك من register flag وهو ريجيستر تتغير قيمته على حسب نتيجة العملية التي قام بها المعالج. ربما هذا بإختصار ما يتكون منه المعالج داخليا، وعلي توضيح مفهوم bus فهذه الكلمة تعني مجموعة من الخيوط تحمل أو تنقل نفس النوع من البيانات، فمثلا هناك bus data حيث هي مجموعة من الخيوط تنقل المعلومات وهناك bus addresses وهي مجموعة من الخيوط تنقل العناوين وهناك أيضا bus commande وهي مجموعة من الخيوط تقوم بتنظيم حركة المعلومات أو تزامن حركة المعلومات (Synchronisation).

ولأن المعالج لا يستطيع القيام بأي شيء وحده فهو يحتاج إلى ذاكرة وواجهات interfaces للتواصل مع العالم الخارجي مثل لوحة المفاتيح وغيرها، لذلك يوضع هذا المعالج في نظام مصغر ويسمى حين إذن " نظام عبر معالج " أو " نظام المعالجة " أو بالفرنسية systeme à micropresseur. ولوضع هذا المعالج في نظام به ذاكرة وغيرها، هناك طريقتان أو معماريتان Architectures وهوما: 
نموذج Von Neumann: وهو وضع الذاكرة الخاصة بالبيانات والذاكرة الخاصة بالبرنامج في نفس الذاكرة.
نموذج harvard: وهو وضع الذاكرة الخاصة بالبيانات في ذاكرة خاصة بها ووضع الذاكرة الخاصة بالبرنامج في ذاكرة خاصة بها ومستقلين عن بعضهما البعض.

والآن علي توضيح شيئ آخر، وهو كيف نعرف خصائص بروسيسور عن بروسيسور؟ والإجابة هي عبرثلاث معايير: 
- الأول وهو تردد المزامن fréquence d'horloge ويحسب ب Mhz أو ب Ghz 
- والثاني هو عدد التعليمات في الثانية ونتحدث هنا عن التعليمات في لغة assembly أو كما تسمى لغة التجميع وتحسب ب MIPS 
- والمعيار الثالث وهو طول البيانات التي يمكن معالجتها وهو يحسب ب bits. 
ولأن التكنولوجيا تتطور فقد تم إضافة العديد من المعايير الأخرى ولكن هذه هي المعايير الأساسية، فمثلا في المعالجات مثل معالجات إنتل الحديثة يتم الحديث عن عدد الانوية والذاكرة الداخلية للمعالج وغيرها. لذلك هذه المعايير الأساسية تخص المعالجات الضعيفة نوعا ما مثل المعالج الذي يعمل به الأردوينو مثلا وفي حالة تطور المعالج سنتحدث عن معايير أخرى أكثر.

وهناك تقسيم لنوع المعالج على حسب التعليمات او instructions في لغة الأسومبلي الخاصة بها، فعلي توضيح أن كل اللغات العالية المستوى مثل السي و السي ++ والبايثون وغيرها يتم تحويلها في لحظة ترجمة كودها الى سلسلة من تعليمات الأسومبلي، لذلك طريقة أو شكل المعمارية التي سأتحدث عنها لها أثر كبير على عمل المعالج أو ما نحتاجه. فهناك معماريتين أساسيتين هنا وهوما CISC أو RISC والأولى تعني أن لديه عبارات معقدة أي أن المعالج من نوع CISC يقوم بأداء عمليات معقدة بإستخدام عبارة واحدة، في حين المعالجات من نوع RISC فهي تحتوي على عدد محدد  وقليل من العبارات في مقابل أنها تقوم بعمليات معقدة بإستخدام عبارات عديدة. 
وأحب توضيح الأمر أكثر عبر وضع رؤوس أقلام لكل نوع:

CISC - Complex Instruction Set Computer : 
هذه المعمارية تعطي أهمية كبيرة للعتاد، عبارات معقدة في لغة الأسومبلي أي عبارة واحدة تقوم بمهام عديدة، تقوم بالولوج للذاكرة مباشرة، كتابة سكريبتات بلغة الأسومبلي الخاص بها بسيط، تأخذ العديد من دورات المتزامن لتكمل مهمة، عدد قليل من الرجسترات.
RISC- Reduced Instruction Set Computer:
هذه المعمارية تعطي أهمية كبيرة للبرمجيات على حساب العتاد، عبارات بسيطة في لغة الأسومبلي أي عبارة واحدة تقوم بمهمة واحدة بسيطة، تحتاج لرجسترات عديدة، كتابة كود بلغة الأسومبلي الخاص بهذا النوع يكون كبير جدا، لديها عبارات بسيطة لذلك تقوم بعمل دورة واحدة لأداء مهمة واحدة (أقصد بالدورة  يعني في horlog والدورة هي مقلوب التردد أي 1/f يعني الدورة تساوي مقلوب الفريكونس او التردد).

وسأتحدث الآن عن شيء يسمى Interface فمن الممكن أنك سمعت عن interface serie usb وغيرها هذه ال interfaces هي المسؤولة عن تواصل المعالج مع الأجهزة أو العالم الخارجي مثل لوحة المفاتيح مثلا والفأرة وغيرها وتتكون هذه الواجهات من ريجيسترات للتحكم وللبيانات ومن مداخل ومخارج حسب الحاجة وحسب المهمة. فنحن إذن نتحكم بهذه interfaces عبر ريجيسترات التحكم وهي تضع البيانات التي إستقبلتها او التي أرسلناها لها وقتيا فقط في ريجيسترات البيانات ولديها مداخل ومخارج للتواصل معها وهي تتواصل أيضا مع أشياء أخرى فيزيائية مثل أزرار أو حساسات وغيرها. وهناك أنواع عديدة من interfaces نذكر منها:
interface série, interface parallele , interruption وغيرها.

والآن ننتقل الى جزء آخر وهو الذاكرات، والذاكرات هي دارة إلكترونية مصنوعة من نصف ناقل semi-conducteur ولأجل حفظ البيانات سواءا التعليمات يعني البرنامج أو المتغيرات. وفي العموم يمكننا تمثيلها بجدول حيث كل سطر من ذلك الجدول يحتوي على 1 أوكتي وكل سطر لديه عنوان، فمثلا نحن لدينا عدد العناوين هو n لذلك منه يمكننا حجم الذاكرة وهو 2 أس n، فمثلا لو قلنا أن عدد العناوين هو 3 فإن هذه الذاكرة ماهي إلا ذاكرة ذات حجم 8 أوكتي، لأن 2 أس 3 تساوي 8.
ونقوم بالتفريق بين ذاكرة وأخرى بمجموعة من الخصائص وهي: سعتها ودائما ما نتحدث عنها بالأوكتي oct ، وشكل البيانات وهو عدد البيتات التي نستطيع أن نسجلها في السطر، وزمن الوصول وهو الزمن بين لحظة وضع الأمر بالقراءة مثلا وبين وجود المعلومة في bus data، وزمن الدورة temp cycle وهو الزمن الذي يفرق بين طلبين سواءا كانوا قراءة وقراءة أو قراءة ثم كتابة أو غيرها، والمعيار الآخر وهو ال débit أو عدد المعلومات التي تكتب أو تقرأ في الثانية bits/s ، والمعيار الأخير وهو ال volatilité وهو يعني هل البيانات التي في هذه الذاكرة تمحى حين قطع الكهرباء أو لا.

وفي العموم لدينا نوعين من الذاكرات: RAM و ROM وأحب كتابة رؤوس الأقلام الملخصة فأقول:
RAM وهي الذاكرة الحية ونقول بحفظ البيانات المؤقتة فيها وهي سريعة وتستهل قدرا قليلا من الطاقة وحين قطع الكهرباء عنها تختفي البيانات التي فيها وهناك نوعين منها، والأولى وهي SRAM أو RAM statiques وهي رام مصنوعة من bascules وهي نوع من القطع الإلكترونية وهناك DRAM وهي RAM dynamique وهي مصنوعة من مكثفات condensatures وهي أفضل من الاولى وذلك بسبب أنها أقل إستهلاكا للمساحة حينما نقوم بدمج قيمة معينة للذاكرة مثلا 8 ميجا في مقابل أن 8 ميجا في SRAM تكون أكبر، وكذلك أقل إستهلاكا للطاقة ب 4 مرات من SRAM وذلك بسبب أن 1 بت في DRAM يمثل ب 1 مكثفة بينما في SRAM يمثل ب 4 باسكولات bascules.
ROM وهي الذاكرة الميتة أو ذاكرة لنقرأ منها فقط وهي من إسمها Read only memory ومن خصائصها أنه حين قطع الكهرباء عنها لا تمحى البيانات التي فيها وهناك عدة أنواع منها مثل PROM وهي نوع من ROM تبرمج مرة واحدة من قبل المستخدم، وهناك EPROM أو UV-EPROM وهي نوع منها تمحى البيانات التي فيها عبر الأشعة الفوق بنفسجية، وهناك EEPROM وهي نوع من ROM تمحى عن طريق الكهرباء ولكن تمسح كل شيء دفعة واحدة، وهناك FLASH EPROM وهي نوع منها تمحى أيضا بالكهرباء ويمكن محو الكلمة بكلمة أو جزءا بجزء منها ولذلك يمكن إستخدامها ك RAM.

بعد أن حصلنا على كل هذه المعلومات يمكننا الحديث عن الفرق بين المعالج microprocessor والمتحكم microcontreleur ، فالفرق تحديدا في أن المعالج كما سبق ووضحت يتكون من وحدة معالجة ALU وريجسترات و ريجيستري للحالة flags فقط ، ولكن المتحكم هو عبارة عن معالج بالإضافة إلى ذاكرة RAM و ROM و مداخل ومخارج I/O و interfaces ويمكن أن يحتوي أيضا على محولات من ال analog الى digital.

وقبل أن أختم هذا المقال أريد توضيح أشياء بخصوص الرجيسترات، هناك ريجيسترات عامة وهي التي نقوم بإستخدامها في حالة القيام بعملياتنا الداخلية مثل الجمع والطرح ووضع النتيجة فيها وغيرها وهناك ريجيسترات نضع فيها العناوين وهناك ذاكرة تسمى pile وهي ذاكرة نقوم بحفظ البيانات فيها بشكل مؤقت وذلك مثلا في حالة إستخدامنا كل الرجسترات. وكذلك هناك مصلح Soc الذي من الممكن أن تلتقيه في عالم النظمة المدمجة وهو يعني ضم جميع أجزاء الكمبيوتر في قطعة واحدة وهي بمعنى system on a chip أو نظام في رقاقة.

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

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel