آموزش برنامه‌نویسی سخت‌افزار سیستم‌های امبدد پیشرفته از پایه (Bare-Metal Programming Ground Up™) - آخرین آپدیت

دانلود Advanced Embedded Systems Bare-Metal Programming Ground Up™

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:

آیا از کپی کردن و چسباندن کدی که درک نمی‌کنید خسته شده‌اید؟

در اینجا مروری بر آنچه در این دوره پیشرفته دریافت خواهید کرد آورده شده است...

  • توسعه درایورهای DMA بدون کتابخانه (Bare-Metal):

    این دوره به طور کامل پیچیدگی‌های رابط دسترسی مستقیم حافظه (DMA) را آشکار می‌کند. بیش از ۵۰٪ دوره به این موضوع اختصاص دارد، بنابراین تا پایان این دوره بر رابط DMA مسلط خواهید شد.

    ما به طور کامل به توسعه درایورهای DMA بدون کتابخانه زیر خواهیم پرداخت:

    • درایور انتقال DMA حافظه به حافظه بدون کتابخانه
    • درایور تبدیل معمولی ADC با DMA بدون کتابخانه
    • درایور تبدیل ADC با DMA که توسط تایمر فعال می‌شود، بدون کتابخانه
    • درایور RX/TX UART با DMA بدون کتابخانه
    • درایور RX/TX SPI با DMA بدون کتابخانه
    • درایور RX/TX I2C با DMA بدون کتابخانه
    • درایور PWM با DMA بدون کتابخانه
  • توسعه درایورهای RTC بدون کتابخانه (Bare-Metal):

    رابط ساعت زمان واقعی (RTC) یکی دیگر از رابط‌های پیشرفته است که در این دوره توضیح داده می‌شود. ما نظریه ساعت‌های زمان واقعی را مطالعه خواهیم کرد، قابلیت‌های ساعت زمان واقعی روی میکروکنترلر خود را بررسی می‌کنیم و سپس درایورهای زیر را برای ساعت زمان واقعی توسعه می‌دهیم.

    • درایور تقویم RTC بدون کتابخانه
    • درایور آلارم RTC بدون کتابخانه
    • درایور مهر زمانی RTC بدون کتابخانه
    • درایور تشخیص دستکاری RTC بدون کتابخانه
  • توسعه درایورهای تایمر Watchdog بدون کتابخانه (Bare-Metal):

    تایمرهای Watchdog جزء ضروری هر دستگاه تعبیه شده (embedded) مستحکم هستند. به عقیده من، هیچ دستگاه تعبیه شده‌ای نباید بدون پیاده‌سازی تایمر Watchdog مستقل (IWDG) به بازار عرضه شود. در این دوره دلیل این عقیده را خواهید فهمید.

    در این دوره درایورهای تایمر Watchdog زیر را توسعه خواهیم داد:

    • درایور تایمر Watchdog مستقل (IWDG) بدون کتابخانه
    • درایور تایمر Watchdog پنجره‌ای (WWDG) بدون کتابخانه
  • کار با حالت آماده‌باش (Standby Mode) و بیدار شدن (Wakeup):

    دانستن نحوه قرار دادن دستگاه‌های تعبیه شده خود در حالت کم مصرف و خروج از آن، توانایی شما را در توسعه راهکارهای تعبیه شده با مصرف بهینه انرژی به میزان قابل توجهی بهبود می‌بخشد. این دوره به شما می‌آموزد که چگونه دستگاه خود را با استفاده از روش‌های مختلف در حالت آماده‌باش قرار دهید و از آن خارج کنید.

    به طور خاص، درایورهای زیر را توسعه خواهیم داد:

    • درایور حالت آماده‌باش و پین بیدارباش بدون کتابخانه
    • درایور حالت آماده‌باش و تایمر بیدارباش RTC بدون کتابخانه
  • هنر اشکال‌زدایی (Debugging):

    دانستن نحوه اشکال‌زدایی صحیح سفت‌افزار (firmware) شما باعث صرفه‌جویی در زمان و هزینه شما می‌شود و حتی ممکن است به دلیل سطح ناامیدی و استرسی که از آن اجتناب خواهید کرد، عمر شما را طولانی کند.

    در این دوره جنبه‌های نظری اشکال‌زدایی را درک خواهید کرد، انواع مختلف اشکال‌زدایی مانند اشکال‌زدایی عملکردی (functional debugging) و اشکال‌زدایی عملکردی (performance debugging) را درک می‌کنید و ابزارها و روش‌های مختلف مورد استفاده در سناریوهای مختلف را یاد می‌گیرید.

    برخی از تکنیک‌هایی که بر آن‌ها مسلط خواهید شد عبارتند از:

    • روش‌های شناسایی علت HardFault
    • کشف نتایج غیرعادی
    • اندازه‌گیری زمان اجرا یک الگوریتم با استفاده از تایمر
    • اندازه‌گیری زمان اجرا یک الگوریتم با استفاده از تحلیلگر منطقی (Logic Analyzer)
    • کار با خروجی آرایه‌ها (arrays dumps)
    • تکنیک‌های اشکال‌زدایی برای تایمرها

