دورة إحتراف و برمجة متحكمات ARM Cortex-M4

Greeting

دورة إحتراف و برمجة متحكمات ARM Cortex-M4

أتعلم أنّ أقوى أنواع المتحكّمات المصغّرة Microcontrollers في الوقت الحالي وفي المستقبل القريب هي المتحكّمات القائمة على نواة المعالجة ARM حيث أنّ أنوية المعالجة آرم تتفوّق على كل نظيراتها من المعالجات المعدّة لخدمة الأنظمة المدمجة بمراحل عالية من التّقنيّة والكفاءة والأداء والوثوقيّة والسّعر! 
أتعرف أنّ معظم التّطبيقات العالية الاحترافية والجودة مبنية على اساسها … ابتداءً بالأدوات المنزلية، مروراً بالهواتف النّقّالة وأنظمة الطّيران والملاحة والأنظمة العسكرية والطبّية وأجهزة المخابر البحثيّة وانتهاءً بأنظمة أتمتة المعامل .. على سبيل المثال لا الحصر . ببساطة هذه هي العقل المدبر لكثير من الابداعات والاختراعات، لانها تعطيك مساحة من البداع الالكتروني و التقني و المعلوماتي بلا حدود او عوائق. ماسيتمّ تقديمه في هذه الدّورة من معلومات ليس حكراً على نمط معين من الأنظمة المدمجة.
هنا ستتعلم بناء وبرمجة الأنظمة المدمجة بأعلى درجات الاحترافية، لن نكتفي بشرح التّعامل مع المكتبات البرمجية الجاهزة، أسلوب السّرد سيهدف لتهيئتك لتكون أحد المحترفين الذين يصممون هذه المكتبات ويبنون أنظمة مدمجة بدرجة عالية من الاحترافية والابداع.
  • أسلوب طرح الدّورة: Videos. 
  • الخبرات السّابقة المطلوبة: لايوجد .. 
  • سيتمّ شرح كلّ شيء تقريبًا بالتّفصيل قدر الامكان.
  • السّعر : الدّورة تهدف لنشر المعرفة والارتقاء بالفكر والانتاجية، والهجرة من الأساليب والتّكنولوجيا القديمة في بناء الأنظمة المدمجة إلى أحدث تّكنولوجيا متوافرة حتّى الآن، وعلى ذلك فالّدروة -بكل جزئيّاتها من معلومات ودعم فنيّ وإلى ماهنالك- هي مجّانيّة 100%.

لمحة عن مقدم الدورة :

