USB Behind the Scenes: Hands-on HID Firmware Development
USB Behind the Scenes: Hands-on HID Firmware Development, available at $84.99, has an average rating of 4.52, with 166 lectures, based on 613 reviews, and has 4395 subscribers.
You will learn about Write a bare-metal firmware for USB 2.0 human interface devices (HID) without using any third-party libraries or code generators. Implement USB device driver and USB 2.0 protocol framework. Program a fully functional USB mouse from zero. Understand the generic USB descriptors and the descriptors specific to human interface device (HID) class. Deal with native USB (WITHOUT any conversion to UART) Use ARM Cortex-M4 based microcontroller (STM32F4xx), one of the most developed and famous MCU in the world. Debug USB communication using Wireshark and Linux SysLog. Read different parts of ARM Cortex-M4 reference manual and extract the important information efficiently. Understanding how USB 2.0 protocol works in full speed mode. Understand USB endpoints, pipes, transfer types, packets, transactions, frames, power supply, topology, and many more. Learn the basic mechanical and electrical specifications of the USB (connectors, cables, speed enumeration resistors, and many more). Know the history and motivation behind developing the universal serial bus (USB). Learn using Single Wire Output (SWO) to send logs to the debugging host. Increase your productivity and code portability by using ARM CMSIS. Document your code using Doxygen syntax. This course is ideal for individuals who are Anyone who wants to understand how the complex USB systems work behind the scenes. or Embedded engineers who want to develop USB devices. or Engineers who want to enrich their knowledge in embedded systems in general. or Engineers who want to write modular and maintainable firmware. It is particularly useful for Anyone who wants to understand how the complex USB systems work behind the scenes. or Embedded engineers who want to develop USB devices. or Engineers who want to enrich their knowledge in embedded systems in general. or Engineers who want to write modular and maintainable firmware.
Enroll now: USB Behind the Scenes: Hands-on HID Firmware Development
Summary
Title: USB Behind the Scenes: Hands-on HID Firmware Development
Price: $84.99
Average Rating: 4.52
Number of Lectures: 166
Number of Published Lectures: 166
Number of Curriculum Items: 166
Number of Published Curriculum Objects: 166
Original Price: €99.99
Quality Status: approved
Status: Live
What You Will Learn
- Write a bare-metal firmware for USB 2.0 human interface devices (HID) without using any third-party libraries or code generators.
- Implement USB device driver and USB 2.0 protocol framework.
- Program a fully functional USB mouse from zero.
- Understand the generic USB descriptors and the descriptors specific to human interface device (HID) class.
- Deal with native USB (WITHOUT any conversion to UART)
- Use ARM Cortex-M4 based microcontroller (STM32F4xx), one of the most developed and famous MCU in the world.
- Debug USB communication using Wireshark and Linux SysLog.
- Read different parts of ARM Cortex-M4 reference manual and extract the important information efficiently.
- Understanding how USB 2.0 protocol works in full speed mode.
- Understand USB endpoints, pipes, transfer types, packets, transactions, frames, power supply, topology, and many more.
- Learn the basic mechanical and electrical specifications of the USB (connectors, cables, speed enumeration resistors, and many more).
- Know the history and motivation behind developing the universal serial bus (USB).
- Learn using Single Wire Output (SWO) to send logs to the debugging host.
- Increase your productivity and code portability by using ARM CMSIS.
- Document your code using Doxygen syntax.
Who Should Attend
- Anyone who wants to understand how the complex USB systems work behind the scenes.
- Embedded engineers who want to develop USB devices.
- Engineers who want to enrich their knowledge in embedded systems in general.
- Engineers who want to write modular and maintainable firmware.
Target Audiences
- Anyone who wants to understand how the complex USB systems work behind the scenes.
- Embedded engineers who want to develop USB devices.
- Engineers who want to enrich their knowledge in embedded systems in general.
- Engineers who want to write modular and maintainable firmware.
Have you ever wanted to develop your own device that can be connected to a computer using USB? Are you familiar with using USB <-> UART adapters but want to take your USB knowledge and understanding to the next ultimate level? If yes, then this course is absolutely for you!
I made the whole content of slides and code by myself after a lot of preparation and fine-tuning to give you the best experience you can find today online to learn and understand USB protocol and framework in theory and in practice.
Your journey with me in this course should save you from any frustration that could happen when you try to learn or understand USB from any other online source. USB is for most a mystery and a very complex protocol, and most engineers try to avoid it or at least try to convert it to other simpler protocols. However, after taking this course, you will be able to be a confident native USB engineer, and you will be able to develop your first bare-metal USB device with me without using any library, which will give you full control over the powers of USB. Even if you want in your career to use a USB library, taking this course will give you a full understanding of what is going on behind the scenes, and will allow you to be able to develop and fine-tune and USB device you want, because, after the end of this course, I would expect from you to have a full understanding of the concept of USB and how it works.
In this course, we will:
– Start with some theoretical information about USB.
– Understand the essential details of USB protocol.
– Take our time to understand how to configure the clock of any embedded system correctly.
– Implement a bare-metal USB firmware for ARM Cortex M4 based microcontroller (STM32F4xx family).
– Implement a bare-metal USB framework.
– Develop our own USB HID mouse from zero to fully functional!
Of course, the source code of the project we are going to develop together in this course will be available for you to download. You may use it as a template (fully or partially) for your projects in the future.
This course is in its early stages and some new additional content will be added or enhanced if necessary frequently. Nevertheless, the current content is full and sufficient to get a fully functional USB human interface device.
Happy engineering! See you inside the course!
Course Curriculum
Chapter 1: Welcome to the Course
Lecture 1: Introduction
Lecture 2: How to Get the Most of This Course?
Lecture 3: Discord Server for Student Communication
Lecture 4: Why STM32F429ZI (ARM Cortex-M4 Based) Microcontroller?
Lecture 5: Udemy Review
Chapter 2: Introduction to USB
Lecture 1: Definition and Motivation
Lecture 2: History
Lecture 3: Cables and Connectors
Lecture 4: USB 2.0 Cable Structure
Lecture 5: Main Features
Lecture 6: Bus Topology and Functions
Lecture 7: VBUS
Lecture 8: Power Delivery Specification
Lecture 9: Smart Charger
Chapter 3: USB Protocol
Lecture 1: Differential States
Lecture 2: Bus States
Lecture 3: Timing Tolerance
Lecture 4: USB 2.0 Speed Identification
Lecture 5: Bit Stuffing
Lecture 6: Non-Return-to-Zero Inverted (NRZI)
Lecture 7: Host Controllers
Lecture 8: Frames
Lecture 9: Endpoints
Lecture 10: (PDF) Packet and Transaction Types
Lecture 11: Packets
Lecture 12: Packet Types and Packet Fields
Lecture 13: Transaction
Lecture 14: Packet Identifiers
Lecture 15: Token Packets
Lecture 16: Data Packets
Lecture 17: Handshake Packets
Lecture 18: Device Address
Lecture 19: Bus Polling
Lecture 20: USB is Host Driver
Lecture 21: USB is Host Driver Demonstration
Lecture 22: Endpoint Types (Transfer Types)
Lecture 23: Interrupt Transfer
Lecture 24: Bulk Transfer
Lecture 25: Isochronous Transfer
Lecture 26: Control Transfer
Lecture 27: Control Transfer Stages
Lecture 28: Bus Bandwidth Allocation
Chapter 4: Preparing the Workspace
Lecture 1: Installing STM32CubeIDE
Lecture 2: Creating a New Project
Lecture 3: Including ARM CMSIS
Lecture 4: Removing Sysmem and Syscalls
Lecture 5: Log to Debugger Using SWO
Lecture 6: Logging Helper
Lecture 7: Configuring Debugger and SVW for Logging
Lecture 8: Project source code
Chapter 5: Configuring the Clock
Lecture 1: NO CODE GENERATION IN STM32CubeMX
Lecture 2: My Method to Explain Clocking
Lecture 3: Creating Temporary STM32CubeMX Project
Lecture 4: USB Module Requires 48 MHz Signal
Lecture 5: Understanding Clock Frequency Requirements
Lecture 6: Understanding PLL, Prescalers, SYSCLK, and HCLK
Lecture 7: Understanding MCO Divider
Lecture 8: Initial Steps to Configure the Clock
Lecture 9: CMSIS Bit Operations
Lecture 10: Configuring Flash Latency
Lecture 11: CMSIS Fld2Val and Val2Fld Macros
Lecture 12: Enabling HSE
Lecture 13: Enabling and Configuring PLL
Lecture 14: Configuring APB-Prescaler
Lecture 15: Disabling HSI
Lecture 16: Correction of PLL Configuration Trap
Lecture 17: Testing Clock Configuration
Lecture 18: Configuring MCO
Lecture 19: Verifying the Clock Frequency Using Oscilloscope
Lecture 20: Reconfiguring SWO Clock Frequency
Chapter 6: Preparing USB Testing and Debugging Linux Environment
Lecture 1: Installing Wireshark on Linux
Lecture 2: Viewing Linux System Log
Chapter 7: USB Device Driver – Initialization
Lecture 1: Firmware Architecture We Will Be Using
Lecture 2: Creating Driver Source and Header Files and Accessing USB Regions
Lecture 3: Configuring GPIOs as USB Pins
Lecture 4: Tips to Get the Most Benefits
Lecture 5: Skimming Core and Device Configuration
Lecture 6: USB Core Initialization
Lecture 7: Initializing USB Core Interrupts
Lecture 8: Connecting the USB Device to the Bus (Using Firmware)
Lecture 9: Testing Connecting the USB Device to the Host
Chapter 8: USB Device Driver – Polling Loop
Lecture 1: USB Core Global Interrupts
Lecture 2: USB Global Interrupt Handler
Lecture 3: Steps of Handling USB Reset Signal
Lecture 4: USB Reset Handler
Lecture 5: Configuring Endpoint 0
Lecture 6: Configuring IN Endpoints
Lecture 7: NOTICE about "Deconfiguring Endpoint" lecture
Lecture 8: Deconfiguring Endpoint
Lecture 9: NOTE: Parameters Validation and Code Documentation
Lecture 10: Understanding FIFO Dedicated Memory
Lecture 11: Configuring FIFO Size
Instructors
-
Mohammed Noureldin
SW, HW & DevOps Engineer | AI Enthusiastic | Pharmacologist
Rating Distribution
- 1 stars: 4 votes
- 2 stars: 7 votes
- 3 stars: 26 votes
- 4 stars: 131 votes
- 5 stars: 445 votes
Frequently Asked Questions
How long do I have access to the course materials?
You can view and review the lecture materials indefinitely, like an on-demand channel.
Can I take my courses with me wherever I go?
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don’t have an internet connection, some instructors also let their students download course lectures. That’s up to the instructor though, so make sure you get on their good side!
You may also like
- Top 10 Video Editing Courses to Learn in November 2024
- Top 10 Music Production Courses to Learn in November 2024
- Top 10 Animation Courses to Learn in November 2024
- Top 10 Digital Illustration Courses to Learn in November 2024
- Top 10 Renewable Energy Courses to Learn in November 2024
- Top 10 Sustainable Living Courses to Learn in November 2024
- Top 10 Ethical AI Courses to Learn in November 2024
- Top 10 Cybersecurity Fundamentals Courses to Learn in November 2024
- Top 10 Smart Home Technology Courses to Learn in November 2024
- Top 10 Holistic Health Courses to Learn in November 2024
- Top 10 Nutrition And Diet Planning Courses to Learn in November 2024
- Top 10 Yoga Instruction Courses to Learn in November 2024
- Top 10 Stress Management Courses to Learn in November 2024
- Top 10 Mindfulness Meditation Courses to Learn in November 2024
- Top 10 Life Coaching Courses to Learn in November 2024
- Top 10 Career Development Courses to Learn in November 2024
- Top 10 Relationship Building Courses to Learn in November 2024
- Top 10 Parenting Skills Courses to Learn in November 2024
- Top 10 Home Improvement Courses to Learn in November 2024
- Top 10 Gardening Courses to Learn in November 2024