با رویکردی مبتنی بر برنامه‌نویسی، این دوره برای ایجاد پایه‌ای مستحکم در توسعه سفت‌افزار بدون کتابخانه (bare-metal firmware development) برای میکروکنترلرهای مبتنی بر ARM طراحی شده است. هدف این دوره آموزش نحوه جستجو در مستندات مرجع میکروکنترلر و دیتاشیت برای استخراج اطلاعات صحیح برای ساخت حرفه‌ای درایورهای رابط و سفت‌افزار است. برای دستیابی به این هدف، هیچ کتابخانه‌ای در این دوره استفاده نمی‌شود، صرفاً برنامه‌نویسی C تعبیه‌شده بدون کتابخانه و دستکاری مستقیم رجیسترها.

با حفظ سادگی، این دوره با بردهای توسعه مختلف ARM Cortex-M ارائه می‌شود تا دانشجویان بتوانند تکنیک‌ها را با استفاده از یک برد توسعه ARM Cortex-M انتخابی خود تمرین کنند. این نسخه از دوره از STMicroelectronics STM32F4-NUCLEO استفاده می‌کند که دارای میکروکنترلر ARM Cortex-M4 است.

این دوره سطح پیشرفته برای دوره مشهور جهانی Embedded Systems Bare-Metal Programming Ground Up™ (STM32) است. شما باید قبل از شرکت در این دوره، دوره Embedded Systems Bare-Metal Programming Ground Up™ (STM32) را گذرانده باشید.

با درک این موضوع، اجازه دهید به شما بگویم...

دقیقاً آنچه دریافت می‌کنید

این دوره با هر دوره‌ای که تاکنون گذرانده‌اید تفاوت چشمگیری دارد زیرا بیشتر شبیه یک "راهنمای میدانی" حرفه‌ای برای توسعه سفت‌افزار بدون کتابخانه STM32 است.
دلیل این امر این است که هیچ بخش اضافه یا بی‌محتوایی وجود ندارد. مستقیماً به موضوع اصلی می‌پردازد و به شما نشان می‌دهد دقیقاً چه کاری را چگونه انجام دهید و چرا.

به علاوه، این کار آسان است.

و شما بلافاصله تمام اسطوره‌هایی را که من شخصاً برای ساخت سفت‌افزار برای دستگاه‌های مصرفی در زندگی حرفه‌ای خود استفاده می‌کنم، "درک خواهید کرد".

این صرفاً فراتر از کار کردن کد است

ببینید، این دوره زندگی حرفه‌ای شما را برای همیشه تغییر خواهد داد. در اینجا گفته یکی از دانشجویان درباره دوره Embedded Systems Bare-Metal Programming Ground Up™ (STM32) آمده است:

"من این دوره را به همه مبتدیان پیشنهاد می‌کنم. مفاهیم در توالی درست پوشش داده شده‌اند. و بهترین بخش این مجموعه سخنرانی، یادگیری نحوه کاوش مستندات مرجع و دیتاشیت‌ها است."

در اینجا گفته یکی دیگر از دانشجویان آمده است:

"برای درک عمیق‌تر برنامه‌نویسی میکروکنترلر بسیار بسیار مفید است! از این پس برای من توسعه کد بسیار آسان‌تر شده است زیرا پایه و اساس آن را درک می‌کنم، بنابراین برای توسعه و اشکال‌زدایی کد با اطمینان و تجربه بیشتری عمل می‌کنم. واقعاً، این دوره برای پیوند دادن دانش سخت‌افزار با مهارت‌های کدنویسی بسیار مفید است. این شکاف بین آن‌ها را پر می‌کند. از آن سپاسگزارم! :)"

یک دانشجوی سوم:

"من یک مهندس کاربر تراشه نیمه‌هادی حرفه‌ای با ۳۰ سال تجربه در طراحی محصول تعبیه شده در سراسر جهان در برنامه‌های سیستمی هستم. می‌توانم بگویم این معلم با قلب واقعی خود دانش سال‌های زیادی را به دانشجویان منتقل می‌کند. بله. من سرعت و سبک تدریس او را دوست دارم!"

توسط بیش از ۸۰۰۰ دانشجو با بیش از ۱۰۰۰ نقد و بررسی گذرانده شده است

اگر حداقل یکی از موارد زیر در مورد شما صدق می‌کند، ادامه مطلب را بخوانید، در غیر این صورت به سادگی از این دوره بگذرید:

"فرار از"

  1. کپی/چسباندن کدی که درک نمی‌کنید
  2. استفاده از کتابخانه‌ها و فایل‌های هدر شخص ثالث مانند HAL، LL و StdPeriph
  3. تجربه باگ‌هایی که درک نمی‌کنید
  4. ترس از مستندات فنی مانند مستندات مرجع و دیتاشیت تراشه
  5. سندرم فریبنده (Imposter syndrome)

"رسیدن به"

  1. ساخت هر خط کد از ابتدا با نوشتن مستقیم در فضای حافظه میکروکنترلر.
  2. عدم استفاده از کتابخانه‌ها یا فایل‌های هدر شخص ثالث
  3. درک و نوشتن هر خط کد توسط خودتان - بدون کپی/چسباندن
  4. استفاده موثر از اشکال‌زدا برای تجزیه و تحلیل و رفع هرگونه اشکال
  5. توسعه مهارت در مهارت‌های توسعه تعبیه شده و گام‌های بعدی را با اطمینان بردارید

پس همانطور که گفتم، چیزهای بیشتری از صرف کار کردن هر قطعه کد وجود دارد.

این دوره مخصوص کسانی طراحی شده است که از کپی/چسباندن متنفرند

گوش کنید. اگر "کپی/چسباندن" را دوست ندارید، تنها نیستید. من هم از آن متنفرم. من ترجیح می‌دهم قطعه کدی داشته باشم که خودم از ابتدا نوشته‌ام و کار نمی‌کند تا کد کار شده دیگران که کپی و چسبانده‌ام.

و به همین دلیل است که من ماه‌ها صرف طراحی و ضبط این دوره کرده‌ام که در آن به شما نشان می‌دهم چگونه هر رجیستر مورد استفاده را پیدا کنید و معنی هر مقدار هگزادسیمال نوشته شده در رجیستر را بدانید.

همچنین این دوره با ضمانت بازگشت وجه ارائه می‌شود، بنابراین چیزی برای از دست دادن ندارید.


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

راه اندازی 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

