آموزش تسلط بر رست امبدد: بر متال، FFI، کرِیت‌ها، پروژه‌ها - آخرین آپدیت

دانلود Mastering Embedded Rust: Bare Metal, FFI, Crates, Projects

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

مسلط شدن بر سیستم‌های توکار (Embedded Systems) مدرن و ایمن با Rust: آموزش Bare-Metal، FFI، درایورها، Crateها و پروژه‌ها روی میکروکنترلرهای STM32

آموزش جامع زبان برنامه‌نویسی Rust از صفر

ساخت اولین برنامه Bare-Metal Rust خود از ابتدا

نحوه تنظیم زنجیره ابزار Rust برای توسعه فریمور برای میکروکنترلرهای ARM Cortex-M را بیاموزید.

اسکریپت لینکر و فایل راه‌اندازی (startup) خود را بنویسید و چگونگی چیدمان حافظه و فرآیند بوت‌استرپ در Rust توکار را درک کنید.

برای بازرسی و تحلیل فایل‌های ELF از cargo-binutils استفاده کنید.

یک گردش کار مدرن و کارآمد با استفاده از VS Code برای کامپایل، فلش و دیباگ کد Rust خود با اهداف (targets) توکار راه‌اندازی کنید.

استفاده و درک Crateهای اصلی Rust توکار.

لاگ‌گیری و دیباگ کارآمد در محیط‌های با منابع محدود.

کار عملی با پریفرال‌های ARM Cortex مانند SysTick و ITM با استفاده از Crateهای cortex-m و cortex-m-rt را تجربه کنید.

Rust FFI: ایجاد APIهای ایمن Rust برای ارتباط با کتابخانه‌های C موجود، که ادغام Rust را در پایگاه‌های کد مبتنی بر C موجود آسان‌تر می‌کند.

نحوه انتقال ایمن ساختارها (structs)، رشته‌ها و Enumها بین Rust و C با حفظ ایمنی نوع (type safety) و کنترل را بیاموزید.

توابع Rust را برای قابلیت فراخوانی از C، با استفاده از مفاهیم unsafe و FFI برای مدیریت ایمن قابلیت همکاری بین زبان‌ها، در دسترس قرار دهید.

گام به گام، یک برنامه بازی واقعی Flappy Bird را با استفاده از Rust بسازید.

درایورهای مستقل از سخت‌افزار را با استفاده از Traitsهای embedded-hal بسازید، که کد شما را در پلتفرم‌های مختلف میکروکنترلر قابل حمل می‌کند.

ارتباط با سنسورهای واقعی (MPU6050) برای کنترل مکانیک بازی.

سازماندهی کد خود در ماژول‌های تمیز و قابل نگهداری.

از Crate HAL STM32 برای پیکربندی و کنترل آسان پریفرال‌های میکروکنترلر خود با انتزاعات ایمن Rust استفاده کنید.

نوشتن کد توکار جنریک (Generic Embedded Code).

پیش‌نیازها

  • نیازی به تجربه برنامه‌نویسی قبلی با Rust نیست، زیرا این دوره همه چیز را از پایه آموزش می‌دهد.
  • آشنایی اولیه با هر میکروکنترلر.
  • آشنایی اولیه با هر زبان برنامه‌نویسی.
  • در صورت تمایل به اجرای کد بر روی یک هدف (Target) توکار، سخت‌افزار و قطعات ذکر شده در ادامه مورد نیاز است.

==> به دنبال افزودن یک زبان برنامه‌نویسی توکار دیگر به مجموعه مهارت‌های خود هستید؟ Rust را امتحان کنید — پشیمان نخواهید شد!! <==

این دوره نقطه شروع شما برای استفاده از Rust در میکروکنترلرهای مبتنی بر ARM Cortex-M مانند STM32 است، حتی اگر در زمینه سیستم‌های توکار تازه‌کار باشید.

این یک دوره کاملاً عملی است که شما را از ابتدا وارد دنیای واقعی توسعه Rust توکار بر روی STM32 می‌کند. هر ویدئو بر پایه ویدیوی قبلی ساخته شده و به شما کمک می‌کند گام به گام پیشرفت کنید، از نوشتن کد Bare-Metal گرفته تا موضوعات پیشرفته‌ای مانند FFI، Crateها، توسعه درایور و Traits. این دوره برای کسانی که تازه با Rust و سیستم‌های توکار آشنا می‌شوند، ایده‌آل است.

چرا Rust برای سیستم‌های توکار (Embedded)؟

Rust از بسیاری از مشکلات رایج حافظه (مانند اشاره‌گرهای null، سرریز بافر و خطاهای استفاده پس از آزاد شدن حافظه) جلوگیری می‌کند، از طریق:

  • مدل مالکیت (Ownership model): قوانین سخت‌گیرانه Rust در مورد مالکیت، قرض گرفتن (borrowing) و طول عمر (lifetimes) از بیشتر سوءاستفاده‌های تصادفی از حافظه جلوگیری می‌کند.

  • ایمنی نوع (Type safety): سیستم نوع Rust اطمینان می‌دهد که شما به داده‌ها به درستی دسترسی پیدا می‌کنید و با اعمال الگوهای سخت‌گیرانه استفاده از متغیر، به جلوگیری از انواع خاصی از دسترسی نامعتبر به حافظه کمک می‌کند.

به لطف Cargo، مدیر بسته رسمی Rust، می‌توانید به راحتی با افزودن کتابخانه‌های خارجی یا "Crate" که مانند قطعات plug-and-play هستند، قابلیت‌ها را اضافه کنید.

چه چیزی یاد خواهید گرفت؟

در این دوره، شما بر موارد زیر مسلط خواهید شد:

  1. مقدمه‌ای دوستانه بر Rust برای مبتدیان، متناسب با سیستم‌های توکار

  2. تنظیم کامل زنجیره ابزار (Toolchain) برای کامپایل متقابل (Cross-compiling)، فلش کردن و دیباگ

  3. دیباگ و لاگ‌گیری کارآمد با defmt و probe-rs برای ردیابی بی‌درنگ

  4. برنامه‌نویسی پریفرال‌های سطح بالا با Crate HAL STM32

  5. ساخت گام به گام یک بازی واقعی Flappy Bird با استفاده از Rust

  6. ارتباط با سنسورهای واقعی (MPU6050) برای کنترل مکانیک بازی

  7. روش‌های کدنویسی تمیز، ماژولار و انتزاع سخت‌افزار

  8. ساخت درایورهای مستقل از سخت‌افزار با استفاده از Traitsهای embedded-hal

  9. نوشتن و درک اسکریپت‌های لینکر و کدهای راه‌اندازی (Startup) خودتان

  10. ساخت کد توکار جنریک با استفاده از جنریک‌ها (generics) و Traitsهای Rust

  11. ادغام ایمن و بی‌درنگ Rust + C از طریق FFI

  12. اعتماد به نفس برای نوشتن فریمور توکار قوی، قابل استفاده مجدد و آماده برای تولید در Rust

پیش‌نیازهای سخت‌افزاری

توجه: اگر از قبل یک برد توسعه میکروکنترلر دارید، توصیه می‌کنیم با همان ادامه دهید. این دوره با دقت زیادی طراحی شده است که مفاهیم و مراحل آن را می‌توان با کمی تنظیمات برای اکثر بردهای توسعه به کار برد. اما اگر ترجیح می‌دهید برای یک تجربه روان‌تر از همان برد دقیقاً مانند مربی استفاده کنید، می‌توانید سخت‌افزار توصیه‌شده را بررسی کنید.

1) برد توسعه میکروکنترلر

  • گزینه 1: برد مبتنی بر STM32F303

    • این دوره عمدتاً از برد Fastbit STM32 Nano استفاده می‌کند که مبتنی بر میکروکنترلر STM32F303 و سنسور MPU6050 روی برد است.

  • گزینه 2: هر برد میکروکنترلر STM32

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

2) دیباگر مبتنی بر SWD

  • یک دیباگر مبتنی بر SWD (Serial Wire Debug) برای برنامه‌ریزی و دیباگ میکروکنترلر STM32 شما مورد نیاز است. این ابزار برای بارگذاری برنامه‌های شما روی میکروکنترلر و برای دیباگ پروژه‌هایتان به صورت بی‌درنگ ضروری است.

3) نمایشگر LCD (LCD shield)

  • در یکی از پروژه‌ها، به یک ماژول TFT LCD برای آزمایش نیاز خواهید داشت. این دوره از Fastbit 1.28" TFT LCD با رابط موازی 8 بیتی، مبتنی بر درایور LCD GC9A01 استفاده می‌کند. با این حال، شما می‌توانید از ماژول مشابه یا سازگار استفاده کنید.

4) سنسور MPU6050

پیش‌نیازهای نرم‌افزاری

  1. VS Code

  2. STM32CubeIDE


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

Introduction

  • خوش آمدید Welcome

  • مخزن دوره Course repository

نصب Toolchain Rust Rust Toolchain Installation

  • نصب Toolchain برای Host Toolchain installation for Host

  • اجزای Toolchain و target triple برای اهداف Tier 1 Toolchain components and target triple of Tier 1 targets

  • نصب IDE VS Code Install VS Code IDE

  • ایجاد یک پروژه Rust با Cargo و افزونه‌های مهم VS Code Creating a Rust project using Cargo and Important VS code extensions

  • ابزارهای مهم: rustfmt، cargo fix، Clippy Important tools: rustfmt, cargo fix , Clippy

مبانی Rust: معرفی سریع مفاهیم اصلی Rust Fundamentals: Quick intro to core concepts

  • چگونه Rust ایمنی حافظه را در مقایسه با C/C++ تضمین می‌کند – بخش ۱ How Rust ensures memory safety compared to C/C++ part 1

  • متغیرها و انواع داده عددی Variables and numerical data types

  • لیترال بایت (Byte literal) Byte literal

  • کاراکتر (Char) و نمایش یونیکد Char and unicode representation

  • متغیرهای استاتیک (Statics) Statics

  • ثابت‌ها (Constants) Constants

  • چگونه Rust ایمنی حافظه را در مقایسه با C/C++ تضمین می‌کند – بخش ۲ How Rust ensures memory safety compared to C/C++ part 2

  • آرایه‌ها (Arrays) Arrays

  • ارجاعات (References) References

  • امانت‌گیری (&T و &mut T) Borrow(&T and &mut T)

  • آیا می‌توانید به ما کمک کنید؟ Can you help us?

  • نوع داده slice slice data type

  • if..else به عنوان یک دستور (statement) و عبارت (expression) if..else as a statement and expression

  • دستور match match statement

  • دستور if..let if..let statement

  • چگونه Rust ایمنی حافظه را در مقایسه با C/C++ تضمین می‌کند – بخش ۳ How Rust ensures memory safety compared to C/C++ part 3

  • عملگرهای مقایسه‌ای و منطقی Comparison and logical operators

  • عملگرهای بیتی Bitwise operators

  • رشته‌ها (Strings) Strings

  • رشته با رمزگذاری UTF8 UTF8 encoded string

  • نوع لیترال رشته (&str) String literal type(&str)

  • اعلان تابع و پارامترها Function declaration and parameters

  • ساختارها (Structures) Structures

  • چاپ ساختار Printing the structure

  • مقداردهی اولیه struct با مقادیر پیش‌فرض Initializing struct with defaults

  • ارسال متغیرهای struct به توابع Passing struct variables to functions

  • ایجاد متدها برای یک struct Creating methods for a struct

  • توابع مرتبط (سازنده) یک struct Associated functions(Constructor) of struct

  • نوع شمارشی (Enums) Enums

  • متدها و توابع مرتبط با یک نوع شمارشی (enum) Methods and associated functions of an enum type

  • Option<T> Option<T>

  • Result<T, E> Result<T, E>.

  • مدیریت خطا با استفاده از نوع Result Error handling using Result type

  • انتشار خطا با استفاده از علامت سؤال (?) Error propagation using ?

  • جنریک‌ها (Generics) Generics.

