الدرس ٢ : مقدمة عن معالجات أرم ARM Cortex وبنية المعالج Cortex-M4

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

بعنوان

مقدمة عن معالجات أرم ARM Cortex وبنية المعالج Cortex-M4

تعتمد جميع المعالجات اليوم على بنية Instruction Set Architecture حيث يقوم المعالج بنتفيذ التعليمة الواحدة من تعليمات البرنامج خلال عدة دورات متعددة ويتم تنفيذ تعليمات البرنامج واحدة تلو الأخرى، فمثلا ١ذا كان المعالج يعمل بسرعة ١٨٠ ميجا هيرتز فسيكون زمن الدورة الواحدة هو ٥,٥ نانو ثانية وهو الزمن الذى يستغرقه المعالج لأداء وظيفة محددة من وظائف التعليمة على حسب بنية التعليمات المستخدمة.

ولحساب الزمن الكلي لتنفيذ البرنامج نقوم باستخدام المعادلة الأتية

زمن تنفيذ البرنامج = مجموع عدد الدورات اللازمة لتنفيذ جميع تعليمات البرنامج * زمن الدورة الواحدة

والتعليمة هي أبسط وظيفة يمكن أن يقوم بها المعالج وتتكون من Opcode ويمثل الوظيفة المطلوبة و Operand وهو المسجل الذى يتم تطبيق الوظيفة المطلوبة عليه فمثلا التعليمة الأتية

ADD r1, r2, r3 ;

تقوم بجمع قيمة r3 مع r2 ووضع الناتج في r1 وهي تعادل r1=r2+r3 وسنقوم لاحقا بالتعرف على تعليمات أرم في الدروس القادمة.

يوجد هناك نوعين من بنية مجموعة التعليمات Instruction Set وهما;

  • CISC - Complex instruction set architecture
  • RISC - Reduced instruction set architecture

في النوع الأول CISC تكون التعليمة الواحدة معقدة وتقوم بعمليات متعددة فمثلا يمكن لتعليمة واحدة التخزين في الذاكرة وتنفيذ عملية حسابية وأيضا القراءة من الذاكرة، مما يؤدي إلي تقليل عدد التعليمات في البرنامج وزيادة عدد الدورات اللازمة لتنفيذ تعليمة واحدة لانها معقدة. مما يؤدي إلي تقليل حجم البرنامج وبالتالي تقليل حجم الذاكرة حيث لا تحتاج معالجات بنية CISC لذاكرة كبيرة مثل ما هو الحال في بنية RISC.

أما في بنية RISC فالتعليمة بسيطة جدا وتقوم بوظيفة واحدة مما يتيح فعالية أكثر في الأداء ولكن يكون حجم البرنامج أكبر لانه سيحتاج عدد تعليمات أكثر. ولكن تبسيط التعليمة يؤدي لتقليل استهلاك الطاقة ولذلك هذه البنية مناسبة للاستخدام في الهواتف المحمولة.

وللعلم فشركة أنتل تعتمد على بنية CISC في تصميم معالجاتها أما شركة أرم فتعتمد على بنية RISC والتي أظهرت تفوقا واضحا في عالم الهواتف المحمولة.

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

ويرجى ملاحظة أيضا أن لدى شركة أرم بنية أساسية واحدة للمعالج ويتم مراجعتها من فترة لاخرى وهذه المراجعات تكون مثل ARMv6 ومثل ARMv7-A أو ARMv7-M أما المعالج Cortex-M4 فيعتمد على بنية ARMv7-M وهو المعالج الموجود داخل المتحكم الدقيق STM32F4 كما سنعرف لاحقا.

عائلات Cortex

تنقسم Cortex إلي ثلاث عائلات رئيسية وهي:

45

Cortex-A

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

Cortex-M

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

Cortex-R

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

والأن سنتعرف على بمزيد من التفصيل على المعالج Cortex-M4

مكونات المعالج Cortex-M4

وفي الصورة التالية نرى محتويات المعالج Cortex-M4

حيث يحتوي على الأتي

  • نواة معتمدة على بنية هارفارد مع pipeline من ٣ مراحل بالاضافة لوحدة اختيارية لحسابات العلامة العشرية floating-point computation.
  • وحدة للمقاطعات تسمى Nested Vectored Interrupt Controller - NVIC.
  • وحدة اختيارية لحماية الذاكرة Memory Protection Unit - MPU حيث تسمح بالتحكم في أماكن محددة فقط بالذاكرة وتمنع الوصول للأماكن الاخرى بناء على صلاحيات محددة للوصول.
  • وحدة لتصحيح واكتشاف الأخطاء debug معتمدة على JTAG أو Serial Wire Debug - SWD.
  • وحدة لتتبع اداء البرنامج Instrumentation Trace Macrocell - ITM حيث يمكن استخدام تقنية Serial Wire Viewer - SWV اثناء تنقيح البرنامج واكتشاف الاخطاء.
  • وحدة اختيارية لتتبع تنفيذ التعليمات Embedded Trace MacrocellTM - ETM.
  • وحدة Flash Patch and Breakpoint Unit - FPB توفر ٨ نقاط توقف breakpoint يمكن استخدامها اثناء تنقيح البرنامج واكتشاف الاخطاء.

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

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

5 إعجابات

1-كيف أعرف سرعة المعالج؟
2- هل ستختلف زمن الدورة اذا اختلفت التعليمه أم هي ثابته وكيف أحسبها؟
3- ما هو الـ pipeline ؟

جزاك الله خير :smiley:

إعجاب واحد (1)

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

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

