آموزش USB پشت صحنه: توسعه سیستم عامل HID عملی

USB Behind the Scenes: Hands-on HID Firmware Development

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: دوره ویدیویی شماره 1 که برنامه‌نویسی سفت‌افزار فلزی خالی را برای دستگاه‌های رابط انسانی USB (HID) گام به گام توضیح می‌دهد. بدون استفاده از کتابخانه های شخص ثالث یا تولید کننده کد، یک میان افزار بدون استفاده از فلز برای دستگاه های رابط انسانی USB 2.0 (HID) بنویسید. درایور دستگاه USB و چارچوب پروتکل USB 2.0 را پیاده سازی کنید. یک ماوس USB کاملا کاربردی را از صفر برنامه ریزی کنید. توصیفگرهای USB عمومی و توصیفگرهای مخصوص کلاس دستگاه رابط انسانی (HID) را درک کنید. با USB بومی مقابله کنید (بدون هیچ گونه تبدیل به UART) از میکروکنترلر مبتنی بر ARM Cortex-M4 (STM32F4xx)، یکی از پیشرفته ترین و معروف ترین MCU در جهان استفاده کنید. ارتباط USB را با استفاده از Wireshark و Linux SysLog اشکال زدایی کنید. بخش های مختلف راهنمای مرجع ARM Cortex-M4 را بخوانید و اطلاعات مهم را به طور موثر استخراج کنید. آشنایی با نحوه عملکرد پروتکل USB 2.0 در حالت سرعت کامل. نقاط پایانی USB، لوله ها، انواع انتقال، بسته ها، تراکنش ها، فریم ها، منبع تغذیه، توپولوژی و بسیاری موارد دیگر را بدانید. با مشخصات مکانیکی و الکتریکی USB (کانکتورها، کابل ها، مقاومت های شمارش سرعت و بسیاری موارد دیگر) آشنا شوید. تاریخچه و انگیزه توسعه اتوبوس سریال جهانی (USB) را بدانید. استفاده از خروجی یک سیم (SWO) برای ارسال گزارش ها به میزبان اشکال زدایی را بیاموزید. با استفاده از ARM CMSIS بهره وری و قابلیت حمل کد خود را افزایش دهید. کد خود را با استفاده از دستور Doxygen مستند کنید. پیش نیازها: دانش اولیه زبان برنامه نویسی C (توصیه می شود). دانش اولیه طراحی سیستم های تعبیه شده هر میکروکنترلر STM32F4 (بر اساس ARM Coretx-M4) بر روی برد Discovery یا Nucleo برای اعمال دانش.

آیا تا به حال خواسته اید دستگاه خود را توسعه دهید که می تواند با استفاده از USB به رایانه متصل شود؟ آیا با استفاده از آداپتورهای USB <- UART آشنا هستید اما می خواهید دانش و درک USB خود را به سطح نهایی بعدی برسانید؟ اگر بله، پس این دوره کاملاً برای شماست!

من تمام محتوای اسلایدها و کدها را پس از آماده‌سازی و تنظیم دقیق، توسط خودم ساختم تا بهترین تجربه‌ای را که امروز می‌توانید به صورت آنلاین پیدا کنید، برای یادگیری و درک پروتکل و چارچوب USB در تئوری و عملی به شما ارائه دهم.

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

در این دوره، ما:

- با برخی از اطلاعات نظری در مورد USB شروع کنید.

- جزئیات اساسی پروتکل USB را بدانید.

- وقت خود را صرف درک نحوه پیکربندی صحیح ساعت هر سیستم تعبیه شده کنید.

- برای میکروکنترلر مبتنی بر ARM Cortex M4 (خانواده STM32F4xx) یک سفت‌افزار USB بدون فلز را اجرا کنید.

- یک چارچوب USB بدون فلز را اجرا کنید.

- ماوس USB HID خود را از صفر تا کاملاً کاربردی توسعه دهید!

