أهم المعلومات الجديدة التي تعلمتها في عام 2024: فيديوهات ومقالات

أشارك في هذه الصفحة أهم الدروس والفيديوهات والمقالات التي شاهدتها وتعلمت منها سنة 2024 وأودّ مشاركتها مع المجتمع

الفيديوهات

محاضرة لأحد مطوري برنامج KiCAD والتي يتحدث فيها عن تجربته في استخدام البرنامج في أحد المشاريع بالغة التعقيد ويتحدث عن الميزات المتقدمة التي استخدمها ومنها Multi-channel design والتي تسمح ببناء كتل نمطية Modular قابلة للنسخ واللصق على مستوى المخطط النظري والدارة المطبوعة. أيضاً يتحدث عن مزايا في البرنامج أضيفت مؤخرًا مثل Multi-drag وطريقة كتابة قواعد التصميم design rules بشكل متقدم باستخدام لغة وصفية خاصة.  


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


المحاضر يوعّي في محاضرته على جانب مُهمل في لغة CPP من كثير من المطورين وهو استخدام الخوارزميات المتاحة في المكتبة القياسية algorithms.h مثل swap و accumulate و partition وغيرها.


يشرح المحاضر في هذه المحاضرة كيفية بناء كود نمطي من غير كلفة على مستوى الكود وذلك باستخدام مكتبة compile-time-init-build والمطوّرة والمستخدمة في Intel.


في هذه المحاضرة يتحدث المحاضِر عن واقع تقنية البيجر لدى الهواة وشبكة DAPNET (Decentralized Amateur Paging Network) وتطبيقاتها ومنها MQTT over pager.


هذا الفيديو يوضح استخدام ميزة الكتل القابلة للبرمجة في برنامج المحاكاة QSPICE الذي أطلق قي 2023 والذي يُعد الخلف لبرنامج LTSPICE. استغل هذه الميزة صاحب الفيديو لمحاكاة إشارات PWM عبر كود CPP. إن مطوّر برنامج QSPICE هو نفسه مطور برنامج LTSPICE ولكن مع إضافة تحسينات كثيرة مفقودة في البرنامج الأصلي.


المقالات

Working with Strings in Embedded C++ – Niall Cooling

مقالة مفصلة ومهمّة جداً لطرق التعامل مع سلاسل الحروف بلغة CPP. 


NULL pointer protection with ARM Cortex-M MPU – Miro Samek 

كيفية منع مشكلة استخدام مؤشر بقيمة صفرية (العنوان صغر) والتي تسبب خطأ في التنفيذ Exception وذلك باستخدام وحدة حماية الذاكرة ARM Cortex-M MPU.


The Lost Art of Structure Packing

مقال تفصيلي عن البُنى المحزومة Packed Structure وشرح تفصيلي عن الـ alignment and padding في البٌنى 


A Tutorial on Portable Makefiles 

مقال واضح وغني بالمعلومات عن كيفية انشاء Makefiles


Are We Shooting Ourselves in the Foot with Stack Overflow? – Miro Samek

مقال بسيط ولكن مهم عن اقتراح تعديل مكان تقسيمة الذاكرة من خلال الـ Linkerscript من كونها فوق قسم الـData في الذاكرة إلى أن تكون آخر قسم في الذاكرة بحيث ولو حصل فيضان Overflow فإنها لن تُسبب تلف أي من المعلومات في الرام.


A Modern C Development Environment

درس في كيفية إنشاء بيئة تطوير بلغة السي عصرية وذلك باستخدام VSCode وإنشاء Docker image تحوي كل الأدوات اللازمة بما فيها Unit test و Github workflow. 


Leveraging Your Toolchain to Improve Security – Embedded Artistry

مقال لتوعية المطورين على أعلام flags مهمة في كل من المترجمين GCC و Clang يمكن استخدامها لضمان عدم حدوث بعض الأخطاء الشائعة خلال تطوير البرامجيات مثل Overflow أو استخدام متحولات عير مُهيّأة Uninitialized Variables و غيرها.


MCU Peripheral Forwarding | Interrupt

درس عن كيفية كتابة برامج حاسوبية قادرة على قراءة المنافذ من المتحكم باستخدام تقنية Chip Peripheral Forwarding وكاتب هذا الدرس هو مطور مكتبة RemoteMCU · GitHub.   


Exploring printf on Cortex-M | Interrupt 

الكثير من التفاصيل عن أداة التنقيح Debugging الأكثر استخدامًا في البرمجة في النظم المضمّنة printf.


Power switching RP2040 for low standby current applications | Raspberry Pi

ورقة تطبيقية عن طُرق وضع المتحكم بأقل وضعية لاستهلاك الطاقة أو إطفاء النظام كُليًّا مع قابلية إيقاظه خارجياً عبر كبسة واحدة.


SPI point-to-point extender – LTC4332

هذه الآيسية تسمح باتصال سلكي عبر ناقل SPI لمسافة طويلة تصل لـ 1200 متر.


Single I2C/SMBus Address Translator – LTC4316 

عندما تتصل بعض الأجهزة أو الحساسات على نفس ناقل الـ I2C ولا يمكن إجراء تعديل على عناوين الحساسات والأجهزة المتصلة أو لو في لحالة إضافة عدد متكرر من حساسات من نفس النوع والشركة ولها نفس العنوان ولا يمكن إضافتها منفصلة على ناقل منفصل. الحل يكون باستخدام مترجم للناقل ويسمى I2C translator ومثاله الشريحة LTC4316 التي تحول عنوان من قيمة إلى قيمة. بهذه الطريقة يستخدم المتحكم عنوان مختلف عن الجهاز الموصول مع المترجم ولكن ما يصل بالنهاية إليه هو العنوان الذي كان من المفترض أن يتعارض مع مكون آخر على الناقل I2C.


أهم الكتب التي قرأتها

Jacob Beningo – Embedded Software Design: A Practical Approach to Architecture, Processes, and Coding Techniques (2022)

كتاب مهم جداً ومليء بالنصائح والمعلومات القيّمة من كاتبه المهندس الاستشاري جايكوب بينينغو ويبدأ القسم الأول من الكتاب بالتصميم النظري للكود المضمّن وأهم الطرق المتبعة في ذلك Architecture and Design مع تبيان ميزة وسيئة كل طريقة وهذا يشمل أيضاً الأكواد التي تعمل في الزمن الحقيقي RTOS. ينتقل القسم الثاني إلى مناقشة أتمتة طرق إنتاج واختبار وتكاملية الكود المضمن أي الـAgile & DevOps بما يتضمن ذلك الاختبارات بنمط hardware-in-loop. أما القسم الثالث فهو عن كيفية كتابة الكود المضمّن وكيفية كتابة كود سهل التعديل والترحيل Porting عند تغيير المتحكم الصغري ويتضمن هذا القسم شرح تفصيلي لكيفية اختيار المتحكم الأنسب.


James W. Grenning – Test Driven Development for Embedded C-Pragmatic Bookshelf (2011)

إن مبدأ TDD أو Test Driven Development هو من المبادئ التطويرية في البرمجيات عمومًا والذي يساعد في بناء كود ذو وثوقية عالية يخضع لاختبارات Unit Test في كل الأجزاء. يعتمد هذا المبدأ على قيادة الاختبارات بناء الكود وليس كتابة الاختبارات بعد كتابة الكود. يقدم الكاتب في الكتاب هذا المبدأ ولكن من ناحية المتحكمات ويجيب بشكل عملي على أسئلة البعض في كيفية تطبيق مبدأ TDD في النظم المضمّنة ويثبت في كتابه فائدة هذه الطريقة في تحقيق كود متسق Modular يمكن إعادة استخدامه حتى في حال اختلاف المتحكم وأيضاً فائدة كتابة كود موثوق خاضع لاختبارات في كل أجزائه.


Cal Newport – Deep Work: Rules for focused success in a distracted world-Grand Central (2016)

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


Exit mobile version