کامپایل متقابل (Cross compilation) Cross compilation

  • درباره سخت‌افزار About the hardware

  • مقدمه‌ای بر کامپایل متقابل برای معماری هدف Intro to cross compilation for target architecture

  • تمرین ۰۰۱: تولید فایل ELF برای یک برنامه بسیار ابتدایی Rust – بخش ۱ Exercise 001: Generating ELF file for the very basic rust program part 1

  • تولید فایل ELF برای یک برنامه بسیار ابتدایی Rust – بخش ۲ Generating ELF file for the very basic rust program part 2

  • درباره نوع 'never' (!) About Type 'never'(!)

  • بررسی فایل ELF با استفاده از cargo-binutils Inspecting ELF file using cargo-binutils

نوشتن کد راه‌اندازی و اسکریپت لینکر برای برنامه Rust bare metal Writing start-up code and linker script for bare metal Rust program

  • نوشتن کد راه‌اندازی – بخش ۱ Writing start-up code part-1

  • درباره لینکر، پرچم‌های لینکر و اسکریپت لینکر About Linker, Linker flags and Linker script

  • نوشتن اسکریپت لینکر از ابتدا – بخش ۱ [MEMORY] Writing linker script from scratch part 1 [MEMORY]

  • انواع مختلف داده در یک برنامه Different types of data in a program

  • نوشتن اسکریپت لینکر از ابتدا – بخش ۲ [SECTIONS] Writing linker script from scratch part 2 [SECTIONS]

  • نوشتن اسکریپت لینکر از ابتدا – بخش ۳ Writing linker script from scratch part 3

  • نوشتن کد راه‌اندازی – بخش ۲ [جدول بردار] Writing start-up code part-2 [Vector table]

  • نوشتن کد راه‌اندازی – بخش ۳ [extern "C"] Writing start-up code part-3 [extern "C"]

  • نوشتن کد راه‌اندازی – بخش ۴ [Default_Handlers] Writing start-up code part-4 [Default_Handlers]

  • نوشتن کد راه‌اندازی – بخش ۵ [Reset_Handler] Writing start-up code part-5 [Reset_Handler]

  • اشاره‌گرهای خام (Raw pointers) در Rust Raw pointers in Rust

  • نوشتن کد راه‌اندازی – بخش ۶ [Reset_Handler] Writing start-up code part-6 [Reset_Handler]

  • آیا می‌توانید به ما کمک کنید؟ Can you help us?

فلش کردن و دیباگ کردن (Flash و Debug) Flash and Debug

  • فلش کردن کد به سخت‌افزار هدف – ۱ [نصب STM32CubeCLT] Flashing code to target hardware-1 [Install STM32CubeCLT]

  • فلش کردن کد به سخت‌افزار هدف – ۲ [راه‌اندازی VsCode و cortex-debug] Flashing code to target hardware-2 [VsCode and cortex-debug setup]

  • فلش کردن کد با استفاده از ابزارهای probe.rs Flashing code using probe.rs tools