البته سورس کد پروژه ای که قرار است در این دوره با هم توسعه دهیم برای دانلود در اختیار شما قرار خواهد گرفت. می توانید از آن به عنوان یک الگو (به طور کامل یا جزئی) برای پروژه های خود در آینده استفاده کنید.

این دوره در مراحل اولیه خود است و در صورت لزوم برخی از مطالب اضافی جدید به طور مکرر اضافه یا تقویت خواهد شد. با این وجود، محتوای فعلی کامل و برای دریافت یک دستگاه رابط انسانی USB کاملاً کاربردی است.

مهندسی مبارک! شما را در داخل دوره می بینیم!


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

به دوره خوش آمدید Welcome to the Course

  • معرفی Introduction

  • چگونه از این دوره بیشترین بهره را ببریم؟ How to Get the Most of This Course?

  • سرور Discord برای ارتباطات دانشجویی Discord Server for Student Communication

  • چرا میکروکنترلر STM32F429ZI (بر اساس ARM Cortex-M4)؟ Why STM32F429ZI (ARM Cortex-M4 Based) Microcontroller?

  • بررسی Udemy Udemy Review

مقدمه ای بر USB Introduction to USB

  • تعریف و انگیزه Definition and Motivation

  • تاریخ History

  • کابل ها و کانکتورها Cables and Connectors

  • ساختار کابل USB 2.0 USB 2.0 Cable Structure

  • ویژگی های اصلی Main Features

  • توپولوژی اتوبوس و توابع Bus Topology and Functions

  • VBUS VBUS

  • مشخصات تحویل نیرو Power Delivery Specification

  • شارژر هوشمند Smart Charger

پروتکل USB USB Protocol

  • ایالات دیفرانسیل Differential States

  • ایالات اتوبوس Bus States

  • تحمل زمان Timing Tolerance

  • شناسایی سرعت USB 2.0 USB 2.0 Speed Identification

  • کمی پر کردن Bit Stuffing

  • معکوس بدون بازگشت به صفر (NRZI) Non-Return-to-Zero Inverted (NRZI)

  • کنترلرهای میزبان Host Controllers

  • قاب ها Frames

  • نقاط پایانی Endpoints

  • (PDF) بسته ها و انواع تراکنش (PDF) Packet and Transaction Types

  • بسته ها Packets

  • انواع بسته ها و فیلدهای بسته Packet Types and Packet Fields

  • معامله Transaction

  • شناسه های بسته Packet Identifiers

  • بسته های توکن Token Packets

  • بسته های داده Data Packets

  • بسته های دست دادن Handshake Packets

  • آدرس دستگاه Device Address

  • نظرسنجی اتوبوس Bus Polling

  • USB درایور میزبان است USB is Host Driver

  • USB نمایش درایور میزبان است USB is Host Driver Demonstration

  • انواع نقطه پایانی (انواع انتقال) Endpoint Types (Transfer Types)

  • قطع انتقال Interrupt Transfer

  • انتقال انبوه Bulk Transfer

  • انتقال هم زمان Isochronous Transfer

  • انتقال کنترل Control Transfer

  • کنترل مراحل انتقال Control Transfer Stages

  • تخصیص پهنای باند اتوبوس Bus Bandwidth Allocation

آماده سازی فضای کاری Preparing the Workspace

  • در حال نصب STM32CubeIDE Installing STM32CubeIDE

  • ایجاد یک پروژه جدید Creating a New Project

  • از جمله ARM CMSIS Including ARM CMSIS

  • حذف Sysmem و Syscalls Removing Sysmem and Syscalls

  • با استفاده از SWO به Debugger وارد شوید Log to Debugger Using SWO

  • یاور ورود به سیستم Logging Helper

  • پیکربندی Debugger و SVW برای Logging Configuring Debugger and SVW for Logging

  • کد منبع پروژه Project source code

