طريقك لمجال الإيمبيدد سيستم embedded systems

1:46 م
Embedded Systems طريقك لمجال الإيمبيدد سيستم  
الشغل فى مجال الامبيديد سيستمز بيتضمن جزئيتين .. العلم بالمجال + العلم بمجال التطبيق اذا كان شغل كنترول او قياسات او شغل ميديا او تطبيقات حربية الخ الخ
هتكلم فى المقال ده على العلم نفسه:

1.Introduction to embedded systems
يعنى ايه امبيديد سيستم و دا متهيئلى كل الناس عرفاه

2.Assembly programming
ازاى تعمل برامج  باستخدام لغة الاسيملى عشان يكون الواحد فاهم البرمجة على مستوى قريب جدا جدا من الهاردوير..
كل بروسيسور بيكون ليه لغة الاسميبلى الخاصة بيه .. الكنترولر بيكون عبارة عن مجموعة وظائف بجانب البروسيسور .. البروسيسور دا قد يكون فى الـ avr
هو بروسيسور الشركة او بورسيسور آرم  ARM
على حسب.

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

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

3. C, advanced C and data structure
لغة السى ميزتها انها لغة وسطية  قريبة من الهاردوير لكن مش قوى زى الاسمبيلى.. و مفهوم السينتاكس بتاعتها لكن مش زى اللغات الهاى ليفيل..
المقصود بلغة السى يعنى ازاى تعرف متغيرات و فنكشنسز و آرراى و بويتنرز و ازاى تعمل برنامج يشتغل مظبوط.
الـ advanced C
ازاى تستخدم الحاجات اللى مش شائعة فى شغل الطلبة و الكلية فى البرامج بتاعتك.. زى انك تستخدم بوينترس كتيير و يكون بين البوينترس علاقات.. و تستخدم array of pointers to structures
و تتعامل مع الداتا مظبوط و تبعتها و تستقبلها فى فنشكنز مختلفة.. و يكون عندك خلفية عن مكتابات لغة السى و الفنكشنز المتاحة فيها
The standard library I mean
لغة السى ليها كذا استندرد .. اللى بنشتغل عليه فى الامبيديد هو
ANSI standard which is C99 & C89 as I remember
فيه ناس لعبت فى لغة السى و غيرت فيها و السنتاكس بتاعتها و طلعت استاندرس تانية.. احنا ملناش دعوة بيهم انما بنشتغل بالسى الاصلية اللى اسمها
ANSI C
الدات استركتشر.. مهمة عشان ازاى تخزن البيناتا بتاعتك و تعمل عمليات عليها.. و تعمل سيرش و توفر فى الذاكرة او فى الوقت او خلافة.

خلاصة: محتاج  تتقن لغة السى جدا جدا جدا و تعرف تستخدمها كويس و يكون عندك فكرة عن الداتا استركتشر
و عشان تعمل دا عليك بالاتى:
Watch and summarize VTC C programming course
And VTC advanced C programming course
لو حاجة وقفت قدامك ارجع لكتاب
The Complete reference
او ممكن تسال اى حد  embedded software engineer
لمزيد من التفاصيل فى النوت دى:
https://www.facebook.com/notes/hesham-abdelmohsein/c-programming/276138875752371
 

4.Software Engineering
علشان نعمل امبيديد سيستم زى الموبيل كدة فيه اكتر من 10 مليون سطر كود.. لبيشتغل عليه مئات المهندسين المختلفة عقلايتهم.. و بنحتاج نعدل فى الاكواد دى بعد سنة او اكتر و بالتالى بقه فى حاجة الى توحيد طريقة كتابة الاكواد و كتابة التعليقات عليها و شرحها.
و توحيد طريقة توصيف وظيفة الكود. و دا اللى اسمه سوفتواير انجنييرنج
UML يبقى شيئ طيب لو تعرف 
bugs و هى طريقة توصيف السوفتواير.. و لا مفر من انك تتعلم ازاى تكتب كود بطريقة صحيحة و تتجنب الـ  
الخلاصة: سيرش على جوجل فى المواضيع دى و هتلاقى مقالات رائعة و بسيطة و صغيرة
- How to write a bug free code
- How to comment your code
و فيه بعض اجزاء اللى هى ازاى تقسم الكود الى موديولس و ليفيلس و ازاى الاكواد تتكامل مع بعض لكنه موضوع طويل مش هينفع ادخل فيه فى النوت هنا

5.Computer Architecture
يعنى ازاى البروسيسور بيقدر يوصل للامكان المحددة داخل الذاكرة و ياخد منها المعلومة و يعمل عمليات عليها... و ايه هى اجزاء السيستم اللى بعمله و ازاى بتتواصل مع بعض.

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