تمرین ۰۰۲: اپلیکیشن Rust bare metal برای کنترل LEDها با استفاده از وقفه‌ها (Interrupts) Exercise 002: Bare metal Rust application to handle LEDs using Interrupts

  • مقدمه Introduction

  • پیاده‌سازی تمرین – بخش ۱ Exercise Implementation Part 1

  • پیاده‌سازی تمرین – بخش ۲ Exercise Implementation Part 2

  • پیاده‌سازی تمرین – بخش ۳ Exercise Implementation Part 3

  • پیاده‌سازی تمرین – بخش ۴ Exercise Implementation Part 4

  • پیاده‌سازی تمرین – بخش ۵ Exercise Implementation Part 5

  • پیاده‌سازی تمرین – بخش ۶ Exercise Implementation Part 6

  • پیاده‌سازی تمرین – بخش ۷ و تست ماژول LED Exercise Implementation Part 7 and Testing LED module

  • Unsafe block در مقابل Unsafe fn Unsafe block vs Unsafe fn

  • کامنت‌گذاری و تولید مستندات – بخش ۲ [//! مستندات داخلی] Commenting and generating documentation part 2 [//! Inner documentation]

  • کامنت‌گذاری و تولید مستندات – بخش ۱ [/// مستندات بیرونی] Commenting and generating documentation part 1 [/// Outer documentation]

  • پیاده‌سازی تمرین – بخش ۸؛ نوشتن ماژول دکمه Exercise Implementation Part 8; Writing button module

  • پیاده‌سازی تمرین – بخش ۹؛ کدنویسی برای وقفه دکمه Exercise Implementation Part 9; Coding for button interrupt

  • پیاده‌سازی تمرین – بخش ۱۰ Exercise Implementation Part 10

  • پیاده‌سازی تمرین – بخش ۱۱ Exercise Implementation Part 11

  • پیاده‌سازی تمرین – بخش ۱۲ Exercise Implementation Part 12

  • پیاده‌سازی تمرین – بخش ۱۳ Exercise Implementation Part 13

  • پیاده‌سازی تمرین – بخش ۱۴: تست وقفه دکمه Exercise Implementation Part 14: Testing button interrupt

تمرین ۰۰۳: استفاده از crateهای خارجی cortex-m-rt و cortex-m Exercise 003: Using external crate cortex-m-rt and cortex-m

  • crate چیست؟ What is a crate?

  • crateهای مهم برای سیستم‌های جاسازی‌شده (embedded systems) Important crates for embedded systems

  • مقدمه تمرین Exercise introduction

  • توضیح crate cortex-m-rt Cortex-m-rt crate explanation

  • سینتکس شماره نسخه crate Crate version number syntax

  • crateهای مدیریت Panic Panic handling crates

  • تولید مبنای زمانی Systick با استفاده از crate cortex-m Systick time base generation using cortex-m crate

  • تست تولید مبنای زمانی Systick Testing Systick time base generation

  • آیا می‌توانید به ما کمک کنید؟ Can you help us?

تمرین ۰۰۴: چاپ‌های ITM Exercise 004: ITM prints

  • مقدمه تمرین ۰۰۴ Exercise 004 introduction

  • Instrumentation Trace Macrocell (ITM) Instrumentation Trace Macrocell(ITM)

  • پیاده‌سازی تمرین Exercise implementation

  • بازآرایی (Refactoring) و تست Refactoring and Testing

  • بخش بحرانی (Critical section) Critical section

  • Mutex و Refcell Mutex and Refcell

رابط توابع خارجی Rust (FFI) Rust Foreign Function Interface(FFI)

  • گام‌های درگیر در کار با کدهای Rust و زبان‌های خارجی Steps involved in dealing with Rust and Foreign language code

  • نگاشت انواع بین Rust و C Types mapping between Rust and C

  • معادل Rust برای void و void pointer در C Rust equivalent of C's void and void pointer

  • معادل Rust برای void و void pointer در C (ادامه) Rust equivalent of C's void and void pointer contd.

  • نمایش رشته C در Rust Rust representation of C's String

  • پذیرش و پردازش رشته‌ها از 'C' در Rust (core::ffi::Cstr) Rust accepting and processing Strings from 'C' (core::ffi::Cstr)

  • ارسال رشته‌ها از Rust به 'C' (std::ffi::CString) Rust sending Strings to 'C' (std::ffi::CString)

  • آرایش حافظه Struct: Rust در مقابل C Struct memory layout: Rust Vs C

  • ارسال struct از Rust به C Passing struct from Rust to C

تمرین ۰۰۵: پیاده‌سازی بازی Flappy Bird (Rust + C) Exercise 005: Flappy Bird game implementation(Rust + C)

  • مقدمه‌ای بر اپلیکیشن Flappy Bird Introduction to Flappy bird application

  • پیاده‌سازی: پیکربندی Peripheral و تولید کد (LCD موازی ۸ بیتی) Implementation : Peripheral config and code generation(8 bit parallel LCD)

  • پیاده‌سازی: پیکربندی Peripheral و تولید کد (LCD مبتنی بر SPI) Implementation: Peripheral config and code generation(SPI based LCD)

  • کامپایل فایل‌های سورس 'C' از پروژه Rust: چگونه کار می‌کند؟ Compiling 'C' source files from Rust project: How it works?

  • نوشتن build.rs – بخش ۱ Writing build.rs part 1

  • نوشتن build.rs – بخش ۲ Writing build.rs part 2

  • نوشتن build.rs – بخش ۳ Writing build.rs part 3

  • نوشتن build.rs – بخش ۴ Writing build.rs part 4

  • نوشتن build.rs – بخش ۵ Writing build.rs part 5

  • تست پروژه برای تولید وقفه systick Testing project for systick interrupt generation

  • کپی فایل‌های درایور به داخل پروژه Copy driver files into the project

  • تحلیل مشکل مربوط به weak symbol linkage Analysing the issue related to weak symbol linkage

  • رفع مشکل مربوط به weak symbol linkage و تست پروژه Fixing issue related to weak symbol linkage and testing project

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۱ Game feature : Start screen implementation part-1

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۲ Game feature : Start screen implementation part-2

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۳ Game feature : Start screen implementation part-3

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۴ Game feature : Start screen implementation part-4

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۵ Game feature : Start screen implementation part-5

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۶ Game feature : Start screen implementation part-6

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۷ Game feature : Start screen implementation part-7

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۸ Game feature : Start screen implementation part-8

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۹ Game feature : Start screen implementation part-9

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۱۰ Game feature : Start screen implementation part-10

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۱۱ Game feature : Start screen implementation part-11

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۱۲ Game feature : Start screen implementation part-12

  • ویژگی بازی: پیاده‌سازی صفحه شروع – بخش ۱۳ Game feature : Start screen implementation part-13

  • ویژگی بازی: پیاده‌سازی حرکت مانع – بخش ۱ Game feature: Obstacle movement implementation part-1

  • ویژگی بازی: پیاده‌سازی حرکت مانع – بخش ۲ Game feature: Obstacle movement implementation part-2

  • ویژگی بازی: پیاده‌سازی حرکت مانع – بخش ۳ Game feature: Obstacle movement implementation part-3

  • ویژگی بازی: پیاده‌سازی حرکت مانع – بخش ۴ Game feature: Obstacle movement implementation part-4

  • ویژگی بازی: پیاده‌سازی حرکت مانع – بخش ۵ Game feature: Obstacle movement implementation part-5

  • ویژگی بازی: پیاده‌سازی حرکت مانع – بخش ۶ Game feature: Obstacle movement implementation part-6

  • ویژگی بازی: پیاده‌سازی حرکت بازیکن – بخش ۱ Game feature: Player movement implementation part-1

  • ویژگی بازی: پیاده‌سازی حرکت بازیکن – بخش ۲ Game feature: Player movement implementation part-2

  • ویژگی بازی: پیاده‌سازی تشخیص برخورد – بخش ۱ Game feature: Collision detection implementation part-1

  • ویژگی بازی: پیاده‌سازی تشخیص برخورد – بخش ۲ Game feature: Collision detection implementation part-2

  • ویژگی بازی: پیاده‌سازی تشخیص برخورد – بخش ۳ Game feature: Collision detection implementation part-3

ایجاد درایور دستگاه مستقل از سخت‌افزار با استفاده از embedded-hal Creating hardware agnostic device driver using embedded-hal

  • درباره توسعه درایور مستقل از سخت‌افزار About hardware agnostic driver development

  • پیاده‌سازی crate درایور MPU6050 – بخش ۱ MPU6050 driver crate implementation part-1

  • پیاده‌سازی crate درایور MPU6050 – بخش ۲ MPU6050 driver crate implementation part-2

  • پیاده‌سازی crate درایور MPU6050 – بخش ۳ MPU6050 driver crate implementation part-3

  • پیاده‌سازی crate درایور MPU6050 – بخش ۴ MPU6050 driver crate implementation part-4

  • پیاده‌سازی crate درایور MPU6050 – بخش ۵ MPU6050 driver crate implementation part-5

  • پیاده‌سازی crate درایور MPU6050 – بخش ۶ MPU6050 driver crate implementation part-6

  • پیاده‌سازی crate درایور MPU6050 – بخش ۷ MPU6050 driver crate implementation part-7

  • پیاده‌سازی crate درایور MPU6050 – بخش ۸ MPU6050 driver crate implementation part-8

  • پیاده‌سازی crate درایور MPU6050 – بخش ۹ MPU6050 driver crate implementation part-9

  • افزودن [features] به crate درایور Adding [features] to driver crate

کار با crateهای Hal و PAC Working with Hal crate and PAC

  • تمرین ۰۰۵: خواندن از سنسور – بخش ۱ Exercise 005: Reading from sensor part 1

  • PAC و HAL PAC and HAL

  • کدنویسی مقداردهی اولیه I2C – بخش ۱ I2C initialization coding part 1

  • کدنویسی مقداردهی اولیه I2C – بخش ۲ I2C initialization coding part 2

  • کدنویسی مقداردهی اولیه I2C – بخش ۳ I2C initialization coding part 3

استفاده از Traits Using Traits

  • مدیریت دستگاه ورودی از طریق پیاده‌سازی Trait – بخش ۱ Handling input device via Trait implementation part 1

  • مدیریت دستگاه ورودی از طریق پیاده‌سازی Trait – بخش ۲ Handling input device via Trait implementation part 2

  • مدیریت دستگاه ورودی از طریق پیاده‌سازی Trait – بخش ۳ Handling input device via Trait implementation part 3

لاگ‌گیری (Logging) Logging

  • لاگ‌گیری داده‌ها با استفاده از RTT و probe.rs Logging data using RTT and probe.rs

  • تست لاگ‌گیری داده‌ها با استفاده از RTT Logging data using RTT testing

تمرین ۰۰۵: پیاده‌سازی بازی Flappy Bird (Rust + C) (ادامه) Exercise 005: Flappy Bird game implementation(Rust + C) contd.

  • ویژگی بازی: محاسبه زاویه Roll Game feature : Calculating roll angle

  • ویژگی بازی: نگاشت زاویه Roll به موقعیت پرنده Game feature : Map roll angle to bird position

  • به‌روزرسانی موقعیت Y پرنده Updating bird Y position

  • نکته‌ای درباره نویز سنسور Note about sensor noise

  • تست برنامه نهایی Testing final application

  • کارهای باقی‌مانده (TODOs) برای دانشجویان TODOs for the students

  • ویدیوهای بعدی به زودی Next videos coming soon

  • سخنرانی جایزه (BONUS) BONUS LECTURE

نمایش نظرات

آموزش تسلط بر رست امبدد: بر متال، FFI، کرِیت‌ها، پروژه‌ها
جزییات دوره
23.5 hours
172
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
1,549
4.9 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

FastBit Embedded Brain Academy FastBit Embedded Brain Academy

روی Firmware و Embedded Engineering کار می کند

Kiran Nayak Kiran Nayak

نرم افزار تعبیه شده