الدرس ١ : مقدمة عن الأنظمة المدمجة وبنية الكمبيوتر


#1

بسم الله الرحمن الرحيم
الحمد لله رب العالمين والصلاة والسلام على أشرف المرسلين، بفضل الله وتوفيقه نقدم لكم الدرس الأول بسلسلة دروس تعلم برمجة الأنظمة المدمجة والمتحكم الدقيق STM32 المعتمد على نواة ARM Cortex-M4

بعنوان

مقدمة عن الأنظمة المدمجة وبنية الكمبيوتر

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

بنية الكمبيوتر

يتكون جهاز الكمبيوتر من معالج processor وهو المسئول عن العمليات الحسابية كالجمع والطرح وغيرها وكذلك العمليات المنطقية كالمقارنة، يحتوي أيضا جهاز الكمبيوتر على ذاكرة الوصول العشوائية random access memory والتي تسمى أختصارا رام RAM والتي يتم بها تحزين البرنامج مؤقتا أثناء تشغليه وهذه الذاكرة يتم مسح جميع محتوايتها عن فصل التيار الكهربائي، ويحتوي أيضا على ذاكرة القراءة فقط read only memory والتي تسمى روم ROM وكذلك وسائل الأدخال كلوحة المفاتيح ووسائل الأخراج كالشاشة او السماعات. وهذه المكونات السابق ذكرها تكون بنية الكمبيوتر كما نعرفها اليوم وموضحه في الصورة الاتية

%D8%A8%D9%86%D9%8A%D8%A9%20%D8%A7%D9%84%D9%83%D9%85%D8%A8%D9%8A%D9%88%D8%AA%D8%B1

وهذه البنية تسمى بنية von Neumann حيث يكون هناك خط رئيسي Bus لنقل البيانات والعناوين وأوامر التحكم الي جميع مكونات الكمبيوتر حيث يقوم المعالج بجلب تعليمات البرنامج المخزنة في ذاكرة القراءة فقط الي وحدة المعالجة المركزية لتنفذيها كذلك يتم جلب البيانات من وسائل الأدخال او من الذاكرة العشوائية أو بالعكس أخراج البيانات لوسائل الأخراج او تخزينها في الذاكرة. وبنية von Neumann والتي تم تسميتها على اسم عالم الرياضيات John von Neumann يتم فيها مشاركة الذاكرة واشارات التحكم لأكواد البرنامج وبياناته ولذلك من السهل ان يقوم البرنامج بتغير نفسه حيث يتم تخزينه في ذاكرة الرام وهي ذاكرة للقراءة والكتابة.

أما البنية الأخرى الشائعة الأستخدام ايضا وهي بنية هارفارد Harvard Architecture وتعتمد على تخزين أكواد البرنامج وبياناته في أماكن مختلفة حيث يتم تخزين تعليمات البرنامج في ذاكرة الروم وهي للقراءة فقط أما البيانات يتم تخزينها في الرام، مما يتيح جلب التعليمات لتنفيذها من الروم وفي نفس الوقت قراءة وكتابة البيانات في ذاكرة الرام كما يمكن أيضا ان يقوم البرنامج بتغيير محتواياته بنفسه.

%D8%A7%D9%84%D9%81%D8%B1%D9%82%20%D8%A8%D9%8A%D9%86%20%D8%A8%D9%86%D9%8A%D8%A9%20von%20Neumann%20%D9%88%D8%A8%D9%86%D9%8A%D8%A9%20Harvard
الفرق بين بنية von Neumann وبنية Harvard

تعريف النظام المدمج

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

المعالج الدقيق microprocessor

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

يحتوي المعالج الدقيق على وحدة المعالجة المركزية Central processing unit CPU حيث تحتوي على وحدة التحكم ووحدة الحساب والمنطق والمسجلات وتقوم وحدة التحكم بجلب التعليمة المراد تنفيذها من الذاكرة فثلا اذا كانت هذه التعليمة جميع رقمين فستقوم وحدة التحكم بجلب قيمة هذان الرقمان من الذاكرة أو من وسائل الأدخال وستقوم بتخزين قيمة كل رقم في مسجل خاص وتمريرها لوحدة الحساب والمنطق وعند الانتهاء من عملية الجمع تقوم وحدة التحكم بجلب الناتج من المسجلات وارساله للذاكرة او الي وسائل الأخراج. ومن أمثلة المعالجات الدقيقة Intel Xeon أو AMD FX أو ARM ® CortexTM-M.