پیکربندی ساعت Configuring the Clock

  • بدون تولید کد در STM32CubeMX NO CODE GENERATION IN STM32CubeMX

  • روش من برای توضیح کلاکینگ My Method to Explain Clocking

  • ایجاد پروژه موقت STM32CubeMX Creating Temporary STM32CubeMX Project

  • ماژول USB به سیگنال 48 مگاهرتز نیاز دارد USB Module Requires 48 MHz Signal

  • درک الزامات فرکانس ساعت Understanding Clock Frequency Requirements

  • آشنایی با PLL، Prescalers، SYSCLK و HCLK Understanding PLL, Prescalers, SYSCLK, and HCLK

  • درک MCO Divider Understanding MCO Divider

  • مراحل اولیه برای پیکربندی ساعت Initial Steps to Configure the Clock

  • عملیات بیت CMSIS CMSIS Bit Operations

  • پیکربندی تاخیر فلش Configuring Flash Latency

  • ماکروهای CMSIS Fld2Val و Val2Fld CMSIS Fld2Val and Val2Fld Macros

  • فعال کردن HSE Enabling HSE

  • فعال کردن و پیکربندی PLL Enabling and Configuring PLL

  • پیکربندی APB-Prescaler Configuring APB-Prescaler

  • غیرفعال کردن HSI Disabling HSI

  • تصحیح تله پیکربندی PLL Correction of PLL Configuration Trap

  • تست پیکربندی ساعت Testing Clock Configuration

  • پیکربندی MCO Configuring MCO

  • بررسی فرکانس ساعت با استفاده از اسیلوسکوپ Verifying the Clock Frequency Using Oscilloscope

  • پیکربندی مجدد فرکانس ساعت SWO Reconfiguring SWO Clock Frequency

آماده سازی تست USB و اشکال زدایی محیط لینوکس Preparing USB Testing and Debugging Linux Environment

  • نصب Wireshark در لینوکس Installing Wireshark on Linux

  • مشاهده گزارش سیستم لینوکس Viewing Linux System Log

درایور دستگاه USB - مقداردهی اولیه USB Device Driver - Initialization

  • معماری سفت‌افزاری که ما از آن استفاده خواهیم کرد Firmware Architecture We Will Be Using

  • ایجاد فایل های منبع و سربرگ درایور و دسترسی به مناطق USB Creating Driver Source and Header Files and Accessing USB Regions

  • پیکربندی GPIO به عنوان پین USB Configuring GPIOs as USB Pins

  • نکاتی برای دریافت بیشترین مزایا Tips to Get the Most Benefits

  • پیکربندی هسته و دستگاه Skimming Skimming Core and Device Configuration

  • راه اندازی هسته USB USB Core Initialization

  • راه اندازی وقفه های هسته USB Initializing USB Core Interrupts

  • اتصال دستگاه USB به اتوبوس (با استفاده از سیستم عامل) Connecting the USB Device to the Bus (Using Firmware)

  • تست اتصال دستگاه USB به میزبان Testing Connecting the USB Device to the Host