محمّد نور الدّين، تولّد 1991 في مدينة حلب، خرّيج كلّيّة الصّيدلة بجامعة حلب 07.2013، وفي الوقت الحالي طالب دكتوراه بحثيّة في قسم علم تأثير الأدويّة والسّموم بجامعة Karl-Franzens Graz University في النّمسا. في الماضي كنت مطوّرا لتطبيقات الويب، وفي الوقت الرّاهن مطوّر ومبرمج للبرمجيّات الحاسوبيّة (Ex. C, C++, C#.Net, Java, etc...) ومصمّم ومبرمج للأنظمة المدمجة Embedded Systems.

Teacher : Mohammed Noureldin, born on 1991 in Aleppo - Syria, a pharmacist graduated from Aleppo University in 07.2013, and in the being time a PhD. candidate in Pharmacology and Toxicology department in Karl-Franzens Graz University - Austria. In addition, earlier a web developer, and in the being time a software programmer (Ex. C, C++, C#.Net, JAVA, etc...) and embedded systems designer and programmer
 

مقدمة عن دورة بناء وبرمجة الأنظمة المدمجة القائمة على المتحكمات المصغرة ذات نواة ARM Cortex-M4 


1- بعض التفاصيل عن الدّورة.


2- بعض الأساس النّظريّة

في هذا الدّرس سنُعرّف الأنظمة المدمجة ونتعرّف على أنواعها ومكوّناتها.
وسنتعرّف على الفرق بين المتحكّمات المصغّرة Microcontrollers و المعالجات المصغّرة Microprocessors.
وسنقوم ببناء نظامين مدمجين بسيطين بشكل نظري بحت لنتعرّف على طريقة التّفكير لمصممي الأنظمة المدمجة.
ثمّ سنتعرّف على معنى كلمة ARM ولماذا اخترت المتحكّمات ذات نواة ARM Cortex-M4 لهذه الدّورة.
وسنتعرّف على أهم الاعتبارات التي يجب اخذها بالحسبان أثناء تصميم نظامنا المدمج



3- بنية المتحكّم المصغّر

سنتحدّث بشكل أساسي في هذا الدّرس عن البنية والمكوّنات الأساسية للمتحكّم المصغّر ونشرح الآلية العامّة لعمله دون الدّخول بالتّفاصيل المعقّدة، وسنقارن بين بينيتي هارفارد ونيومان.


4- بنية المعالج

في هذا الدّرس سنتعرّف على بنية المعالج بشكل رئيسي وآلية عمله ثمّ نقارن بين بنيتي CISC & RISC.


 

5- أنظمة تمثيل الأعداد

في هذا الدّرس سنتعرّف على أنظمة العدّ (أنظمة تمثيل الأعداد) Numbers representation systems وكيفية التّحويل بينها Conversion وسنتطرّق إلى طريقة تمثيل الأعداد السالبة Negative numbers في الحجر الذّاكريّة Memory.


6- مراجعة لبعض أساس الهندسة الالكترونية

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


7- بعض المبادئ الأساسية في علم تصميم المنطق

في هذا الدّرس سنتطرّق بشكل سريع جداً إلى جانب ضئيل من علم تصميم المنطق وسنرى الفرق بين الدّارات المنطقية والتماثلية بعد مراجعة سريعة للترانزستورات العادية والحقلية، ثم سنصمم سويّة بوابتين منطقيتين بسيطتين جداً AND Gate & NOT Gate


8- الخرائط الذّاكريّة

في هذا الدّرس سنتطرّق لفهم الخرائط الذّاكرية وسنقوم بسرد كل العناوين التي ستخدم فهمنا لها.


9- التّشغيل الأوّل

في هذا الدّرس سنبدأ أول خطوة عملية، سنقوم بتنصيب بيئتي التطوير Keil Vision , Code Composer Studio ثمّ سنقوم بالتعرف على بيئة CCS وضبطها لتلائم متحكمنا.
ثمّ سنقوم بحقن أوّل برنامج على المتحكم للتأكّد من أنّ كل التوصيلات والتّعاريف تمّت بنجاح استعداداً للبدء بالتمعمّق في المتحكّم.


تنزيل حزمة برمجيات Tiva C ware من موقع شركة Texas Instument
تنزيل حزمة برمجيات Tiva C ware رابط مباشر
كتاب الهندسة المنطقية
كتاب تعلّم لغة C

10- وحدات الإدخال والإخراج متعددة الوظائف 1

في هذا الدّرس سنتعرّف على ماهيّة وحدات الإدخال والاخراج متعددة الأغراض GPIO وسنتعلّم الخطوات الأساسية لضبطها والتّعامل معها وسنقوم باستثمارها لتشغيل LED موجود مسبقاً على لوحة التّطوير الخاصّة بنا وذلك بالكتابة المباشرة على عناوين الذّاكرة. وسيكون تعاملنا مع الـ GPIO الفاتحة الفعلية للمرحلة العمليّة لتعاملنا مع الأنظمة المدمجة.

11- أقطاب الدّخل والخرج متعددة الوظائف 2 General Purpose Input Output GPIO

في هذا الدّرس سنتعلّم مبدأ تقنيع البتّات بواسطة الكيان الصّلب للكتابة/القراءة على/من مسجّل حالة أقطاب الدّخل والخرج متعددة الأغراض، وذلك لنتمكن من قراءة أو كتابة بتات معيّنة دون التّأثير على البتّات الأخرى.


12- المتغيّرات

في هذا الدّرس سنبدأ بتعاريف سريعة لمصطلحات Compiler, Linkber, LSB and MSB ثم سندخل في الموضوع الأساسي للجلسة وهو شرح ماهيّة المتغيّرات من وجهة نظر علم هندسة الأنظمة المدمجة، وسنتعرّف على أنواع المتغيّرات ذات الحجم الثّابت في مكتبة stdint.h، ثمّ سنميز بين المتغيرات المحلية والعامة، وفي النّهايّة سنشرح مفهوم Little and Big Endian.

13- وحدات الإدخال والإخراج متعدّدة الأغراض

في هذا الدّرس سنبدأ بتعريف المؤشّرات Pointers وسنتعرّف أيضا على تقنية الـ Type Casting ثمّ سنقوم باستغلال المؤشّرات للتّواصل مع العناوين الذّاكرية للمسجّلات الخاصّة بضبط وحدات الـ GPIO وسنتعرّف أيضاً على حلقة While.
وفي النّهاية سنستغلّ ماتعلّمناه لصنع برنامج Blinky خاص فيني لتشغيل واطفاء باعث ضوئي بمرور الزّمن.


14- أقطاب الدّخل والخرج متعددة الوظائف 4 General Purpose Input Output GPIO

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



15- تقنيّات في البرمجة

في هذا الدرس سنتعرف على :
  • Preprocessors Macros في لغة C.
  • الوظائف (الدّوال) Functions في لغة C.
  • حلقة for .
  • كلمة Volatile في لغة C ومفهوم تحسين الكود Code Optimization بواسطة المفسّر Compiler.
  • الـ Headers في لغة C.
  • تجزيء البرنامج إلى عدّة ملفّات.

16- تقنيّات التّعامل مع البتّات

العناوين المطروحة في هذا الدّرس:
  • نظرة سريعة على الـ Preprocessors Macros المكتوبة سلفاً من قبل الشّركة المصنّعة.
  • لمحة عن الـ Advanced High Performance Bus.
  • المتمّم الأحادي والمتمم الثّنائي للأعداد 1‘s & 2‘s Complement.
  • تقنيّات التّعامل مع البتّات Bit-Wise Operators.
  • تقنيع البتّات برمجيًا Software bit masking.


17- بعض أساسات نواة المعالجة

العناوين المطروحة في هذا الدّرس:
  • نظرة عامّة على مسجّلات الأغراض العامّة ومسجّلات الأغراض الخاصّة ضمن نواة المعالجة ARM.
  • شرح مسجّلات الـ xPSR.
  • تفسير مفهومي الحمل Carry والطّفحان Overflow في الحاسوب Computer.
  • Thumb VS. Thumb 2 VS. ARM Assembly instructions
  • مسجّل الـ PRIMASK.

18- بعض المعرفة الأساسية في لغة التّجميع Assembly

العناوين المطروحة في هذا الدّرس:
  • كتابة برنامج بسيط بلغة C وتحليل وفهم الكود الموافق له بلغة التّجميع Assembly.
  • لغة الآلة Machine Languageوعلاقتها بلغة التّجميع Assembly.
  • تحميل LDR القيم من الـ RAM إلى مسجّلات نواة المعالجة ARM.
  • تخزين STR القيم من مسجّلات نواة المعالجة إلى الـ RAM.
  • نقل القيم MOV بين مسجّلات نواة المعالجة أو إسناد قيم جديدة.
  • أداء بعض العمليات (ADD, SUB, CMP) على الأعداد داخل مسجّلات نواة المعالجة.
  • تغيير التدفّق الخطّي للبرنامج B بشكل غير مشروط، وايضًا بشكل مشروط (شرط LT).
  • Instructions Pipeline
  • كفاءة الحلقات Efficiency Loops في الأنظمة التي يكون الوقت فيها عاملًا حرجًا Critical. 

 19- المكدّس

النقاط التي سيتم شرحها في هذا الدّرس:
  • مفهوم المكدّس Stack.
  • مسجّل مؤشّر المكدّس Stack Pointer (SP).
  • إدخال Push وإخراج Pop البيانات من المكدّس.
  • حياة المتغيّرات المحلّيّةVariables Local.
  • Inline addressing offset.
  • Inline Assembly code. 

20- Functions in Assembly

في هذا الدرس سنتعرف على :
  • الوظائف Functions من وجهة نظر لغة التّجميع Assembly.
  • مفاهيم الـ Word، Half-word و Double-word ومحاذاة البيانات Data alignment في الخانات الذّاكريّة.
  • مسجّل الرّبط Link Register (LR).
  • التّفرّع مع الرّبط BL والتّفرّع مع التّحويل BX. 


21- المقاطعات

في هذا الدرس سنتعرف على :
  • مفهوم Busy wait (Polling).
  • مفهوم المقاطعات Interrupts ودورها في الحصول على نظام يعمل في الزّمن الحقيقي Real Time.
  • أولويّة المقاطعات Interrupts Priority.
  • مفهوم Nested Vector Interrupts Controller (NVIC).


share

7 التعليقات

إضغط هنا لـ التعليقات
solex_0
المدير
8 أغسطس 2015 في 11:19 ص ×

لم اجد كلمات اصف بها اعجابي بكل هذا
شكرا
جزاك الله خيراً

رد
avatar
horizon4electronics
المدير
8 أغسطس 2015 في 3:04 م ×

شكرا لك أخي الكريم على هذه الكلمات
و نسئل الله ان يعيننا و إياكم على تقديم محتوى علمي عربي بصيغة مبسّطة

رد
avatar
Ysuf_ka11
المدير
24 مايو 2016 في 2:02 ص ×

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

رد
avatar
Ysuf_ka11
المدير
1 يونيو 2016 في 12:33 م ×

اخي ننتظر تكملة الدورة ان شاء الله

رد
avatar
Unknown
المدير
4 سبتمبر 2016 في 10:52 ص ×

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

رد
avatar
abdallah lalas
المدير
29 يناير 2017 في 11:23 ص ×

السلام عليكم
كرا جزيلا لك ,,,لو فيه دورة بمقابل مادي اريد اكون اول المشاركين
بارك الله فيكم ,,,,,,,,عبدالله من الجزائر

رد
avatar
horizon4electronics
المدير
8 فبراير 2017 في 12:53 ص ×

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

رد
avatar
شكرا لك ولمرورك