المتحكم الدقيق microcontroller

هو جهاز كمبيوتر صغير يحتوي على جميع المكونات السابق ذكرها ومن ضمنها المعالج الدقيق داخل شريحة الكترونية واحدة مثل المتحكم stm32F4 الذى سنقوم بدراسته في هذه السلسلة بالتفصيل وهو من المتحكمات القوية وخاصة انه يحتوي على نواة ARM Cortex-M4

stm32

تاريخ المتحكم الدقيق :

فى سنة ١٩٦٩ سافر فريق من المهندسين اليابانيين من شركة BUSICOM الى الولايات المتحدة الأمريكية بدعوة من شركة INTEL حيث طلبت منهم بعض الدوائر المتكاملة للالات الحاسبة. ومن بين هذا الفريق مهندس يدعى Marcian Hoff قام بوضع اقتراح جديد هو ضرورة ايجاد حلول بديلة للدوائر متكاملة حيث يتم بها تخزين للبرامج المستخدمة.

وكان هذا الاقتراح يتطلب المزيد من وحدات الذاكرة فى مشروع الشركة اليابانية حول تصميم الدوائر المتكاملة الذى سوف يكون اكثر تعقيدا بهذا الاقتراح. ولكن مع الوقت تم التفكير فى اول متحكم دقيق وبدات فكرة Marcian Hoff دخول حيز التنفيذ.

ولتحقيق هذه الفكرة قام Frederico Faggin بمساعده شركة Intel فى انتاج اول متحكم دقيق وحصلت على الحق فى بيعه عام ١٩٧١ ولكن بعد شراء رخصة من شركة BUSICOM بدون ان تعلم ان لديها هذا الكنز. وفى خلال هذه السنة ظهر فى الاسواق المعالج الدقيق 4004 ويحتوى على ٤ بت. وفى هذا الوقت طالبت الشركة الاميريكية CTC شركتى INTEL و Texas Instruments بعمل معالج دقيق ٨ بت وفى عام ١٩٧٢ ظهر اول معالج دقيق ٨ بت فى الاسواق تحت اسم 8008 وكان يحتوى على ذاكرة 1١٦ كيلو بايت وكان سعره حوالى ٣٦٠ دولار .

وفى هذا العام ادركت معظم الشركات اهمية هذا الاختراع العجيب فى تغيير مستقبل الدوائر المتكاملة وعلى راسهم Motorola حيث قامت بانتاج 6820 و 6850. فى عام ١٩٧٥ اعلنت شركة The MOS Technology عن المعالج الدقيق 6501 و 6502 وسعره ٢٥ دولار.

كما قام المهندس Frederico Faggin بترك العمل مع شركة INTEL وتكوين شركته الخاصة Zilog Inc وفى عام ١٩٧٦ اعلن عن المتحكم Z80 حيث كان الاهتمام فى ذلك الوقت بتطوير برامج لى 8080 فلذلك قام Frederico Faggin باضافة امكانية التوافق مع المعالج الدقيق 8080 الى Z80 حيث كان يقوم بتنفيذ البرامج المكتوبة خصيصا لى 8080.

ومع زيادة سعة الذاكرة قام ايضا باضافة ذاكرة عشوائية RAM ولذلك حقق Z80 نجاحا باهرا فى ذلك الوقت. ونتيجة هذا قامت انتل بتطوير ال 8080 الى 8085 ولكن لم يصمد ايضا امام Z80. وبعدها قامت العديد من الشركات بتطوير ذلك الكنز وانتاج العديد من المتحكمات الدقيقة لها قدارت هائلة.

شركة ARM

من بين الشركات التي نشأت في ذلك الوقت شركة بريطانية تسمى Acorn Computers Ltd حيث قامت بتطوير معالج 6502 سنة ١٩٨١ وكان لهذه الشركة طموح وخطط لتصميم معالج ٣٢ بت خاص بها حيث قام مؤسسي الشركة Sophie Wilson بكتابة مجموعة التعليمات instruction set للمعالج ARM1 أما زميلها Steve Furber فقام بالعمل على تصميم شريحة اليكترونية لتناسب هذا المعالج الجديد وكان العام ١٩٨٥ حيث قامت شركة Acorn بانتاج اول معالج لها ARM1 وبالبدء في تصميم المعالج ARM2 وتم انتاج اول كمبيوتر يحتوي على معالج ARM سنة ١٩٨٧.