وبالنسبة للميكروكنترولر المستخدم في السلسلة هو STM32F429 والموجود بالبوردة ديسكفري وأقصى سرعة له ١٨٠ ميجا هرتز يمكنك الأطلاع على الروابط الأتية حول الميكروكنترولر STM32F429ZI و بوردة ديسكفري

وبالنسبة للنقطة الثانية

زمن الدورة الواحدة للمعالج ثابت أثناء التشغيل يعتمد فقط على سرعته المحددة من قبل الشركة المصنعة وكما ذكرت في حالتنا السرعة ١٨٠ ميجا هرتز سيكون الزمن الدوري ٥,٥ نانو ثانية.

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

والنقطة الأخيرة حول pipeline فالشرح موجود بالدرس الرابع

بالفعل الـ pipeline لقيتها في وأنا في الدرس الرابع, زادك الله من علمه وفضله ووسع عليك.
برجح يا بشمهندس في نهاية الدروس تعمل كتاب زي مثلاً Simply ARM | أرم ببساطة.

3 إعجابات

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

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

إعجابَين (2)

فيه أحد الـ Instructors في الفيس بوك كان بيتكلم إنه قبل إستخدام الـ ARM يجب دراسة والإطلاع على أهم الموضوعات وطبعاً حضرتك ذكرت معظمهم بطريقه رائعه, إن أمكن لك ذكر ما تبقى منهم…

Module 1
-> Definition and Appliction of embedded system
-> Single-Tasking Vs. Multitasking
-> SoC Vs. CPU Vs. MCU
-> Basic design of ARM-based Soc
-> History and defination of Microprocessor
-> ARM processor families then foces on Cortex-M
-> Processor Architecture (ALU & Control unit & Bus Matrix & Cortex-M registers)
-> Harvard Vs. Von-Neumann
-> ISA
-> Thumb-2 technology
-> ARM instruction set
-> Isolated versus Memory - Mapped I/O
-> Little and Big endian

Module 2
-> System architecture(…ICode/DCode/System bus, AHP/APB bridge,BusMatrix)
-> Round Robin
-> Instruction cycle
-> Instruction pipelining
-> Programmer’s model
-> Processor mode
-> ARM AMBA 3 AHB-Lite Overview
- Bus Terminology
- Bus operation
-> MDK

Module 3
-> Reset and Clock Control (RCC)
- Reset sources & types
- Clock Features
- Peripheral clock gating
-> Power Control (PWR)
- MCU Power Supply
- Voltage regulator
- Power Sequence
- Power supply supervisor (POR/PDR & PVD)
- Low Power Modes (Sleep & Stop & Standby)

3 إعجابات

جزاك الله خيرا مهندس عبد الله على اقتراحك

وبالنسبة للمواضيع اللي اتكلمنا عليها في الدروس لحد الأن هي
Module 1
-> Definition and Appliction of embedded system
-> History and defination of Microprocessor
-> ARM processor families then foces on Cortex-M
-> Processor Architecture (ALU & Control unit & Bus Matrix & Cortex-M registers)
-> Harvard Vs. Von-Neumann
-> Little and Big endian
Module 2
System architecture(…ICode/DCode/System bus, AHP/APB bridge,BusMatrix)
Instruction cycle
Instruction pipelining
Programmer’s model
Processor mode

وبالنسبة النقاط اللي هيتم ذكرها ان شاء الله
-> Single-Tasking Vs. Multitasking
-> Round Robin
عند مناقشة RTOS
-> Thumb-2 technology
-> ARM instruction set
هنذكرهم ان شاء الله عند الحديث عن لغة الاسمبلي

بالنسبة للأجزاء الاتية تم ذكرهم وسيتم ذكرهم مرة اخرى بتفصيل أكتر
-> ISA
-> Isolated versus Memory - Mapped I/O
-> ARM AMBA 3 AHB-Lite Overview
Bus Terminology
Bus operation

و MDK سيتم مناقشته مع CMSIS

أما بالنسبة لجزء SoC فلن يتم مناقشة بالكورس هنكون مرتبطين أكثر مع الميكروكنترولر

وبالنسبة Module 3 هناقشه بالتفصيل بالأضافة لل Interrupts كمان هنتكلم عن MPU و FPU و وحدات ال Debug زى ITM و Macrocell

إعجاب واحد (1)

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

إعجاب واحد (1)

Instruction Set Architecture
صورة لقيتها في الطريق قلت اشاركم بيها :slight_smile:


لحساب زمن الدورة الواحد :
للي ميعرفش بيتحسب إزاي زيي :smile:
Time Period=1/Frequency
الزمن الدوري = 1 / سرعة المعالج = 1 / ( 180 ميجاهرتز) = 5.5نانو ثاية

3 إعجابات

ممكن كمان نشبه السائق بالسوفت وير اللي بتستخدم ال interface زي gear shifter علشان يقدر يتحكم في الهاردوير

إعجابَين (2)

مقلتش ايه رايك في الفيديو؟

مش هقول أنا هخلي الأرقام تتكلم, دي سكرين شوت أخدتها الصبح لعدد الناس اللي دخلت من اللينك اللي أنا نشرته فقط, والبوست اتعمل له من أكونتي الشخصي حوالي 32 مره شير منهم 10 انا اللي عملتهم على جروبات ,ده غير اللي اتعمل من جروبات تانيه …
أظن يا هندسة في ناس كتير مستنيه وأولهم أنا… ربنا يبارك لنا في حضرتك

إعجاب واحد (1)

جزاك الله خيرا مهندس عبدالله على مشاركة الدروس وان شاء الله تكون مفيدة للجميع.

Ahmed Eldeep

إعجابَين (2)