البرمجة في الأنظمة المدمجة
محمد سمير - الفرقة التانية كهربا
محمود حسن - الفرقة التانية ميكا
لماذا العربية في التقديم؟
في البداية نتسآل عن سبب استخدام العربية في هذا التقديم.... وصراحة
كنت أريد البدء في تبرير لما استخدمت العربية لكن انتبهت إن المفروض أن
يكون السؤال لمن استخدم الإنجليزية لخطاب أناس لغتهم الأم هي العربية
وهو أيضا مثلهم
الحاسوب Computer
ما هو الحاسوب؟
ينتج حوالي 6️⃣ ستة مليارات معالج microprocessor في العام
ومنهم فقط
٢٪ يستخدموا في
الحواسيب الشخصية والحواسيب عامة المقصد general-purpose computers
النظام المدمج
Embedded system
ما هو النظام المدمج؟
- النظام المدمج هو تركيبة من العتاد الصلب Hardware
- وال Drivers
- والأكواد والبرمجيات
-
لا تكون الأنظمة المدمجة قائمة بذاتها ولكن تتواصل مع ملحقات
Peripherals
-
وتأخد المدخلات من المستشعرات Sensors البيانات للتخذ القرارات على
إثرها
- اختصارا، النظام المدمج هو حاسوب ليس للأغراض العامة مثل جهازك الشخصي
الذي لا يدري المصنع فيما ستسخدمه، سواءا كان في لعب PES أو FIFA أو أن
تستخدمه في استضافة المواقع والحوسبة السحابية، أو أن تستخدمه في كتابة
تقرير طلبه منك دكتور مادة من المواد التي لا تطيقها في الكلية...
- أما النظام المدمج فهو نظام مصمم بداية من العتاد الصلب وصولا للأكواد
والبرمجيات ليؤدي الوظيفة التي أرادها المصنع (أو يأمل المصنع أن يوديها
النظام المدمج 🙂)
-
اختصارا، النظام المدمج هو حاسوب ليس للأغراض العامة مثل جهازك
الشخصي الذي لا يدري المصنع فيما ستسخدمه، سواءا كان في لعب PES أو
FIFA أو أن تستخدمه في استضافة المواقع والحوسبة السحابية، أو أن
تستخدمه في كتابة تقرير طلبه منك دكتور مادة من المواد التي لا
تطيقها في الكلية...
-
أما النظام المدمج فهو نظام مصمم بداية من العتاد الصلب وصولا
للأكواد والبرمجيات ليؤدي الوظيفة التي أرادها المصنع (أو يأمل
المصنع أن يوديها النظام المدمج 🙂)
-
كما ذكرنا أمثلة مسبقة عن أنظمة مدمجة نعتمد عليها في حياتنا وتحيط
بنا في المقدمة، يمكن أن يستبدل بالنظام المدمج الذي هو تركيبة من
العتاد Hardware وبرمجيات Software، الدائرة مدمجة Integrated
circuit IC لكن النظام المدمج أكثر مرونة من ال IC التي تصمم كل
العمليات في دائرة خاصة تؤدي وظيفتها المحددة لها فحسب
-
في النبذة التاريخية التالية سنتحدث عن موضوع ال IC والفرق بينها
وبين الأنظمة المدمجة
بدأت القصة عندما أذن الله للانفجار العظيم أن يحدث منذ 13 مليار سنة
،والله أعلم، ومنذ أربعة مليارات ونص المليار تقريبا بدأ كوكبنا الجميل
في التكون ...........
في أواخر السبعينبات كان الآلات الحاسبة calculator تشغل جزءا كبيرا من
التصنيع والإهتمام كما هي الهواتف الذكية اليوم. ومن الشركات المصنعة
لهذه الآلات شركة Busicom وكانت تعتمد في آلاتها الحاسبة على الدوائر
المدمجة Integrated ciruit IC
-
في عام 1969م طلبت شركة بيزيكم كم Intel أن تصمم لها دائرة مدمجة لكن
نموذج ونوع من الآلات الحاسبة
-
فكان رد إنتل عليها بالمعالج إنتل 4004 والذي هو أول معالج
microprocessor نعرفه وكان هذا في عام 1971م ثم ها نحن هنا تحاصرنا
المعالجات والأنظمة المدمجة في بيتنا ووسائل النقل والشوراع بعد مرور
نصف قرن.
يمكننا أن ننظر للنظام المدمج على أنه تركيبة من طبقات يعتمد بعضها على
الآخر لتؤدي الوظيفة المخصصة لها
- العتاد الصلب Hardware
- وطبقة من الأوامر Software
-
وهذه الأوامر تحتاج أن تجد لها مساحة تخزين يقرأ منها
- المعالج هذه الأموار وينفذها
-
سلف أن ذكرنا أن أول معالج كان من تصنيع Intel وهو المعالج 4004 الذي
صنعته في 1971. المعالج هو العقل الذي ينفذ الأوامر المقررة له.
-
تُحسب قوة المعالج استنادا على كم من ملايين العمليات في الثانية
يقدر أن ينفذها المعالج Million of instructions per second أو
اختصارا نقول عليها MIPS. فالمعالج ذو 10 MIPS أقوى من العالج ذي 5
MIPS وقِس على هذا
-
في الحواسيب الشخصية نجد أن المعمارية الأكثر استخداما هي 32-bit أو
معمارية ال 64-bit مع أن الثاني أكثر انتشارا في هذه الأيام. لكن في
الأنظمة المدمجة فالأمر أبسط من هذا فيستخدم غالبا 4-bit, 8-bit أو
16-bit.
لتخزين الأوامر والبيانات المطلوبة وأيضا المدخلات التي تدخل لا بد من
وجد مساحة تخزين ويمكن أن تكون
-
ذاكرة عشوائية Random access memory RAM
-
ذاكرة للقراءة فقط Read-only memory والتي لا يمكن تغيير البيانات
بها
-
يمكن الاستغناء عن الذاكرة الخارجية ويستخدم ذاكرة ضمن المعالج نفسه
إذا كانت متطلبات requirements لا تحتاج لذاكرة كبيرة نسبيا
-
واعتمادا على اتساع السجل register في المعالج نجد حدودا للذاكرة
التي يمكن توفيرها، فالأوامر تُقرأ من مكانها وعنوانها في الذاكرة
وهذا المكان أو العنوان يُخزن في السجلات في المعالج فيقرأ المعالج
عنوان الأوامر ليجلبها من الذاكرة
-
فمثلا لو أن اتساع السجل في المعالج register width هو 16 bits فقط
فإن أقصى قيمة للذاكرة يمكن توفيرها هي 64KB أي $2^16$
المدخلات والمخرجات
input and output
-
تدخل المدخلات عن طريق المستشعرات Sensors أو الملحقات Peripherals
ليستقبلها النظام المدمج ويجري عليها عملياته الحسابيه مستخدما
المعالجات والذاكرة
-
ثم يخرج الخرج الجديد اعتمادا على الدخل والذي يعتمد أيضا على أمور
أخرى منها الوقت مثلا، فينتج النظام المدمج خرجا اعتمادا على الوقت
Embedded system
vs
Software engineering
مبرمج الأنظمة المدمجة ومبرمج تطبيقات سطح المكتب أو تطبيقات الهواتف
يجمع بينها أنها يكتبان الأكواد وربما يكتب كلا منها بنفس اللغة لكن يفرق
بينهما أمور عديدة
-
مبرمج الأنظمة المدمجة لديه مصادر محدودة وسعة ذاكرة كل كلمة (بايت)
فيها بل كل حرف (بيت) له قيمة لابد من عدم إهدارها
- يحده إمكانيات المعالج
-
يتعامل مع العالم الخارجي ويحتك به على عكس مبرمج التطبيقات الذي
ينحسب داخل قوقعة الأكواد والعالم الافتراضي
-
فيتعامل مبرمج الأنظمة المدمجة مع المدخلات من المستشعرات Sensors
والملحقات Peripherals. كما أن لكن منها طريقة تعامل مختلفة فليس كل
مستشعر يُتعامل معه ويُقرأ منه كصاحبه.
-
يكتب الكود ليعيش، إذ أنه يكتب الكود وفي تصوراته أنه سيعمل لسنين
طويلة دون مشاكل وأخطاء... ومبرمج الأنظمة المدمجة أكثر تركيزا في
هذا الجانب من مبرمج التطبيقات
أي لغات البرمجة أستعمل؟ 🤔
هي لغة برمجة عالية المستوى high-level ومنخفضة المستوى low-level
نسبيا في نفس الوقت إذ أنها توفر لنا تفاعلا مباشرا مع العتاد الصلب
Hardware
بنيت على ال C وكان الهدف إنشاء مزايا إضافيه مثل البرمجة كائنية
التوجه Object oriented programming OOP. يمكنها التواصل مع العتاد
Hardware وتقدم حزمة من الوظائف والمزايا الأخرى الغير موجودة في ال C
بطريقة مباشرة ومستخدمة في الأنظمة المدمجة
هي لغة توفر التواصل المباشر مع العتاد لكنها أصعب وأكثر تعقيدا من ال
C
لغة أنتجها Defense Department of U.S. وتستخدم في الأنظمة المدمجة
وتوفر أسلوبا صارما يضمن سلامة الكود من المشكلات على قدر الإمكان حيث
تستخدم هذه اللغة في المركبات والأجهزة العسكرية والأقمار الصناعية
لكنها تفقد شهرتها ويقل استخدامها على حساب لغات أخرى
هي لغة في شبابها وجديدة نسبيا وتوفر مزايا توفرها لفة السي مثل
التواصل مع العتاد لكنها توفر طريقة أفضل للأمان والتعامل مع الذاكرة
العشوائية كما أنها أسرع في بعض الأحيان من ال C