وفي سنة ١٩٩٠ تم تأسيس شركة ARM وهي أختصار لي Advanced RISC Machines Ltd كشراكة بين شركة Acorn وشركة Apple الامريكية المعروفة بالاضافة لشركة VLSI Technology ويرجع السبب في هذه الشراكة أن شركة أبل أرادت استخدام معالجات ARM وارادت ان يكون هذا المعالج خاصا بها وليس ملكية شركة Acorn التي كانت تعتبر منافسا لها في ذلك الوقت، وبفضل أموال شركة أبل وأدوات شركة VLSI Technology الرائدة في تصميم الدوائر المتكاملة وبخبرات وعقول شركة Acorn تم تأسيس شركة ARM وبناء عليه قامت شركة أبل بانتاج المساعد الرقمي Apple Newton واستخدمت به المعالج ARM 610 RISC ولكن للاسف لم يلقى النجاح المطلوب وتم في النهاية إلغاءه بناء على توجيهات من ستيف جوبز سنة ١٩٩٨.

newton-pen
المساعد الرقمي Apple Newton

أدركت شركة ARM انه لا يمكن النجاح وانتشار معالجاتها داخل جهاز واحد فقط سواء كان Newton او غيره ولهذا قام Robin Saxby المدير التنفيذي لشركة ARM في ذلك الوقت بتقديم نموذج جديد على خلاف المتبع في أغلب شركات أمثال انتل وموتورولا وهو نموذج الملكية الفكرية حيث يضمن لشركة ARM حقوق ملكيتها الفكرية لمعالجات الشركة ويمكن كل شركات الإلكترونيات والدوائر المتكاملة استخدام هذه المعالجات وكان لهذا النموذج أحد أهم العوامل في نجاح شركة ARM وأصبحت لديها شراكة مع كل الشركات المصنعة الإلكترونيات بدلا من ان يتم استخدام معالجتها في منتج واحد فقط حيث يتم اليوم استخدام معالجات ARM في الالاف الاجهزة.

الشراكة مع نوكيا

كان من أبرز واهم الشراكات في ذلك الوقت لشركة ARM هو شراكتها مع شركة NOKIA عملاقة الهواتف المحمولة ونظرا لبعض المخاوف لدي شركة نوكيا من استهلاك الذاكرة قامت ARM بانتاج معالج خاص ١٦ بت ذو استهلاك أقل للذاكرة وكان هاتف نوكيا ٦١١٠ هو اول ثمرة هذه الشراكة حيث يحتوي على معالج ذو بنية ARM7 والذي اعتمدته ARM للهواتف المحمولة نظرا للنجاح الكبير الذى حققه هاتف نوكيا ٦١١٠ وتم منح 165 رخصة للمعالج ARM7 وتم انتاج ١٠ مليار شريحة الكترونية تحتوي على هذا المعالج.

%D9%87%D8%A7%D8%AA%D9%81%20%D9%86%D9%88%D9%83%D9%8A%D8%A7%20%D9%A6%D9%A1%D9%A1%D9%A0
هاتف نوكيا ٦١١٠

عائلة ARM Cortex

قامت شركة ARM بانتاج المعالجات ARM9 وبعدها ARM9E ثم ARM10 ثم ARM11 مع التركيز على تقليل استهلاك الطاقة حتي عام ٢٠٠٥ أنتجت شركة ARM عائلة المعالجات الدقيقة ARM Cortex والتي تشمل على Cortex-A كأمتداد ARM11 مع التركيز على تطبيقات واحتياجات الهواتف المحمولة كما قامت أيضا بانتاج Cortex-R لتطيبقات الزمن الحقيقي وتلبية متطلبات الأداء الخارق، وذلك بالأضافة لي Cortex-M ذات التكلفة المنخفضة لتطبيقات الانظمة المدمجة واليوم أصبحت معالجات شركة ARM موجودة بجميع الهواتف الذكية حيث تحتل الشركة نسبة ٩٦٪ من المعالجات المستخدمة بالهواتف الذكية ومن أشهر الهواتف المستخدم به معالجات ARM هواتف Iphone.

لماذا stm32F4 و ARM Cortex-M4 وليس الأردوينو؟