اصول اولیه اشکال زدایی فریمور Essentials of Firmware Debugging

  • مقدمه ای بر اشکال زدایی Introduction to Debugging

  • آشنایی با نمای اشکال زدایی Getting familiar with the Debug View

  • کار با ماژولtrace Macrocell ابزار دقیق (ITM) Working with the Instrumentation Trace Macrocell (ITM)

  • تغییر مسیر دهی "printf()" و ایجاد توابع Log Retargetting "printf()" and creating Log functions

  • اشکال زدایی با UART - تجزیه و تحلیل مستندات Debugging with UART - Analyzing the Documentation

  • اشکال زدایی با UART - نوشتن درایور UART Debugging with UART - Writing the UART Driver

  • اشکال زدایی با UART - تست درایور UART Debugging with UART - Testing the UART Driver

  • اشکال زدایی GPIO با نمایشگر سیم سریال (SWV) Debugging GPIO with Serial Wire Viewer (SWV)

توسعه درایورهای دسترسی مستقیم حافظه (DMA) bare-metal از حافظه به حافظه Developing Bare-Metal Memory-to-Memory Direct Memory Access (DMA) Drivers

  • مروری بر ماژول دسترسی مستقیم حافظه (DMA) Overview of the Direct Memory Access (DMA) Module

  • تجزیه و تحلیل مستندات DMA Analyzing the DMA Documentation

  • نوشتن درایور DMA از حافظه به حافظه Writing the DMA Memory-to-Memory Driver

  • پیاده سازی تابع انتقال داده DMA Implementing the DMA Data Transfer function

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

توسعه درایورهای DMA ADC bare-metal Developing Bare-Metal ADC DMA Drivers

  • درک حالت های مستقل ADC Understanding ADC Independents Modes

  • تجزیه و تحلیل مستندات ADC Analyzing the ADC Documentation

  • نوشتن درایور DMA ADC (قسمت اول) Writing the ADC DMA Driver (Part I)

  • نوشتن درایور DMA ADC (قسمت دوم) Writing the ADC DMA Driver (Part II)

توسعه درایورهای DMA با تحریک تایمر ADC bare-metal Developing Bare-Metal ADC Timer Trigger DMA Drivers

  • نوشتن درایور تحریک شده با تایمر ADC Writing the ADC Timer Triggered Driver

  • تست درایور تحریک شده با تایمر ADC Testing the ADC Timer Triggered Driver

توسعه درایورهای DMA UART bare-metal Developing Bare-Metal UART DMA Drivers

  • مروری بر پروتکل UART Overview of the UART Protocol

  • لیست کردن مراحل Listing the Steps

  • پیاده سازی توابع راه اندازی RX TX UART Implementing the UART RX TX Initialization functions

  • پیاده سازی تابع پیکربندی جریان DMA RX TX (قسمت اول) Implementing the DMA Stream RX TX Configuration function (Part I)

  • پیاده سازی تابع پیکربندی جریان DMA RX TX (قسمت دوم) Implementing the DMA Stream RX TX Configuration function (Part II)

  • پیاده سازی تابع پیکربندی جریان DMA RX TX (قسمت سوم) Implementing the DMA Stream RX TX Configuration function (Part III)

  • تست درایور DMA UART Testing the UART DMA Driver

توسعه درایورهای DMA SPI bare-metal Developing Bare-Metal SPI DMA Drivers

  • درک پروتکل SPI Understanding the SPI Protocol

  • تجزیه و تحلیل مستندات SPI Analyzing the SPI Documentation

  • پیاده سازی تابع راه اندازی DMA SPI Implementing the SPI DMA Initialization function

  • پیاده سازی تابع پیکربندی جریان TX Implementing the TX Stream Configuration function

  • پیاده سازی تابع پیکربندی جریان RX Implementing the RX Stream Configuration function

  • پیاده سازی توابع انتقال و دریافت Implementing the Transfer and Receive functions

  • پیاده سازی درایور DMA SPI دستگاه MPU9250 Mems (قسمت اول) Implementing the MPU9250 Mems Device SPI DMA Driver (Part I)

  • پیاده سازی درایور DMA SPI دستگاه MPU9250 Mems (قسمت دوم) Implementing the MPU9250 Mems Device SPI DMA Driver (Part II)

  • پیاده سازی درایور DMA SPI دستگاه MPU9250 Mems (قسمت سوم) Implementing the MPU9250 Mems Device SPI DMA Driver (Part III)

  • پیاده سازی درایور DMA SPI دستگاه MPU9250 Mems (قسمت چهارم) Implementing the MPU9250 Mems Device SPI DMA Driver (Part IV)

  • تست درایور DMA SPI دستگاه MPU9250 Mems Testing the MPU9250 Mems Device SPI DMA Driver

