آموزش Rust Embedded برای مبتدیان مطلق
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- زبان برنامهنویسی Rust از ابتدا
- ساخت اولین اپلیکیشن bare-metal در Rust از ابتدا
- یاد بگیرید چگونه Rust toolchain را برای ساخت فریمورهایی که روی میکروکنترلرهای ARM Cortex-M اجرا میشوند، راه اندازی کنید.
- نوشتن اسکریپت لینکر و فایل استارتآپ شخصی و درک طرح بندی حافظه و چگونگی bootstrapping در Rust Embedded
- استفاده از cargo-binutils برای بازرسی و تحلیل فایلهای ELF
- راهاندازی یک گردش کاری مدرن و کارآمد با استفاده از VS Code برای ساخت، فلش و دیباگ کد Rust روی هدفهای embedded
- استفاده و درک کریتهای اصلی در اکوسیستم Rust Embedded
- لاگ کردن و دیباگ بهینه در محیطهای دارای محدودیت منابع
- کار عملی با تجهیزات جانبی ARM Cortex مانند SysTick و ITM با استفاده از کریتهای cortex-m و cortex-m-rt
- Rust FFI: ایجاد APIهای ایمن در Rust برای تعامل با کتابخانههای C موجود و تسهیل ادغام Rust در پروژههای مبتنی بر C
- آموزش انتقال ایمن structها، رشتهها و enumها بین Rust و C با حفظ ایمنی نوع و کنترل کامل
- در دسترس قرار دادن توابع Rust برای فراخوانی از سمت C با استفاده از مفاهیم unsafe و FFI جهت مدیریت ایمن تعامل بینزبانی
- ساخت گامبهگام یک اپلیکیشن واقعی بازی Flappy Bird با استفاده از Rust
- ساخت درایورهای مستقل از سختافزار با استفاده از traitهای embedded-hal جهت پرتابل کردن کد در پلتفرمهای مختلف
- رابط کاربری با سنسورهای واقعی (MPU6050) برای کنترل مکانیکهای بازی
- ساختاردهی کد در ماژولهای تمیز و قابل نگهداری
- استفاده از کریت STM32 HAL برای پیکربندی و کنترل آسان تجهیزات جانبی میکروکنترلر با انتزاعهای ایمن Rust
- نوشتن کدهای embedded به صورت Generic
پیشنیازهای دوره
- هیچ تجربه قبلی در برنامهنویسی Rust لازم نیست، زیرا مدرس همه چیز را از ابتدا آموزش میدهد.
- دانش اولیه در مورد هر نوع میکروکنترلر
- دانش اولیه در مورد هر زبان برنامهنویسی
- اگر قصد اجرای کد روی سختافزار واقعی را دارید، قطعات و سختافزارهای لیست شده مورد نیاز هستند
توضیحات دوره
آیا به دنبال اضافه کردن یک زبان جدید برای سیستمهای embedded به جعبه ابزار خود هستید؟ شانس خود را با Rust امتحان کنید، پشیمان نخواهید شد!!
این دوره نقطه شروع شما برای استفاده از Rust روی میکروکنترلرهاست، حتی اگر در زمینه سیستمهای embedded تازهکار باشید.
مدرس شما را گامبهگام از اصول اولیه، از درک چگونگی عملکرد میکروکنترلرها تا برنامهنویسی آنها با Rust، همراهی میکند. چه سابقه کار با C++/C داشته باشید و چه تازه کار با میکروکنترلرها را شروع کرده باشید، این دوره کسب تجربه عملی در توسعه Rust Embedded را برای شما ساده میکند.
چرا Rust برای سیستمهای embedded؟
Rust از بسیاری از مشکلات رایج حافظه (مانند null pointer dereferencing، سرریز بافر و خطاهای use-after-free) جلوگیری میکند، از طریق:
- مدل مالکیت: قوانین سختگیرانه Rust در مورد مالکیت، قرض گرفتن و طول عمر از بیشتر سوءاستفادههای تصادفی از حافظه جلوگیری میکند.
- ایمنی نوع: سیستم نوعبندی Rust تضمین میکند که به داده بهدرستی دسترسی دارید و با اعمال الگوهای سختگیرانه در استفاده از متغیرها، از دسترسیهای نامعتبر به حافظه جلوگیری میکند.
به لطف Cargo، مدیریت بسته رسمی Rust، میتوانید به سادگی و با اضافه کردن کتابخانههای خارجی یا همان "crates" که مانند قطعات plug-and-play هستند، قابلیتهای جدیدی به پروژه خود اضافه کنید.
چه چیزی یاد خواهید گرفت؟
در این دوره به موارد زیر مسلط خواهید شد:
- مقدمهای ساده برای مبتدیان در Rust، بهینهسازی شده برای سیستمهای embedded
- تنظیم کامل toolchain برای cross-compiling، فلش کردن و دیباگ
- دیباگ و لاگ کردن با defmt و probe-rs برای ردیابی بلادرنگ
- برنامهنویسی سطح بالای تجهیزات جانبی با کریت STM32 HAL
- ساخت گامبهگام یک اپلیکیشن واقعی بازی Flappy Bird با Rust
- رابط کاربری با سنسورهای واقعی (MPU6050) برای کنترل مکانیکهای بازی
- تمرینهای کدنویسی تمیز، ماژولار و انتزاع سختافزار
- ساخت درایورهای مستقل از سختافزار با استفاده از traitهای embedded-hal
- نوشتن و درک linker scripts و startup code شخصی
- ساخت کدهای embedded به صورت Generic با استفاده از Rust generics و traits
- ادغام ایمن و بدون نقص Rust + C از طریق FFI
- کسب اعتماد به نفس برای نوشتن فریمورهای embedded مقاوم، قابل استفاده مجدد و در سطح تولید در Rust
الزامات سختافزاری
نکته: اگر از قبل یک برد توسعه میکروکنترلر دارید، مدرس توصیه میکند با همان ادامه دهید. این دوره با چنان جزئیاتی طراحی شده که مفاهیم و مراحل را میتوان روی اکثر بردهای توسعه با تغییرات جزئی اعمال کرد. اما اگر ترجیح میدهید برای تجربهای روانتر دقیقاً از همان بردی که مدرس استفاده میکند استفاده کنید، میتوانید سختافزار پیشنهادی را بررسی کنید.
1) بورد توسعه میکروکنترلر
گزینه 1: بورد مبتنی بر STM32F303
این دوره عمدتاً از بورد Fastbit STM32 Nano استفاده میکند که مبتنی بر میکروکنترلر STM32F303 و سنسور MPU6050 روی بورد است.
گزینه 2: هر بورد میکروکنترلر STM32 دیگر
شما میتوانید از هر برد توسعهای که دارای میکروکنترلر STM32 باشد استفاده کنید. محتوای دوره به گونهای طراحی شده که قابل انطباق باشد.
2) دیباگر مبتنی بر SWD
یک دیباگر مبتنی بر SWD برای برنامهنویسی و دیباگ میکروکنترلر STM32 شما مورد نیاز است. این ابزار برای بارگذاری برنامهها و دیباگ بلادرنگ پروژهها ضروری است.
3) شیلد LCD
در یکی از پروژهها، به یک ماژول TFT LCD نیاز خواهید داشت. این دوره از Fastbit 1.28" TFT LCD با رابط موازی 8 بیتی و درایور GC9A01 استفاده میکند، اما استفاده از ماژولهای مشابه نیز بلامانع است.
4) سنسور MPU6050
الزامات نرمافزاری
- VS Code
- STM32CubeIDE
این دوره برای چه کسانی مناسب است؟
- توسعهدهندگان سیستمهای Embedded که به دنبال جایگزینی برای C++/C یا همزیستی Rust با کدهای موجود هستند.
- علاقهمندان به Rust که میخواهند مهارتهای خود را در پروژههای سطح پایین و سختافزارمحور به کار بگیرند.
- مبتدیان در سیستمهای Embedded که مشتاق یادگیری مهارتهای عملی از پایه هستند.
- هر کسی که میخواهد یک زبان قدرتمند دیگر به زرادخانه برنامهنویسی embedded خود اضافه کند.
آموزش Rust Embedded برای مبتدیان مطلق
-
خوشآمدگویی 01:19
-
نصب Toolchain برای سیستم میزبان 06:54
-
اجزای Toolchain و مفهوم target triple برای اهداف Tier 1 04:07
-
ایجاد پروژه Rust با استفاده از Cargo و افزونههای مهم VS Code 11:03
-
ابزارهای مهم: rustfmt، cargo fix و Clippy 15:44
-
چگونگی تضمین ایمنی حافظه توسط Rust در مقایسه با C++/C - بخش 1 19:08
-
متغیرها و انواع دادههای عددی 17:28
-
لیترالهای بایتی 05:17
-
نمایش Char و یونیکد 06:37
-
متغیرهای ایستا 07:04
-
ثابتها 03:26
-
چگونگی تضمین ایمنی حافظه توسط Rust در مقایسه با C++/C - بخش 2 08:44
-
آرایهها 12:58
-
ارجاعها 12:06
-
مفهوم Borrow (&T و &mut T) 12:43
-
نوع داده اسلایس 23:08
-
استفاده از if..else به عنوان دستور و عبارت 12:04
-
دستور match 18:15
-
دستور if..let 05:54
-
چگونگی تضمین ایمنی حافظه توسط Rust در مقایسه با C++/C - بخش 3 11:48
-
عملگرهای مقایسهای و منطقی 08:23
-
عملگرهای بیتی 08:30
-
رشتهها 22:15
-
رشتههای با کدگذاری UTF8 05:24
-
نوع String literal (&str) 10:28
-
تعریف تابع و پارامترها 15:54
-
کار با Option<T> 15:40
-
کار با Result<T, E> 01:46
-
مفهوم Generics 17:26
-
درباره سختافزار مورد استفاده 01:38
-
مقدمهای بر Cross Compilation برای معماری هدف 08:47
-
تولید فایل ELF برای یک برنامه بسیار اولیه Rust - بخش 1 15:17
-
تولید فایل ELF برای یک برنامه بسیار اولیه Rust - بخش 2 11:19
-
درباره نوع داده Never (!) 05:13
-
بازرسی فایل ELF با استفاده از cargo-binutils 05:08
-
نوشتن کد استارتآپ - بخش 1 05:24
-
درباره لینکر، فلگهای لینکر و اسکریپت لینکر 06:44
-
نوشتن اسکریپت لینکر از ابتدا - بخش 1 [بخش MEMORY] 12:19
-
انواع مختلف داده در یک برنامه 07:44
-
نوشتن اسکریپت لینکر از ابتدا - بخش 2 [بخش SECTIONS] 07:53
-
نوشتن اسکریپت لینکر از ابتدا - بخش 3 23:04
-
نوشتن کد استارتآپ - بخش 2 [Vector table] 18:15
-
نوشتن کد استارتآپ - بخش 3 [عبارت extern "C"] 10:31
-
نوشتن کد استارتآپ - بخش 4 [Default_Handlers] 10:21
-
نوشتن کد استارتآپ - بخش 5 [Reset_Handler] 06:43
-
اشارهگرهای خام در Rust 16:46
-
نوشتن کد استارتآپ - بخش 6 [Reset_Handler] 08:23
-
فلش کردن کد روی سختافزار هدف - 1 [نصب STM32CubeCLT] 02:57
-
فلش کردن کد روی سختافزار هدف - 2 [تنظیمات VS Code و cortex-debug] 18:18
-
فلش کردن کد با استفاده از ابزارهای probe-rs 04:36
-
مقدمه تمرین 02:08
-
پیادهسازی تمرین - بخش 1 07:06
-
پیادهسازی تمرین - بخش 2 05:47
-
پیادهسازی تمرین - بخش 3 10:32
-
پیادهسازی تمرین - بخش 4 05:31
-
پیادهسازی تمرین - بخش 5 12:48
-
پیادهسازی تمرین - بخش 6 07:53
-
پیادهسازی تمرین - بخش 7 و تست ماژول LED 02:37
-
تفاوت بلوک Unsafe و تابع Unsafe 07:08
-
کامنتگذاری و تولید مستندات - بخش 2 [//! Inner documentation] 13:55
-
کامنتگذاری و تولید مستندات - بخش 1 [/// Outer documentation] 02:09
-
پیادهسازی تمرین - بخش 8؛ نوشتن ماژول دکمه 08:40
-
پیادهسازی تمرین - بخش 9؛ کدنویسی برای وقفه دکمه 09:00
-
پیادهسازی تمرین - بخش 10 10:48
-
پیادهسازی تمرین - بخش 11 07:36
-
پیادهسازی تمرین - بخش 12 09:15
-
پیادهسازی تمرین - بخش 13 09:36
-
پیادهسازی تمرین - بخش 14: تست وقفه دکمه 02:04
-
Crate چیست؟ 06:32
-
کریتهای مهم برای سیستمهای Embedded 11:38
-
معرفی تمرین 02:16
-
توضیح کریت cortex-m-rt 09:34
-
سینتکس شماره نسخه کریت 08:05
-
کریتهای مدیریت Panic 06:02
-
تولید پایه زمانی SysTick با استفاده از کریت cortex-m 20:05
-
تست تولید پایه زمانی SysTick 03:54
-
معرفی تمرین 004 01:03
-
آشنایی با Instrumentation Trace Macrocell (ITM) 09:20
-
پیادهسازی تمرین 18:25
-
بازسازی کد و تست نهایی 09:51
-
بخش بحرانی 09:37
-
استفاده از Mutex و RefCell 13:53
-
مراحل کار با Rust و کدهای زبانهای خارجی 11:58
-
نگاشت انواع داده بین Rust و C 03:09
-
معادل Rust برای void و void pointer در زبان C 07:02
-
معادل Rust برای void و void pointer در زبان C (ادامه) 04:51
-
نمایش رشتههای C در Rust 06:33
-
دریافت و پردازش رشتهها از C در Rust (با استفاده از core::ffi::Cstr) 08:09
-
ارسال رشتهها از Rust به C (با استفاده از std::ffi::CString) 08:42
-
چیدمان حافظه Struct: مقایسه Rust و C 06:27
-
انتقال Struct از Rust به C 06:17
-
مقدمهای بر اپلیکیشن بازی Flappy Bird 06:54
-
پیادهسازی بخش 1: تولید فایلهای درایور MCU به زبان C با استفاده از STM32CubeIDE 11:51
-
نحوه کامپایل فایلهای منبع C از داخل پروژه Rust 07:15
-
نوشتن فایل build.rs - بخش 1 04:24
-
نوشتن فایل build.rs - بخش 2 09:45
-
نوشتن فایل build.rs - بخش 3 12:32
-
نوشتن فایل build.rs - بخش 4 06:10
-
نوشتن فایل build.rs - بخش 5 05:12
-
تست پروژه برای تولید وقفه SysTick 04:22
-
پیادهسازی بخش 2: پیکربندی تجهیزات جانبی و تولید کد 06:43
-
کپی کردن فایلهای درایور به درون پروژه 01:14
-
تحلیل مشکل مربوط به Weak Symbol Linkage 04:22
-
رفع مشکل Weak Symbol Linkage و تست نهایی پروژه 08:19
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 1 03:24
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 2 10:03
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 3 03:39
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 4 10:01
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 5 01:32
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 6 09:58
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 7 06:11
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 8 05:44
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 9 02:27
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 10 03:15
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 11 06:02
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 12 03:09
-
ویژگی بازی: پیادهسازی صفحه شروع - بخش 13 01:56
-
ویژگی بازی: پیادهسازی حرکت موانع - بخش 1 09:33
-
ویژگی بازی: پیادهسازی حرکت موانع - بخش 2 05:39
-
ویژگی بازی: پیادهسازی حرکت موانع - بخش 3 04:29
-
ویژگی بازی: پیادهسازی حرکت موانع - بخش 4 01:49
-
ویژگی بازی: پیادهسازی حرکت موانع - بخش 5 03:03
-
ویژگی بازی: پیادهسازی حرکت موانع - بخش 6 05:52
-
ویژگی بازی: پیادهسازی حرکت بازیکن - بخش 1 10:25
-
ویژگی بازی: پیادهسازی حرکت بازیکن - بخش 2 08:55
-
ویژگی بازی: پیادهسازی تشخیص برخورد - بخش 1 03:03
-
ویژگی بازی: پیادهسازی تشخیص برخورد - بخش 2 08:50
-
ویژگی بازی: پیادهسازی تشخیص برخورد - بخش 3 03:13
-
درباره توسعه درایور مستقل از سختافزار 10:02
-
پیادهسازی کریت درایور MPU6050 - بخش 1 02:52
-
پیادهسازی کریت درایور MPU6050 - بخش 2 08:50
-
پیادهسازی کریت درایور MPU6050 - بخش 3 06:52
-
پیادهسازی کریت درایور MPU6050 - بخش 4 03:58
مشخصات آموزش
آموزش Rust Embedded برای مبتدیان مطلق
- تاریخ به روز رسانی: 1404/12/10
- سطح دوره:مقدماتی
- تعداد درس:133
- مدت زمان :18:30:42
- حجم :7.65GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy