آموزش متاپروگرمینگ پیشرفته تمپلیت‌های C++ برای سیستم‌های نهفته [ویدئویی] - آخرین آپدیت

دانلود Advanced C++ Template Metaprogramming for Embedded Systems [Video]

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره: سیستم‌های نهفته مدرن نیازمند فریم‌ورهایی هستند که تحت محدودیت‌های شدید حافظه و زمان‌بندی، سریع، کم‌حجم و قابل نگهداری باقی بمانند. تمپلیت‌های پیشرفته C++ به مهندسان کمک می‌کنند تا حجم پردازش را به زمان کامپایل منتقل کنند، سربار زمان اجرا (runtime) را کاهش دهند و انتزاع‌های سخت‌افزاری را با ایمنی نوع (type safety) قوی‌تری پیاده‌سازی کنند. این دوره با مبانی متاپروگرمینگ تمپلیت، شامل تمپلیت‌های تابع، تمپلیت‌های کلاس، تخصص (specialization)، تمپلیت‌های غیر-نوعی (non-type)، تمپلیت‌های متغیر-آرگومانی (variadic) و الگوی CRTP شروع می‌شود. سپس زبان‌آموزان این مفاهیم را در GPIO، UART، دسترسی به رجیسترها، کنترل LED و انتزاع‌های محیطی با استفاده از CubeIDE و زیرساخت‌های درایور جنریک به کار می‌گیرند. مثال‌های عملی، هر ویژگی زبان را به موارد استفاده واقعی در میکروکنترلرها مرتبط می‌کند. با تمرین پیکربندی زمان کامپایل و الگوهای درایور قابل استفاده مجدد، زبان‌آموزان فریم‌ورهایی می‌سازند که بدون کاهش عملکرد، به‌راحتی در پلتفرم‌های مختلف مقیاس‌پذیر باشند؛ در پایان این دوره، آن‌ها قادر خواهند بود از تکنیک‌های تمپلیت C++ برای طراحی نرم‌افزارهای نهفته بهینه و ایمن از نظر نوع استفاده کنند. - به‌کارگیری تمپلیت‌ها در طراحی فریم‌ور سیستم‌های نهفته - استفاده از constexpr و CRTP برای انتزاع‌های با هزینه صفر (Zero-cost) - طراحی درایورهای محیطی قابل استفاده مجدد و ایمن از نظر نوع - تخصص تمپلیت‌ها برای رابط‌های میکروکنترلر - کاهش بررسی‌های زمان اجرا از طریق منطق زمان کامپایل - پیکربندی درایورها با تمپلیت‌های متغیر-آرگومانی و غیر-نوعی مخاطبان این دوره توسعه‌دهندگان C++ نهفته، مهندسان فریم‌ور و برنامه‌نویسان باسابقه میکروکنترلر هستند که قصد دارند عملکرد، قابلیت استفاده مجدد و ایمنی نوع را با تکنیک‌های زمان کامپایل بهبود بخشند. داشتن درک اولیه از C/C++ و مفاهیم فریم‌ور نهفته پیش‌نیاز این دوره است. تمرکز بر متاپروگرمینگ C++ نهفته متصل به محدودیت‌های کلیدی فریم‌ور میکروکنترلر * پوشش انتزاع با هزینه صفر برای constexpr، CRTP، تخصص و تمپلیت‌ها در فریم‌ور * مثال‌های درایور محیطی که الگوهای زبانی را به طراحی‌های سخت‌افزاری متصل می‌کند.

سرفصل ها و درس ها

مقدمه Introduction

  • خوش‌آمدگویی Welcome

  • مهم: درباره بخش درایورهای جنریک IMPORTANT: About the Generic Drivers Section

مبانی متاپروگرمینگ تمپلیت در سیستم‌های نهفته Fundamentals of Template Metaprogramming in Embedded Systems

  • مقدمه‌ای بر متاپروگرمینگ تمپلیت در C++ Introduction to Template Metaprogramming in C++

  • تمپلیت‌های تابع و تمپلیت‌های کلاس Function Templates and Class Templates

  • چگونه تمپلیت‌ها انتزاع‌های هزینه-صفر را ممکن می‌کنند How Templates Enable Zero-Cost Abstractions

تمپلیت‌ها برای درایورهای محیطی و انتزاع سخت‌افزاری Templates for Peripheral Drivers and Hardware Abstraction

  • تخصص تمپلیت (Specialization) برای محیط‌های میکروکنترلر Template Specialization for Microcontroller Peripherals

  • استفاده از تمپلیت‌ها برای درایورهای محیطی و انتزاع سخت‌افزاری Using Templates for Peripheral Drivers and Hardware Abstraction

  • تمپلیت‌های متغیر-آرگومانی برای پیکربندی انعطاف‌پذیر درایور Variadic Templates for Flexible Driver Configuration

بهینه‌سازی زمان کامپایل با متاپروگرمینگ تمپلیت Compile-Time Optimization with Template Metaprogramming

  • پلی‌مورفیسم استاتیک در مقابل توابع مجازی در سیستم‌های نهفته Static Polymorphism vs Virtual Functions in Embedded Systems

  • الگوی تمپلیت تکرار شونده عجیب (CRTP) برای ارث‌بری هزینه-صفر Curiously Recurring Template Pattern (CRTP) for Zero Cost Inheritance

  • کاربردهای واقعی متاپروگرمینگ تمپلیت در سیستم‌های نهفته Real-World Applications of Template Metaprogramming in Embedded Systems

راه‌اندازی و آماده‌سازی Setting Up

  • دانلود CubeIDE Downloading CubeIDE

  • نصب CubeIDE Installing CubeIDE

  • دریافت مستندات مورد نیاز Getting the Required Documentation

  • دریافت پکیج‌های مورد نیاز برای توسعه Bare Metal Getting the Required Package for Bare-Metal Development

  • تست تنظیمات پروژه Testing the Project Setup

توسعه درایورهای جنریک برای مثال‌های اجرایی Developing Some Generic Drivers for Running Examples

  • فعال‌سازی واحد ممیز شناور (FPU) Enabling the Floating Point Unit (FPU)

  • توسعه درایور UART: تحلیل مستندات Developing a UART Driver - Analyzing the Documentation

  • توسعه درایور UART: لیست کردن مراحل Developing a UART Driver - Listing Out the Steps

  • توسعه درایور UART: پیاده‌سازی تابع Init Developing a UART Driver - Implementing the Init. Function

  • توسعه درایور UART: پیاده‌سازی تابع Write Developing a UART Driver - Implementing the Write Function

  • توسعه درایور UART: تست درایور Developing a UART Driver - Testing the Driver

  • توسعه تایم‌بیس سیستم: تحلیل مستندات Developing the System Timebase - Analyzing the Documentation

  • توسعه تایم‌بیس سیستم: پیاده‌سازی تابع Init Developing the System Timebase - Implementing the Init. Function

  • توسعه تایم‌بیس سیستم: سایر توابع Developing the System Timebase - The Rest of the Functions

  • توسعه تایم‌بیس سیستم: تست تایم‌بیس Developing the System Timebase - Testing the Timebase

  • BSP: لیست کردن توابع مورد نیاز BSP: Listing Out the Required Functions

  • نوشتن درایور LED Writing the LED Driver

  • نوشتن درایور PushButton Writing the PushButton Driver

  • تست پکیج پشتیبانی از برد (BSP) Testing the Board Support Package

  • تحلیل مستندات Analyzing the Documentation

  • لیست کردن مراحل توسعه درایور ADC Listing Out the Steps for Developing the ADC Driver

  • نوشتن تابع مقداردهی اولیه ADC Writing the ADC Initialization Function

  • نوشتن تابع خواندن ADC Writing the ADC Read Function

  • تحلیل مستندات درایور SPI Analyzing the Documentation for the SPI Driver

  • مقداردهی اولیه پین‌های GPIO برای SPI Initializing the GPIO Pins for SPI

  • پیاده‌سازی ساختارها برای پارامترهای پیکربندی Implementing Structures for Configuration Parameters

  • پیکربندی پارامترها Configuring the Parameters

  • نوشتن تابع مقداردهی اولیه SPI Writing the SPI Initialization Function

  • نوشتن تابع ارسال SPI (بخش اول) Writing the SPI Transmit Function (Pt.1)

  • نوشتن تابع ارسال SPI (بخش دوم) Writing the SPI Transmit Function (Pt.2)

  • ارسال داده‌های 16 بیتی Transmitting 16-bit Data

  • ارسال داده‌های 8 بیتی Transmitting 8-bit Data

  • دریافت داده‌ها Receiving Data

  • تست درایور SPI Testing the SPI Driver

  • تحلیل مستندات درایور I2C Analyzing the Documentation for the I2C Driver

  • I2C: مقداردهی اولیه GPIO I2C: The GPIO Initialization

  • پیکربندی پارامترهای I2C Configuring the I2C Parameters

  • پیاده‌سازی تابع خواندن I2C Implementing the I2C Read Function

  • پیاده‌سازی تابع خواندن Burst در I2C Implementing the I2C Burst Read Function

  • پیاده‌سازی توابع نوشتن I2C Implementing the I2C Write Functions