5. Tooling
علشان نعمل الامبيديد سيستم بتاعنا بنحتاج ادوات تساعدنا على كدة زى
-      Compilers
البرامج اللى بتحول كود السى الى هيكسا فايل
e.g.: Micro C, Code Vision, AVR studio, IAR and other
IAR شركات كتيرة فى مصر بتشتغل على  
-      IDE
البرامج اللى بتساعدك على كتابة الكود بسهولة و تسهلك الكتابة
e.g.: Eclipse, Net beans.. etc
-      Simulators
البرامج اللى بتحكيلك تشغيل الكود بتاعك على كونترولر و توريلك الخرج هيكون ايه
Protus , Test Bench .. etc
-      Debuggers
البرامج او الاجهزة اللى بتخليك تقدر تشوف ازاى الكود بتاعك بيتنفذ فى الحقيقة و المشاكل بتحصل فين عشان تقدر تصلحه
e.g.: Protus, kits for debugging
- Hardware design tools
البرامج اللى بتسعدك على عمل تصميم الهادرواير و البرنتد سركت بتاعته
It's PCB
e.g.: Protus , Orcad , Mentor Graphics tools
Orcade شركات كتيرة فى مصر بتشتغل على الـ 
لكن فى مشاريع الكلية بنشتغل بروتس


6.Embedded C
يعنى ازاى تكتب كود لغة سى خاص بالامبيديد...
operating system كل الاختلاف عن لغة السى العادية هو انك بتطبق مبادئ الـ 
و انت بتكتب الكود .. زى
Resource sharing
مينفعش تعمل ديلاى كبير يستهلك البروسيسور
Memory management
دايما خد بالك انه المود ميخدش مكان كبير فى الذاكرة و انك تستخدم متغيرات قليلة و دايناميك قدر المستطاع
الخ الخ
الخلاصة: هات اكواد امبيديد كتيرة و اقراها و اتعلم منها و دايما حط المبادئ دى فى اكوادك

7.Computer interfacing
يعنى ازاى الكنترولر بتاعك يبعت و يستقبل داتا من الكمبيوتر العادى سواء عن طريق
Serial, usb, Bluetooth, Ethernet … etc

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

8. Testing of Embedded Systems
ازاى بعد ما عملنا الامبيدسيستم نعمله تيستنج.. سواء الامبيديد سوفتواير او الهاردوير
و دا موجود فى مادة السوفتواير انجنيرنج
Black test, white test, blue test.. etc

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

9.  Device drivers
دلوقتى عشان تقدر تشغل امكانبيات الكنترولر بتاعك لازم تستخدم درايفر او تعمل درايفر للحاجة دى.. يعنى ايه:
ADC الكنتلور دا فيه 
فانت محتاج تكتب كود يقدر يشغل دا بالمواصفات اللى انت عاوزها.. من حيث تردد السامبلنج و زمن التحويل امتى الخ الخ
فيه حلين.. امتا تكتب الدرايفر بايدك و امتا تستخدم واحد جاهز... الافضل انك تكتبه بايدك و لو مرة واحدة عشان تتقن الميكروكنترولر لانك هتتسال فيه فى الانترفيوهات.
other lces.. عشان الكنترولر يقدر يتكلم 
SPI,UART,I2C,…etc : بيحتاج يكون بينهم بروتوكول مثل  
فانت محتاج تكون فاهم نظرية التشغيل و ازاى تعمل الدرايفر بتاعه او ازاى تستخدمه على الاقل.
الخلاصة: مطلوب منك تفتح الداتا شيت بتاع الكنترولر و تقراء بتأنى الجزء اللى عاوز تعمله درايفر و تحاول تعمل درايفر و تختبره و ممكن تستعين بالاكواد الموجودة على النت كمرشد ليك.


10.  Real Time Systems and RTOS
بعض الامبيديد سيستمز بتحتاج لنظام تشغيل عليها عشان تقوم بالوظائف اللى المفروض تقوم بيها.. زى الموبيل.. محتاج انه يستقبل المكالمة و يحولهالك لصوت و يحول صوتك لاشارات و يبعتها و يستقبل فى نفس الوقت و ميحصلش تاخير فى تنفيذ التسكات دى.. اللى بيتحكم فى تنفيذ التسكات هو نظام التشغيل.
شركات قليلة فى مصر اللى بتشتغل فى الموضوع دا.. لكن مهم يكون عندك فكرة عنه
ROTSو دا شرح سهل لمفاهيم الـ 
http://documentation.renesas.com/doc/products/tool/apn/res05b0008_r8cap.pdf

دليل طالب إتصالات الذكى لسوق العمل


إنضم إلى مجتمع كبير من المهتمين بمجال الإلكترونيات فى الوطن العربى عن طريق :
1- الإعجاب بالصفحه : https://www.facebook.com/medo4tv
2 - الإنضمام لمجموعتنا على فيس بوك : https://www.facebook.com/groups/896138000441120/
3 - أو إضغط هنا : http://hyperurl.co/qloqto
Click Here

شارك الموضوع

مواضيع ذات صلة

2 comments

إدعمنا بـ comments
8 أكتوبر، 2015 2:10 م حذف

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

رد
avatar
10 أكتوبر، 2015 5:54 ص حذف

وجزاك مثله . باذن الله هيكون فيه كل اللى حضرتك طلبه ..شكرا لإهتمامك

رد
avatar