برنامهنویسی Bare-Metal سیستمهای تعبیه از پایه (STM32)
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- نوشتن firmware تنها با استفاده از embedded-c به صورت bare-metal
- درک معماری Cortex-M
- نوشتن درایورهای مبدل آنالوگ به دیجیتال (ADC) با استفاده از embedded-c به صورت bare-metal
- نوشتن درایورهای PWM با استفاده از embedded-c به صورت bare-metal
- نوشتن درایورهای UART با استفاده از embedded-c به صورت bare-metal
- نوشتن درایورهای تایمر با استفاده از embedded-c به صورت bare-metal
- نوشتن درایورهای وقفه با استفاده از embedded-c به صورت bare-metal
- نوشتن درایورهای SPI با استفاده از embedded-c به صورت bare-metal
- نوشتن درایورهای I2C با استفاده از embedded-c به صورت bare-metal
- تسلط به استاندارد ARM-Cortex CMSIS
- نوشتن درایورهای DMA با استفاده از embedded-c به صورت bare-metal
- ساخت تکتک خطوط کد از ابتدا، با نوشتن مستقیم در فضای حافظه میکروکنترلر.
- استفاده نکردن از هیچ کتابخانه یا فایل هدر ثالث
- درک و نوشتن تکتک خطوط کد توسط خودتان - بدون کپی/پیست
- استفاده مؤثر از دیباگر برای تحلیل و رفع هرگونه باگ
- کسب مهارت در توسعه تعبیه و برداشتن گامهای بعدی با اطمینان
- تعریف آدرسها برای Peripheralهای مختلف
- تحلیل مستندات چیپ
- ایجاد Registerها از روی آدرسها
پیش نیازهای دوره
- هیچ تجربه برنامهنویسی لازم نیست - مدرس همه چیزهایی را که باید بدانید به شما یاد خواهد داد.
- ما از STM32 IDE استفاده خواهیم کرد که رایگان است.
توضیحات دوره
آیا از کپی و پیست کردن کدی که نمیفهمید خسته شدهاید؟
این دوره با رویکردی مبتنی بر برنامهنویسی طراحی شده است تا اصول محکم در توسعه فریمور bare-metal برای میکروکنترلرهای مبتنی بر ARM به شما بدهد. هدف این دوره این است که به شما یاد دهد چگونه در راهنمای مرجع و دیتاشیت میکروکنترلر ناوبری کنید تا اطلاعات مناسب برای ساخت حرفهای درایورهای Peripheral و firmware را استخراج کنید. برای رسیدن به این هدف، هیچ کتابخانهای در این دوره استفاده نمیشود، صرفاً embedded-c به صورت bare-metal و دستکاری register است.
با حفظ سادگی، این دوره بر روی بوردهای توسعه مختلف ARM Cortex-M ارائه میشود تا دانشجویان بتوانند تکنیکها را با استفاده از یک بورد توسعه ARM Cortex-M به انتخاب خودشان تمرین کنند. این نسخه از دوره از بورد STMicroelectronics STM32F4-NUCLEO استفاده میکند که یک میکروکنترلر ARM Cortex-M4 دارد.
حالا که این موضوع روشن شد، اجازه دهید بگوییم…
دقیقاً چه چیزی به دست میآورید.
این دوره به طور چشمگیری با هر دوره دیگری که تا به حال دیدهاید متفاوت است، زیرا بیشتر شبیه یک "راهنمای میدانی" حرفهای و عملی برای توسعه فریم ور bare-metal برای STM32 است.
دلیلش این است که هیچ حاشیه و زوائدی وجود ندارد. بلافاصله سراغ اصل مطلب میرود و دقیقاً به شما نشان میدهد که چه کاری انجام دهید، چگونه انجام دهید و چرا.
به علاوه، آسان است.
و شما بلافاصله کل متدولوژی که مدرس شخصاً در زندگی حرفهای خود برای ساخت firmware دستگاههای مصرفی استفاده میکند را درک خواهید کرد.
این بسیار فراتر از فقط کار انداختن کد است.
" فرار از "
- کپی/پیست کردن کدی که نمیفهمید.
- استفاده از کتابخانهها و فایلهای هدر ثالث مانند HAL ،LL و StdPeriph
- تجربه باگهایی که نمیفهمید.
- ترس از مستندات فنی مانند راهنمای مرجع و دیتاشیت چیپ
- سندروم ایمپاستر (احساس خودویرانگری)
" رسیدن به "
- ساخت تکتک خطوط کد از ابتدا، با نوشتن مستقیم در فضای حافظه میکروکنترلر
- استفاده نکردن از هیچ کتابخانه یا فایل هدر ثالث
- درک و نوشتن تکتک خطوط کد توسط خودتان - بدون کپی/پیست
- استفاده مؤثر از دیباگر برای تحلیل و رفع هرگونه باگ
- کسب مهارت در توسعه تعبیه و برداشتن گامهای بعدی با اطمینان
بنابراین همانطور که گفتیم، مسئله فراتر از فقط کار انداختن هر تکه کد است.
در اینجا یک بررسی از آنچه به دست میآورید...
تحلیل مستندات چیپ:
قبل از توسعه firmware برای هر چیپ، باید یاد بگیرید که چگونه مستندات ارائه شده توسط سازنده چیپ را بخوانید.
تعریف آدرس Peripheral
تمام کامپوننت های روی میکروکنترلر یک محدوده آدرس دارند. برای نوشتن در یک جزء یا خواندن از یک کامپوننت، باید محدوده آدرس آن را در مستندات پیدا کنید و آدرسها را به درستی در کد خود تعریف کنید.
ایجاد Registerها از روی آدرس:
آدرسهای موجود در محدوده آدرس یک جزء، نمایانگر Registerهای آن جزء هستند. برای دسترسی به این Registerها، باید به طور مؤثر آدرسها را typecast کنید.
درک CMSIS:
Cortex-Microcontroller Interface Standard (CMSIS) استانداردی است که توسط Arm برای تمام میکروکنترلرهای Cortex توسعه یافته است. این استانداردی است که در توسعه firmware حرفهای استفاده میشود.
اما حتی بهتر هم میشود، زیرا شما همچنین…
درسهای عمیق در توسعه درایورهای Peripheral
شما یاد خواهید گرفت که چگونه درایورهای bare-metal برای Peripheralهای زیر توسعه دهید:
- مبدل آنالوگ به دیجیتال (ADC)
- رابط سریال Peripheral (SPI)
- Inter-Integrated Circuit (I2C)
- دسترسی مستقیم به حافظه (DMA)
- کنترلکننده وقفه برداری تو در تو (NVIC)
- تایمرهای عمومی (TIM)
- تایمر System Tick (SysTick)
- ورودی/خروجی عمومی (GPIO)
به طور ویژه برای افرادی که از کپی/پیست متنفرند طراحی شده است.
این دوره برای چه کسانی مناسب است؟
- اگر در سیستمهای تعبیه کاملاً مبتدی هستید، این دوره را بگذرانید.
- اگر یک توسعهدهنده تعبیه با تجربه هستید و میخواهید یاد بگیرید که چگونه به صورت حرفهای اپلیکیشنهای تعبیه برای پردازندههای ARM توسعه دهید، این دوره را بگذرانید.
برنامهنویسی Bare-Metal سیستمهای تعبیه از پایه (STM32)
-
دانلود محیط توسعه یکپارچه (IDE) ما 02:34
-
نصب محیط توسعه یکپارچه (IDE) ما 02:38
-
دریافت مستندات مناسب برای توسعه Bare-Metal 06:06
-
کدنویسی: پیدا کردن Port و Pinهای قطعات روی بورد Nucleo 08:01
-
کدنویسی: تعریف آدرسهای ماژولها با استفاده از اطلاعات مستندات 20:54
-
کدنویسی: ایجاد Registerهای موردنیاز با استفاده از اطلاعات مستندات 19:32
-
کدنویسی: پیکربندی Pinها با استفاده از Registerهایی که ساختیم 09:19
-
کدنویسی: ایجاد Registerها از اعضای Structure 20:49
-
بررسی ماژول ورودی/خروجی عمومی ARM Cortex-M 07:24
-
کدنویسی: توسعه درایور خروجی GPIO 28:16
-
کدنویسی: کنترل خروجیهای GPIO با استفاده از Register تنظیم/بازنشانی بیت (BSRR) 06:07
-
کدنویسی: توسعه درایور ورودی GPIO 11:36
-
بررسی پروتکل UART 07:43
-
کدنویسی: توسعه درایور فرستنده UART 27:12
-
کدنویسی: تست درایور فرستنده UART 08:17
-
کدنویسی: بازنشانهگذاری printf 02:57
-
کدنویسی: ماژولارتر کردن درایور 04:15
-
کدنویسی: توسعه درایور گیرنده UART 08:20
-
کدنویسی: تست درایور گیرنده UART 04:56
-
مقدمهای بر تبدیل آنالوگ به دیجیتال 04:02
-
درک حالتهای مستقل ADC 08:38
-
کدنویسی: توسعه درایور تبدیل تکی ADC 36:52
-
کدنویسی: توسعه درایور تبدیل پیوسته ADC 03:56
-
بررسی تایمر System Tick 07:51
-
کدنویسی: توسعه درایور تایمر System Tick 17:14
-
بررسی تایمرهای عمومی 09:32
-
Registerهای پرکاربرد تایمر 03:32
-
کدنویسی: توسعه درایور تایمر عمومی 13:40
-
کدنویسی: توسعه درایور مقایسه خروجی تایمر 19:25
-
کدنویسی: توسعه درایور دریافت ورودی تایمر 23:54
-
مقدمهای بر وقفهها 19:44
-
کدنویسی: توسعه درایور وقفه GPIO 17:33
-
کدنویسی: تست درایور وقفه GPIO 10:15
-
کدنویسی: توسعه درایور وقفه گیرنده UART 13:11
-
کدنویسی: توسعه درایور وقفه ADC 09:34
-
کدنویسی: توسعه درایور وقفه Systick 07:45
-
کدنویسی: توسعه درایور وقفه تایمر 07:24
-
بررسی ماژول دسترسی مستقیم به حافظه (DMA) 12:23
-
کدنویسی: توسعه درایور DMA فرستنده UART بخش 1 10:13
-
کدنویسی: توسعه درایور DMA فرستنده UART بخش 2 23:54
-
کدنویسی: تست درایور DMA فرستنده UART 14:55
-
مقدمهای بر I2C 09:21
-
کدنویسی: پیادهسازی تابع Init برای I2C 20:15
-
کدنویسی: پیادهسازی تابع Byte Read برای I2C 14:49
-
کدنویسی: پیادهسازی تابع Burst Read برای I2C 07:16
-
کدنویسی: پیادهسازی تابع Burst Write برای I2C 05:45
-
کدنویسی: پیکربندی شتابسنج ADXL345 با استفاده از درایور I2C 22:29
-
کدنویسی: آزمایش شتابسنج ADXL345 با استفاده از درایور I2C 12:30
-
مقدمهای بر رابط سریال Peripheral (SPI) 11:19
-
کدنویسی: پیادهسازی تابع مقداردهی اولیه GPIO برای SPI 10:49
-
کدنویسی: پیکربندی پارامترهای SPI 08:44
-
کدنویسی: پیادهسازی ارسال SPI 07:33
-
کدنویسی: پیادهسازی دریافت SPI 06:02
-
کدنویسی: پیکربندی شتابسنج ADXL345 با استفاده از درایور SPI 15:01
-
کدنویسی: آزمایش درایور ADXL345 ما 02:50
-
مقدمه 01:48
-
دانلود Keil uVision 5 01:18
-
نصب Keil uVision 5 01:51
-
نصب Packها 04:19
-
تغییر Compiler 01:53
-
بررسی ماژول ورودی/خروجی عمومی ARM Cortex-M 07:24
-
کدنویسی: توسعه درایور GPIO با استفاده از اطلاعات دیتاشیت 48:50
-
درک Register BSRR 01:29
-
کدنویسی: کنترل GPIO با استفاده از Register BSRR 15:39
-
کدنویسی: خواندن ورودیهای GPIO 11:11
-
کدنویسی: نوشتن یک درایور GPIO از صفر (بخش 1) 34:02
-
کدنویسی: نوشتن یک درایور GPIO از صفر (بخش 2) 17:29
-
بررسی پروتکل UART 07:43
-
Registerهای پرکاربرد UART 03:26
-
کدنویسی: توسعه درایور UART با استفاده از اطلاعات دیتاشیت 30:59
-
بحث بیشتر درباره پیکربندی عملکرد جایگزین UART 07:52
-
کدنویسی: دریافت داده با UART 21:55
-
کدنویسی: ارتباط دوطرفه UART 21:53
-
بررسی تایمر System Tick 07:51
-
بررسی تایمرهای عمومی 09:32
-
Registerهای پرکاربرد تایمر 03:32
-
کدنویسی: توسعه درایور تایمر System Tick 06:49
-
بحث بیشتر درباره Registerهای System Tick 03:14
-
کدنویسی: ایجاد یک تابع تأخیر با استفاده از تایمر System Tick 11:33
-
کدنویسی: توسعه درایور تایمر عمومی (GPTM) 13:04
-
کدنویسی: پیکربندی تایمر عمومی برای مقایسه خروجی 12:03
-
کدنویسی: پیکربندی تایمر عمومی برای دریافت ورودی 23:40
-
کدنویسی: اندازهگیری فرکانس با دریافت ورودی 17:41
-
کدنویسی: پیکربندی تایمر عمومی برای خروجی PWM 09:26
-
مقدمهای بر وقفهها 19:44
-
درک وقفههای خارجی 09:32
-
کدنویسی: توسعه درایور وقفه GPIO 18:49
-
کدنویسی: کار با چندین وقفه GPIO 23:00
-
کدنویسی: توسعه درایور وقفه UART 14:10
-
کدنویسی: توسعه درایور وقفه System Tick 09:22
-
کدنویسی: توسعه درایور وقفه تایمر عمومی 12:05
-
مقدمهای بر تبدیل آنالوگ به دیجیتال 04:02
-
کدنویسی: توسعه درایور ADC 18:12
-
کدنویسی: خواندن دمای CPU با ADC و نمایش آن با UART 23:34
-
کدنویسی: توسعه درایور نمایشگر کریستال مایع (LCD) 29:03
-
کدنویسی: پیکربندی نمایشگر کریستال مایع برای حالت داده 4 بیتی 18:47
-
مقدمهای بر I2C 09:21
-
تحلیل ساعت بلادرنگ DS1307 06:07
-
کدنویسی: توسعه یک درایور I2C 28:49
-
مقدمهای بر رابط سریال Peripheral (SPI) 11:19
-
کدنویسی: توسعه یک درایور ساده SPI 15:12
-
کدنویسی: توسعه یک درایور SPI برای LCD گرافیکی ST7735 (بخش 1) 30:53
-
کدنویسی: توسعه یک درایور SPI برای LCD گرافیکی ST7735 (بخش 2) 10:44
-
کدنویسی: توسعه یک درایور SPI برای LCD گرافیکی ST7735 (بخش 3) 14:34
-
کدنویسی: توسعه یک درایور SPI برای LCD گرافیکی ST7735 (بخش 4) 26:22
-
فلسفه طراحی RISC 03:43
-
فلسفه طراحی ARM 03:06
-
سیستمهای تعبیه با پردازندههای ARM 03:11
-
فناوری گذرگاه ARM و پروتکل گذرگاه AMBA 02:14
-
حافظه 07:57
-
Peripheralها 02:23
-
معماری Von Neumann و Harvard 03:46
-
کش و حافظه Tightly Coupled 03:40
-
افزونههای مدیریت حافظه 02:29
-
افزونههای کمکپردازنده 01:18
-
انواع داده 02:51
-
حالتهای پردازنده 05:22
-
Registerهای ARM7TDMI 07:52
-
جدول بردار ARM7TDMI 02:22
-
Registerهای ARM Cortex-M 04:35
-
جدول بردار ARM Cortex-M 01:10
-
مدل جریان داده ARM 03:44
-
پایپ لاین 04:08
-
فمیلی پردازندههای ARM 01:55
-
ARM Cortex-A و Cortex-R 01:42
-
ARM Cortex-M 01:31
-
دانلود CubeIDE 04:16
-
راهاندازی STM32CubeIDE 07:25
-
نصب بستهها 06:07
-
بررسی 17:17
-
سخن پایانی 00:17
مشخصات آموزش
برنامهنویسی Bare-Metal سیستمهای تعبیه از پایه (STM32)
- تاریخ به روز رسانی: 1405/04/02
- سطح دوره:متوسط
- تعداد درس:131
- مدت زمان :24:37:14
- حجم :12.48GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy