مرحبًا Khabrovchanin ، أريد
في هذه المقالة التكهن حول كيفية تطوير مبرمج متحكم. هذه المقالة مهمة للقراءة بالنسبة لأولئك الذين ، مثلي مرة ، لم يعرفوا أين يتطورون أكثر في مهنتهم. ربما يمكنك التقاط شيء مثير للاهتمام هنا.
في الوقت الحالي ، كنت أعمل كمبرمج لمدة 3 سنوات ، وحتى وقت قريب ، لم أكن أرى ما يجب فعله بعد ذلك. ومع ذلك ، قابلت بعد ذلك شخصًا لديه أكثر من 20 عامًا من الخبرة في برمجة الأنظمة المدمجة ، والتواصل معه ، حددت بعض الجوانب التي يمكنك تطويرها. هنا أريد أن أشاركهم ، وكذلك تجربتي الشخصية. لا أريد بأي حال من الأحوال تعليم أي شخص ، سأشارك فقط أفضل ممارساتي ، ويمكنك أن تقرر بنفسك ما إذا كانت هذه النصائح مفيدة أم لا.
كل شهر هناك مقال آخر للمبتدئين بمصباح LED وامض. في المقابل ، ببساطة لا توجد مقالات للمبرمجين المتوسطين. هنا أريد أن أوضح أن برمجة المتحكمات الدقيقة بشكل صحيح ليست مهمة تافهة. لا يمكن تعلم هذا في غضون عامين. في عام 2020 ، لا يختلف الأمر كثيرًا عن مهمة برمجة الأنظمة التقليدية ، حيث أصبحت MCs أكثر قوة وأكثر قوة. بالطبع أنا أتحدث عن مشاريع من مليون خط أو أكثر.
يبدو أن المقدمة تأخرت إلى حد ما ، لذا سأبدأ العمل. في هذه المقالة ، سيتم النظر فقط في جانب البرمجة ، ولا أتطرق إلى الدوائر. حاولت إعطاء الأولوية للعناصر ، لكن الفرق بين الأول والأخير صغير ، كل العناصر مهمة.
1. تعلم لغة C ++.
هذه نصيحة تافهة ، ومع ذلك ، رأيت أنه من المناسب تسليط الضوء عليها. الحقيقة هي أن كل شخص أعرفه تقريبًا يواصل البرمجة بلغة C الخالصة حتى الآن. لماذا هذا سيء؟ وفقًا لمصادر مختلفة ، يصبح المشروع الذي يحتوي على أكثر من 100000 خط (وهو ليس عددًا كبيرًا) غير مدعوم عمليًا في C. في عام 2020 ، وصلت برامج التحويل البرمجي لـ MK إلى مستوى تجميع الكود المصدري بحيث لا يختلف العادم من C و C ++. لكن سهولة قراءة الكود ستكون مختلفة تمامًا. الفئات ، OOP ، الوظائف الافتراضية ، المؤشرات الذكية ، إلخ. - كل هؤلاء مساعدين أقوياء للمبرمج. لسوء الحظ ، لا يمكن التفرد والتوصية بكتاب واحد ، حيث يوجد الكثير منهم.
2. دراسة أنماط التصميم.
ليس سراً أن كتابة برنامج C ++ جيد لا يزال يمثل تحديًا. هذه اللغة واسعة للغاية ، فهي تزخر بالعديد من الأدوات. ما هو نمط التصميم؟ هذا نوع من الدليل لحل المهام المتكررة بشكل متكرر. هنا يمكنني أن أوصي بعمل كلاسيكي ، ألا وهو عمل العصابة المكونة من أربعة "أنماط من التصميم الموجه للكائنات Gamma Erich، Helm Richard". من الصعب العثور على مبرمج C ++ عادي لم يقرأ هذا ، فلماذا نحن أسوأ؟
3. اكتشف عالم STL الرائع
أعتقد أن هذه المكتبة لا تحتاج إلى مقدمة. بالنسبة لأولئك الذين ما زالوا لا يعرفون ما هي ، فهذه هي مكتبة القوالب القياسية. يسمح لك بجعل شفرتك أقصر وأسهل في الفهم من خلال البرمجة العامة. هذه الأداة مدمجة بالفعل في C ++. ومع ذلك ، لسبب غير معروف ، من الصعب جدًا العثور على مشروع لـ MK ، حيث يتم استخدامه. على الرغم من أن المترجمات الحديثة (نفس IAR) تدعمها.
4. أضف اختبارات الوحدة إلى مشاريعك.
هنا ليس لدي شيء خاص لأكتبه. تمت كتابة أعمال لا حصر لها حول ماهيتها ولماذا. تأثير اختبارات الوحدة والتطوير من خلال الاختبار كبير. تتيح لك هذه الاختبارات اكتشاف العديد من الأخطاء حتى قبل إرسال الإصلاحات إلى OT. بالإضافة إلى ذلك ، هناك كتاب رائع حول هذا الموضوع: Jeff Langr - Modern C ++ Programming with Test-Driven Development (2013).
5. استكشف النواة
بالرغم من أننا نقوم ببرمجة وحدات تحكم دقيقة مختلفة ، إلا أن معظمها يحتوي على نواة من سلسلة CortexM. تحتوي Kernels على العديد من الميزات المختلفة ، مثل bitmasks أو debug timers. كل هذا يمكن أن يكون مفيدًا. من المفيد أيضًا معرفة كيفية حفظ RONs عند المقاطعة ، على سبيل المثال. هنا يمكنني أن أوصي بـ “ARM Cortex-M3 core. الدليل الكامل لجوزيف يو ".
6. تعلم المجمع
قد يبدو الأمر سخيفًا ، لكنني أعتقد أن معرفة المجمّع لتصحيح أخطاء التطبيقات أمر ضروري. بالإضافة إلى أنه من الممتع الكتابة عليها. بمساعدة Assembler ، يمكنك أن تفهم بوضوح ما يحدث عند نقطة التوقف المحددة هذه. الكتاب من الفقرة السابقة مناسب أيضًا هنا.
7. بضع كلمات حول IDE
تحولت مؤخرًا إلى حزمة VS + VGDB. تحتوي هذه الحزمة على مجموعة من المحترفين ، وهم يفوقون معًا الإضافة الوحيدة لـ IAR ، حجم الثنائي. في دول مجلس التعاون الخليجي ، يمكنك تعيين إشارات للتحذيرات الممتدة ، بالإضافة إلى وضع علامة على أن التحذير يجب اعتباره خطأ (بالمناسبة ، يوجد لدى IAR هذا أيضًا). مع هذا النهج ، يساعدك IDE نفسه على كتابة التعليمات البرمجية بشكل نظيف. هناك مقال جيد عن هذا
.على habr. بالمناسبة ، صادفت شركات تلزم ، في مهمة اختبار (أثناء مقابلة) ، بكتابة رمز بهذه العلامات.
ربما هذا كل شيء. نأمل ، إذا اتبعت الرابط ، وجدت ما كنت تبحث عنه. يرجى مشاركة ما يمكن أن يكون لمسارات التطوير الأخرى للمبرمجين المضمن في التعليقات.
ملاحظة في هذه المقالة ، هناك أشياء لم يتم ذكرها ، على سبيل المثال ، برمجة الأجهزة الطرفية المعقدة من خلال السجلات أو RTOS. من المفترض أن القارئ يمتلك بالفعل هذه المهارات ، أو على الأقل يعرف بوجودها.