درایور دستگاه USB - حلقه نظرسنجی USB Device Driver - Polling Loop

  • وقفه جهانی هسته USB USB Core Global Interrupts

  • کنترل کننده وقفه جهانی USB USB Global Interrupt Handler

  • مراحل مدیریت سیگنال بازنشانی USB Steps of Handling USB Reset Signal

  • کنترل کننده تنظیم مجدد USB USB Reset Handler

  • پیکربندی نقطه پایانی 0 Configuring Endpoint 0

  • پیکربندی نقاط انتهایی IN Configuring IN Endpoints

  • اطلاعیه در مورد سخنرانی "Deconfiguring Endpoint". NOTICE about "Deconfiguring Endpoint" lecture

  • درحال پیکربندی نقطه پایانی Deconfiguring Endpoint

  • توجه: اعتبارسنجی پارامترها و اسناد کد NOTE: Parameters Validation and Code Documentation

  • درک حافظه اختصاصی FIFO Understanding FIFO Dedicated Memory

  • پیکربندی اندازه FIFO Configuring FIFO Size

  • پیکربندی FIFO Offset Configuring FIFO Offset

  • پیکربندی FIFO هنگام پیکربندی نقاط پایانی Configuring FIFOs While Configuring Endpoints

  • فلاشینگ FIFO Flushing FIFOs

  • دسترسی به FIFO ها Accessing the FIFOs

  • وقفه های تکمیل شده انتقال Transfer Completed Interrupts

  • کنترلر شمارش سرعت USB انجام شد USB Speed Enumeration Done Handler

  • پیاده سازی RxFIFO Not Empty Interrupt Handler Implementing RxFIFO Not Empty Interrupt Handler

  • SETUP و OUT انتقال داده های وضعیت تکمیل شده SETUP and OUT Transfer Completed Status Data

  • خروج داده ها از RxFIFO (از نقطه پایانی OUT) Popping Data from the RxFIFO (From an OUT endpoint)

  • انتقال داده به یک TxFIFO (به یک نقطه پایانی IN) Pushing Data into a TxFIFO (To an IN endpoint)

  • رفع خطای Compilaiton (تغییر ترتیب برخی از توابع) Fixing Compilaiton Error (Reorder Some Functions)

  • تعریف نوع درایور USB Defining USB Driver Type

چارچوب دستگاه USB USB Device Framework

  • نظرسنجی در سطح وقفه Polling on Interrupt Level

  • تعریف نوع رویدادهای USB Defining USB Events Type

  • تعریف وضعیت دستگاه USB Defining USB Device States

  • تعریف مراحل انتقال کنترل USB Defining USB Control Transfer Stages

  • تعریف ساختار نمونه دستگاه USB Defining USB Device Instance Structure

  • شروع به پیکربندی نمونه دستگاه USB Starting to Configure the USB Device Instance

  • پیاده سازی USB Reset Handler Implementing USB Reset Handler

  • [DRIVER] در حال پیاده سازی آدرس مجموعه USB [DRIVER] Implementing USB Set Address

  • راه‌اندازی رویداد بازنشانی USB (تماس با هندلر) Triggering USB Reset Event (Calling the Handler)

  • خواندن درخواست های دریافتی Reading the Received Requests

  • درک ساختار درخواست USB Understanding USB Request Structure

  • درک درخواست های دستگاه استاندارد USB Understanding USB Standard Device Requests

  • تعریف ساختار درخواست های USB Defining the Structure of USB Requests

  • شروع پردازش درخواست ها Starting Processing the Requests

  • بررسی درخواست اول Investigating the First Request

  • تعریف ساختار توصیفگر Defining Descriptor Structure

  • نوشتن توصیفگر دستگاه Writing the Device Descriptor

  • تعریف ماکروهای درخواست استاندارد (wValue) Defining the Standard Request Macros (wValue)

  • تعریف متغیر بعد از یک خطای موردی سوئیچ Defining a Variable after a Switch Case Error

  • یک بسته فقط زمانی بنویسید که نقطه پایانی خالی است Write a Packet ONLY when the Endpoint is Empty

  • شروع اجرای پردازشگر مرحله کنترل Starting Implementing Control Stage Processor

  • رسیدگی به درخواست توصیفگر GET DEVICE Handling GET DEVICE Descriptor Request

  • مرحله پردازش IN-DATA Processing IN-DATA Stage

  • مدیریت وقفه های نقطه پایانی IN و OUT Handling IN and OUT Endpoint Interrupts

  • انتقال به داخل و خارج تکمیل شد Handling IN and OUT Transfer Completed

  • ارسال آخرین بسته تراکنش ها Sending the Last Packet of Transactions

  • مرحله پردازش OUT-STATUS Processing OUT-STATUS Stage

  • پردازش IN-DATA Zero Sub-Stage Processing IN-DATA Zero Sub-Stage

  • قبل از تست، توابع اجرا شده را فراخوانی کنید Call the Implemented Functions Before Testing

  • مشاهده اولین ارتباط موفق در SysLog Viewing the First Successful Communication in SysLog

  • مشاهده اولین ارتباط موفق در Wireshark Viewing the First Successful Communication in Wireshark

  • در حال پردازش درخواست SET ADDRESS Processing SET ADDRESS Request

  • تنظیم آدرس دستگاه پس از اتمام تراکنش Setting Device Address after transaction completion

  • مرحله پردازش IN-STATUS Processing IN-STATUS Stage

  • مشاهده خطای SET ADDRESS در SysLog Viewing no SET ADDRESS Error in SysLog

  • مشاهده درخواست و پاسخ SET ADDRESS در Wireshark Viewing SET ADDRESS Request and Response in Wireshark

  • مشاهده پاسخ کامل GET DEVICE DESCRIPTOR در Wireshark Viewing full GET DEVICE DESCRIPTOR response in Wireshark

  • مشاهده درخواست GET CONFIGURATION در Wireshark Viewing GET CONFIGURATION request in Wireshark

  • درک ایده ترکیب توصیفگرها Understanding the idea of combining descriptors

  • تعیین مکان‌نمای توصیفگر CONFIGURATION Defining CONFIGURATION descriptor placeholder

  • ادغام CONFIG-Combination در یک تعریف Merging the CONFIG-Combination into one definition

  • رسیدگی به درخواست GET CONFIGURATION DESCRIPTOR Handling GET CONFIGURATION DESCRIPTOR request

  • درک اندازه CONFIG-Combination Understanding the size of CONFIG-Combination

  • در حال پردازش درخواست SET CONFIGURATION Processing SET CONFIGURATION request

  • تعریف تابع پیکربندی مورد خاص Defining use-case-specific configuration function