رأينا الفترة الأخيرة انتشار الأردوينو وكيف اتاح الفرصة للكثيرين من الهواة والطلاب بدخول عالم برمجة الأنظمة المدمجة والمتحكمات الدقيقة ولكن يجب ملاحظة ان الأردوينو ليس متحكم دقيق وانما هو بيئة تطويرية متكاملة حيث يحتوي على متحكمات ٨ بت ATMega328 من انتاج شركة Atmel كذلك هناك Arduino IDE الذي يقوم بتسهيل عملية البرمجة والتعامل مع المتحكم الدقيق بدون الدخول في كثير من التفاصيل كذلك هناك الكثير من المكتبات البرمجية الجاهزة Arduino libraries التي يمكن استخدامها مباشرة والمتاحة للعديد من التطبيقات البرمجية. ولكننا اليوم بصدد تعلم كيفية التعامل مع متحكمات دقيقة قوية ٣٢ بت والتي يتم استخدامها في تطبيقات الأنظمة المدمجة الحقيقية كالموجودة في الهواتف الذكية والساعات والسيارات. كذلك نريد الخوض والتعمق في دراستنا لهذه المتحكمات الدقيقة حيث انه هناك الكثير من التفاصيل يتم اخفاءها في بيئة الأردوينو لتسهيل عملية البرمجة.

وإلى اللقاء في الدرس القادم

فيديو للدرس الأول والثاني


تعلم برمجة الأنظمة المدمجة والمتحكم الدقيق STM32 المعتمد على نواة ARM Cortex-M4
(مصطفى محمود العلواني) #2

جزاك الله خيرا… رجآء ان توضح لي الفرق بين von neuman and harvard
Ram and rom
لاني لم استطع فهمها وايها افضل


#3

اهلا مهندس مصطفى

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

أما الروم فهي للقراءة فقط ولا يمكن للبرنامج او المعالج الكتابة فيها وأنما يتم فيها تخزين البرنامج من خلال ال debugger.

في بنية von Neumann بيكون كود البرنامج والبيانات موجودين في الرام طبعا البرنامج بيتنقل من الروم عند بدء التشغيل وعلشان أكواد البرنامج وبياناته موجودين في نفس المكان فمينفعش ان المعالج يجيب كود البرنامج والبيانات في نفس الوقت ولكن تصميم المعالج بيكون أبسط من هارفارد.

أما في هارفارد فأكواد البرنامج بتفضل موجودة في الروم والمعالج بيجلب التعليمة المراد تنفيذها فقط من الروم ونفس الوقت بيجلب البيانات من الرام وده بيكون أسرع ولكن تصميم المعالج بيكون معقد علشان محتاج خطين للنقل بدل خط واحد.

طبعا مينفعش نقول ايهما أفضل لو محتاجين معالج أداءه عالي وسريع يبقي هارفارد لكن أكيد تصميم المعالج معقد ومحتاج خطين لنقل البيانات.

ممكن تطلع على الرابط الاتي فيه توضيح أكتر
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3839.html

لاحظ في النهاية مكتوب

Two separate memory systems can perform better, but would be difficult to implement.


(Abdullah) #4

جزاك الله خير

هل المتحكم STM32 يعمل بمعمارية von neuman or harvard ؟


#5

أهلا وسهلا بك مهندس عبد الله

أحب في البداية التوضيح أن STM32 ليس متحكم واحد بل عائلة كاملة تحتوي على معالجات مختلفة من أرم ومقسمة لمجموعات مثلا F1 F2 F3 F4 وهكذا كما موضح بالدرس الخامس

ودا جدول فيه كل مجموعة وايه النواة المستخدمة فيه والبنية المعمارية للنواة

STM32 Series ARM CPU Core Architecture
F7, H7 Cortex-M7F ARMv7E-M Harvard
F4, F3, L4, L4+, J Cortex-M4F Armv7E-M Harvard
F2, F1, L1, W, J Cortex-M3 Armv7-M Harvard
L0, J Cortex-M0+ Armv6-M Von Neumann
F0, J Cortex-M0 Armv6-M Von Neumann

#6

تم اضافة فيديو شرح للدرس الاول والثاني


(مصطفى محمود العلواني) #7

ما هو الفرق بين التعليمات والبيانات


#8

التعليمات هي الأوامر التي يقوم المعالج بتنفيذها زى عملية الجمع او الطرح او نقل الكتابة في الذاكرة أما البيانات فهي المتغيرات التي يتم تنفيذ التعليمة عليها مثلا

r1 = r2 + r3

هنا التعليمة هي r1 = r2 + r3
والبيانات هي r1 و r2 و r3