الخميس، 15 يناير 2015

Embedded C And Assembly




Embedded C And Assembly

الفرق بين البرمجة بلغة عالية المستوى ولغة منخفضة المستوى

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


 Assembly Language


هي اقرب لغة الى لغة الالة ولغة الالة عبارة اكواد مكونة فقط من الصفر والواحد حيث هذه هي الطريقة الوحيدة  التي تفهم عليها الالة عند الكتابة بلغة الاسيمبلي يجب تحديد بعض التفاصيل مثل مكان كتابة البرنامج ومكان خزن المتغيرات وغير ذلك لكن بعد كتابة الكود يمر بمرحلتين قبل ان يكون جاهز الى ان يرسل الى المعالج

المرحلة الاولى هي مرحلة التفسير تقوم بهذه العملية اداة اسمها الاسيمبليرassembler


 ولكل معالج اسيمبلير خاص به حيث يتم تحويل الاكواد البرمجية المكتوبة الى اكواد بلغة الالة لكن هذه الاكواد تبقى غير قابلة للتنفيذ من قبل المعالج ويتم ادخالها الى الرابط LINKER حيث يقوم بتجميع اجزاء البرنامج وجعله بصورة قابلة للتنفيذ من قبل المعالج

C Language


نحنا قلنا ان لغة السي هي لغة عالية المستوى لكن في حقيقة الامر هي لغة وسطية بين العالية المستوى والمنخفضة المستوى حيث تمتلك الكثير من خصائص الصنفين وقد بنيت منها العديد من اللغات الاخرى التي تصنف كلغات عالية المستوى منها #C و ++C   وجافا وقد يطلق على لغة سي في بعض الاحيان لغة متوسطة المستوى  لغة سي هي لغة قصيرة اي عدد دوالها ليس بالكثير لكن وجود المكاتب القياسية جعلها لغة اقوى ووفر على اللغة كتابة مئات الاسطر لغة سي لها استخدامات واسعة هنا نحنا نستخدمها في بناء وتطوير الانظمة المدمجة لكن تستعمل ايضا في تطوير انظمة التشغيل وقواعد البيانات ومحررات النصوص

يتم كتابة كود في لغة سي مع استيراد المكاتب التي تحتاجها واستخدام دوال من ضمنها ويستعمل مترجم Compilers لتحويل الاكواد الى لغة الة حيث يقوم بترجمة الاكواد حسب تسلسل كتابتها وبعد الانتهاء يتم ارسالها الى التنفيذ او الى متحكم لتنفذ اثناء تشغيله


Difference Between C And Embedded C


لغة سي هي لغة من نوع برمجة الكومبيوتر (الحاسوب الشخصي)  وهي لغة لها شعبية واسعة رغم استحداث لغات كثيرة غيرها اما لغة الايمبدد سي هي من ملحقات لغة سي وتستخدم لبرمجة المعالج والمتحكم الدقيق وتستخدم الايمبدد سي معظم بنائات وتراكيب لغة سي الاصلية مثل الدالة الرئيسية وانواع المتغيرات وطريقة الاعلان عنها والدوال والدوال الشرطية وغيرها تمتلك لغة الايمبدد سي بعض الاضافات الغير قياسية اي غير موجودة في لغة سي تتمثل في طرق الادخال والاخراج تعامل مع ذواكر متعددة وغيرها من الاضافات اماكانية الذاكرة في لغة سي مفتوحة بسبب سعة ذاكرة الحاسوب الشخصي اما في الايمبدد سي يجب التعامل مع الذواكر بنوع من الاعتناء والخبرة واستخدام اكواد تاخذ مساحة اقل وتؤدي الوظيفة المنشودة منها كذلك لغة سي تعمل مباشرتا في نظام التشغيل اما الايمبدد سي تحتاج ارسالها الى المتحكم مثلا حتى تستطيع تشغيلها



لماذا Embedded C للانظمة المدمجة

الانظمة المدمجة بصورة عامة هي عبارة عن خطان يسيران الى جنب خط اسمه hardware وخط اسمه software لابد وان يلتقيان هذان الخطان في النهاية لذا النظام المدمج يكتب فيه كود برمجي وهذا الكود يمر بمراحل كثيرة قبل ان يلتقي بالعتاد الصلب الكود البرمجي يكتب بلغة سي لانها من اقرب اللغات الى العتاد الصلب hardware (سي لغة متوسطة المستوى ليست عالية المستوى مثل بايثون ولا منخفضة المستوى مثل الاسيمبلي) اما خط العتاد الصلب فيتمثل اما بمتحكم مايكروكنترولير او معالج دقيق وكذلك جميع الدوائر الملحقة والمربوطة مع المعالج او المتحكم من ذواكر وطرفيات وحساسات ومعالجات خاصة لذا لابد ان يحمل الكود على العتاد لنصل الى نقطة الالتقاء بين الاثنين


2 التعليقات:

  1. استفت منه خصوصا اني دخلت كذا موقع ومفهمتش حاجات كتير مع انه في كلام مشابه للهنا ،استمروا

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

    ردحذف