ماوس USB USB Mouse

  • مشخصات ساده ماوس USB Simple USB Mouse specifications

  • نوشتن توصیف کننده CONFIGURATION Writing CONFIGURATION descriptor

  • نوشتن توصیف کننده INTERFACE Writing INTERFACE descriptor

  • نوشتن توصیفگر ENDPOINT Writing ENDPOINT descriptor

  • نوشتن توصیفگر HID Writing HID descriptor

  • معرفی توصیفگر گزارش HID/ساختار گزارش HID Introducing HID Report descriptor / HID report structure

  • توصیف دکمه های HID Describing HID buttons

  • توصیف محورهای HID Describing HID axes

  • توصیفگر گزارش HID فشرده Compacting HID report descriptor

  • بسته بندی کپسوله های داده (بدون تراز کردن کلمات) Packing data encapsulations (no word alignment)

  • معرفی درخواست های توصیفگر Set Idle و Get HID Report Introducing Set Idle and Get HID Report descriptor requests

  • رسیدگی به درخواست SET IDLE Handling SET IDLE request

  • رسیدگی به درخواست توصیفگر GET HID REPORT Handling GET HID REPORT descriptor request

  • پاسخ به نشانه های INTERRUPT IN Responding to INTERRUPT IN tokens

  • تست ماوس USB HID Testing the USB HID Mouse

  • تغییر ترتیب توصیفگرها (سازگاری با ویندوز) Changing descriptors order (Windows compatibility)

نتیجه گیری، مراحل بعدی و با تشکر از شما! Conclusion, Next Steps and Thank you!

  • نتیجه گیری، مراحل بعدی و با تشکر از شما! Conclusion, Next Steps and Thank you!

نمایش نظرات

آموزش USB پشت صحنه: توسعه سیستم عامل HID عملی
جزییات دوره
14.5 hours
166
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
2,928
4.8 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Mohammed Noureldin Mohammed Noureldin

مهندس SW، HW و DevOps | هوش مصنوعی مشتاق | فارماکولوژیست