توسعه درایورهای DMA I2C bare-metal Developing Bare-Metal I2C DMA Drivers

  • درک پروتکل I2C Understanding the I2C Protocol

  • تجزیه و تحلیل مستندات I2C Analyzing the I2C Documentation

  • پیاده سازی تابع راه اندازی DMA I2C (قسمت اول) Implementing the I2C DMA Initialization function (Part I)

  • پیاده سازی تابع راه اندازی DMA I2C (قسمت دوم) Implementing the I2C DMA Initialization function (Part II)

  • پیاده سازی تابع راه اندازی جریان TX DMA I2C Implementing the I2C DMA Tx Stream Initialization function

  • پیاده سازی تابع راه اندازی جریان RX DMA I2C Implementing the I2C DMA Rx Stream Initialization function

  • پیاده سازی تابع انتقال جریان DMA I2C Implementing the I2C DMA Stream Transfer function

  • پیاده سازی تابع دریافت جریان DMA I2C Implementing the I2C DMA Stream Receive function

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

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

  • پیاده سازی Handlers های وقفه جریان DMA I2C Implementing the I2C DMA Stream IRQHandlers

  • تست درایور DMA I2C با دستگاه MPU9250 Mems Testing the I2C DMA Driver with the MPU9250 Mems Device

توسعه درایورهای PWM DMA bare-metal Developing Bare-Metal PWM DMA Drivers

  • درک تایمرهای STM32 Understanding STM32 Timers

  • تجزیه و تحلیل مستندات PWM Analyzing the PWM Documentation

  • پیاده سازی تابع راه اندازی PWM Implementing the PWM Initialization function

  • توسعه تابع "set_dutycycle()" Developing the "set_dutycycle()" function

  • پیاده سازی تابع راه اندازی DMA PWM (قسمت اول) Implementing the PWM DMA Initialization function(Part I)

  • پیاده سازی تابع راه اندازی DMA PWM (قسمت دوم) Implementing the PWM DMA Initialization function(Part II)

  • تست درایور DMA PWM Testing the PWM DMA Driver

مطالب بیشتر در مورد اشکال زدایی More on Debugging

  • پیدا کردن ناهنجاری ها با نقاط شکست (Breakpoints) Catching Anomalies with Breakpoints

  • پیدا کردن HardFaults Catching HardFaults

  • اشکال زدایی تایمرها با استفاده از نمودار SWV Debugging Timers using SWV Graph

  • اندازه گیری زمان اجرای یک الگوریتم Measuring the Execution Time of an Algorithm

  • تخلیه اطلاعات رجیسترها Dumping Register Information

  • تعیین زمان و محل اجرا با استفاده از پروفایلینگ Determining Execution Time and Place using Profiling