انتقال از C رویه‌ای به OOP در فریم‌ورهای نهفته Transitioning from Procedural C to OOP in Embedded Firmware

  • اصول بازنویسی (Refactoring) کد C نهفته به C++ نهفته Principles for Refactoring Embedded C Code to Embedded C++

توسعه درایور کلاس GPIO در C++ Developing the GPIO C++ Class Driver

  • به‌روزرسانی فضای کاری (Workspace) Updating the Workspace

  • پیکربندی مسیرهای پروژه برای توسعه C++ Configuring the Project Paths for C++ Development

  • پیاده‌سازی اعضای خصوصی (Private) کلاس Implementing the Private Members of the Class

  • پیاده‌سازی سازنده (Constructor) کلاس Implementing the Class Constructor

  • پیاده‌سازی متدهای کنترل پین Implementing the Pin Control Methods

  • تست کلاس GPIO Testing the GPIO Class

  • تفکیک فایل‌های رابط (Interface) و پیاده‌سازی (Implementation) Having Separate Interface and Implementation Files

توسعه درایور کلاس UART در C++ Developing the UART C++ Class Driver

  • پیاده‌سازی اعضای خصوصی Implementing the Private Members

  • پیاده‌سازی سازنده کلاس Implementing the Class Constructor

  • پیاده‌سازی متدهای عمومی (Public) Implementing the Public Methods

  • تست کلاس UART Testing the UART Class

کار با تمپلیت‌های تابع Working with Function Templates

  • سینتکس جنریک تمپلیت‌های تابع Generic Function Template Syntax

  • درک کلمه کلیدی 'typename' Understanding the 'typename' Keyword

  • کار با چندین پارامتر تمپلیت Working with Multiple Template Parameters

  • Overloading در تمپلیت‌های تابع Overloading Function Templates

  • به‌روزرسانی فضای کاری Updating the Workspace

  • پیاده‌سازی تمپلیت تابع Implementing the Function Template

  • تست تمپلیت تابع Testing the Function Template

  • پیاده‌سازی تمپلیت تابع برای انواع داده‌های مختلف Implementing the Function Template for Multiple Data Types

کار با تمپلیت‌های کلاس Working with Class Templates

  • مروری بر تمپلیت‌های کلاس Overview of Class Templates

  • پیاده‌سازی اعضای خصوصی Implementing the Private Members

  • نوشتن اعلان تمپلیت Writing the Template Declaration

  • پیاده‌سازی متد 'Push' Implementing the 'Push' Method

  • پیاده‌سازی سایر متدها Implementing the Rest of the Methods

  • تست تمپلیت کلاس Testing the Class Template

کار با تمپلیت‌های غیر-نوعی (Non Type) Working with Non-Type Templates

  • کار با تمپلیت‌های غیر-نوعی (Non Type) Working with the Non-Type Template

کار با تمپلیت‌های متغیر-آرگومانی (Variadic) Working with Variadic Templates

  • درک تمپلیت‌های متغیر-آرگومانی (Variadic) Understanding Variadic Templates

  • کار با تمپلیت‌های متغیر-آرگومانی (بخش اول) Working with Variadic Templates (Pt.1)

  • کار با تمپلیت‌های متغیر-آرگومانی (بخش دوم) Working with Variadic Templates (Pt.2)

  • تست پیاده‌سازی تمپلیت متغیر-آرگومانی Testing the Variadic Template Implementation

تمپلیت کلاس LED The LED Class Template

  • استخراج اطلاعات رجیستر از مستندات Getting the Register Information from the Documentation

  • پیاده‌سازی فضای نام (Namespace) رجیستر Implementing the Register Namespace

  • پیاده‌سازی رابط برای درایور LED زمان اجرا (Run Time) Implementing the Interface for the Run-Time LED Driver

  • درایور LED زمان اجرا: سازنده (بخش اول) Run-Time LED Driver - The Constructor (Pt.1)

  • درایور LED زمان اجرا: سازنده (بخش دوم) Run-Time LED Driver - The Constructor (Pt.2)

  • پیاده‌سازی سایر متدها Implementing the Other Methods

  • پیاده‌سازی درایور LED زمان کامپایل Implementing the Compile-Time LED Driver

  • پیاده‌سازی کلاس تمپلیت LED Implementing the LED Template Class

  • تست درایور LED زمان کامپایل Testing the Compile-Time LED Driver

  • تست درایور LED زمان اجرا Testing the Run-Time LED Driver

تمپلیت دسترسی به رجیستر The Register Access Template

  • تحلیل نقشه حافظه برای آدرس‌های پایه محیطی Analyzing the Memory Map for Peripheral Base Addresses

  • ترتیب‌بندی فضاهای نام Ordering the Namespaces

  • استخراج آدرس‌های AHB1 و RCC Deriving the AHB1 and RCC Addresses

  • استخراج آدرس‌های پایه محیط‌های GPIO Deriving the Base Addresses of the GPIO Peripherals

  • تعریف رجیسترهای مربوط به RCC Defining the Relevant RCC Registers

  • استخراج آفست‌های رجیسترهای مختلف GPIO Deriving the Offsets of the Various GPIO Registers

  • تعریف رجیسترهای مربوط به GPIO Defining the Relevant GPIO Registers

  • تکمیل فایل رابط رجیسترهای MCAL Completing the MCAL Register Interface File

کلاس تمپلیت برای دسترسی به رجیستر The Template Class for Register Access

  • درک پارامترها Understanding the Parameters

  • پیاده‌سازی متدهای کلاس تمپلیت Implementing the Methods of the Template Class

تست تمپلیت دسترسی به رجیستر Testing the Register Access Template

  • فعال‌سازی دسترسی کلاک به GPIO Enabling Clock Access to the GPIO

  • پیکربندی پین به عنوان خروجی Configuring the Pin as Output

  • تغییر وضعیت (Toggle) پین Toggling the Pin

تمپلیت با نقشه‌برداری بیتی (Bit Mapping) Template with Bit-Mapping

  • پیاده‌سازی BitField32 Implementing the BitField32

  • پیاده‌سازی ساختار تمپلیت برای نقشه‌برداری دینامیک رجیستر Implementing the Template Structure for Dynamic Register Mapping

  • تست نقشه‌برداری دینامیک رجیستر Testing the Dynamic Register Mapping

نمایش نظرات

آموزش متاپروگرمینگ پیشرفته تمپلیت‌های C++ برای سیستم‌های نهفته [ویدئویی]
جزییات دوره
11h 48m
108
Packtpub Packtpub
(آخرین آپدیت)
از 5
ندارد
دارد
دارد
Israel Gbati
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Israel Gbati Israel Gbati

Embedded Firmware Engineer نام من اسرائیل است ، من بیش از 7 سال است که در فضای سیستم جاسازی شده تحقیق و کار می کنم. در Udemy ده ها هزار دانش آموز در سیستم های جاسازی شده با تمرکز بر موضوعاتی مانند برنامه نویسی Assembly ، طراحی سیستم عامل های زمان واقعی ، توسعه سیستم عامل و پردازش سیگنال دیجیتال آموزش داده ام. من قادر به آموزش این مباحث هستم زیرا در کارهای روزمره مفاهیمی را از این مباحث استفاده می کنم. به یکی از دوره های من بپیوندید و ببینید چطور پیش می رود. همیشه می توانید درخواست بازپرداخت کنید.