توسعه درایورهای RTC bare-metal Developing Bare-Metal RTC Drivers

  • درک ساعت های زمان واقعی (Real Time Clocks) Understanding Real Time Clocks

  • فهرست کردن مراحل پیکربندی تقویم RTC Listing the Steps for Configuring the RTC Calendar

  • پیاده سازی تابع راه اندازی تقویم RTC (قسمت اول) Implementing the RTC Calendar Initialization function (Part I)

  • پیاده سازی تابع راه اندازی تقویم RTC (قسمت دوم) Implementing the RTC Calendar Initialization function (Part II)

  • تنظیم تقسیم کننده های زمانی (Timer Prescalers) Setting the Timer Prescalers

  • خروج از حالت راه اندازی Exiting the Initialization Mode

  • دریافت اطلاعات تقویم Getting the Calendar Information

  • تست درایور تقویم RTC Testing the RTC Calendar Driver

  • پیاده سازی تابع راه اندازی آلارم RTC (قسمت اول) Implementing the RTC Alarm Initialization function (Part I)

  • پیاده سازی تابع راه اندازی آلارم RTC (قسمت دوم) Implementing the RTC Alarm Initialization function (Part II)

  • پیاده سازی Handler وقفه آلارم RTC و تست Implementing the RTC Alarm Interrupt Handler and Testing

  • تجزیه و تحلیل مراحل پیکربندی مُهر زمانی RTC Analyzing the Steps to Configure the RTC Timestamp

  • پیاده سازی تابع راه اندازی مُهر زمانی RTC Implementing the RTC Timestamp Initialization function

  • پیاده سازی Handler وقفه مُهر زمانی RTC Implementing the RTC Timestamp Interrupt Handler

  • تست درایور مُهر زمانی RTC Testing the RTC Timestamp Driver

  • پیاده سازی تابع راه اندازی تشخیص دستکاری RTC Implementing the RTC Tamper Detection Initialization function

  • تست درایور تشخیص دستکاری RTC Testing the RTC Tamper Detection Driver

توسعه درایورهای تایمر نگهبان مستقل (IWDG) bare-metal Developing Bare-Metal Independent Watchdog (IWDG) Timer Drivers

  • مروری بر نگهبان مستقل Overview of the Independent Watchdog

  • تجزیه و تحلیل مراحل راه اندازی تایمر IWDG Analyzing the Steps for Initializing the IWDG Timer

  • پیاده سازی تابع راه اندازی IWDG Implementing the IWDG Initialization function

  • پیاده سازی ماژول های دیگر برای تست درایور IWDG Implementing other Modules for Testing the IWDG Driver

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

توسعه درایورهای تایمر نگهبان پنجره ای (WWDG) bare-metal Developing Bare-Metal Windowed Watchdog (WWDG) Timer Drivers

  • مروری بر نگهبان پنجره ای Overview of the Window Watchdog

  • پیاده سازی تابع راه اندازی WWDG Implementing the WWDG Initialization function

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

توسعه درایورهای bare-metal برای حالت آماده باش و بیدار شدن Developing Bare-Metal Drivers for Standby Mode and Wakeup

  • پیاده سازی تابع راه اندازی حالت آماده باش و بیدار شدن Implementing the Standby and Wakeup Setup Function

  • دریافت منبع "بازنشانی" (Reset) Getting the Source of a "Reset"

  • تست درایور حالت آماده باش و بیدار شدن Testing the Standby and Wakeup Driver

  • تجزیه و تحلیل مراحل توسعه درایور تایمر بیدار شدن RTC Analyzing Steps for Developing an RTC Wakeup Timer Driver

  • پیاده سازی تابع راه اندازی تایمر بیدار شدن RTC Implementing the RTC Wakeup Timer Initializationf Function

  • پیاده سازی تابع "rtc_enter_standby_mode()" Implementing the "rtc_enter_standby_mode()" Function

  • تست درایور تایمر بیدار شدن RTC Testing the RTC Wakeup timer Driver

پایان Closing

  • نکات پایانی Closing Remarks

نمایش نظرات

آموزش برنامه‌نویسی سخت‌افزار سیستم‌های امبدد پیشرفته از پایه (Bare-Metal Programming Ground Up™)
جزییات دوره
22.5 hours
100
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
3,681
4.6 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Israel Gbati Israel Gbati

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

BHM Engineering Academy BHM Engineering Academy

آکادمی مهندسی قرن بیست و یکم