Udemy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Development
Web Development Data Science Mobile Development Programming Languages Game Development Database Design & Development Software Testing Software Engineering Software Development Tools No-Code Development
Business
Entrepreneurship Communication Management Sales Business Strategy Operations Project Management Business Law Business Analytics & Intelligence Human Resources Industry E-Commerce Media Real Estate Other Business
Finance & Accounting
Accounting & Bookkeeping Compliance Cryptocurrency & Blockchain Economics Finance Finance Cert & Exam Prep Financial Modeling & Analysis Investing & Trading Money Management Tools Taxes Other Finance & Accounting
IT & Software
IT Certifications Network & Security Hardware Operating Systems & Servers Other IT & Software
Office Productivity
Microsoft Apple Google SAP Oracle Other Office Productivity
Personal Development
Personal Transformation Personal Productivity Leadership Career Development Parenting & Relationships Happiness Esoteric Practices Religion & Spirituality Personal Brand Building Creativity Influence Self Esteem & Confidence Stress Management Memory & Study Skills Motivation Other Personal Development
Design
Web Design Graphic Design & Illustration Design Tools User Experience Design Game Design 3D & Animation Fashion Design Architectural Design Interior Design Other Design
Marketing
Digital Marketing Search Engine Optimization Social Media Marketing Branding Marketing Fundamentals Marketing Analytics & Automation Public Relations Paid Advertising Video & Mobile Marketing Content Marketing Growth Hacking Affiliate Marketing Product Marketing Other Marketing
Lifestyle
Arts & Crafts Beauty & Makeup Esoteric Practices Food & Beverage Gaming Home Improvement & Gardening Pet Care & Training Travel Other Lifestyle
Photography & Video
Digital Photography Photography Portrait Photography Photography Tools Commercial Photography Video Design Other Photography & Video
Health & Fitness
Fitness General Health Sports Nutrition & Diet Yoga Mental Health Martial Arts & Self Defense Safety & First Aid Dance Meditation Other Health & Fitness
Music
Instruments Music Production Music Fundamentals Vocal Music Techniques Music Software Other Music
Teaching & Academics
Engineering Humanities Math Science Online Education Social Science Language Learning Teacher Training Test Prep Other Teaching & Academics
Web Development JavaScript React Angular CSS Node.Js Typescript HTML5 PHP
AWS Certification Microsoft Certification AWS Certified Solutions Architect - Associate AWS Certified Cloud Practitioner CompTIA A+ Amazon AWS Cisco CCNA CompTIA Security+ Microsoft AZ-900
Microsoft Power BI SQL Tableau Data Modeling Business Analysis Data Analysis Data Warehouse Blockchain Business Intelligence
Unity Unreal Engine Game Development Fundamentals C# 3D Game Development C++ Unreal Engine Blueprints 2D Game Development Mobile Game Development
Google Flutter iOS Development Android Development Swift React Native Dart (programming language) Kotlin SwiftUI Mobile App Development
Graphic Design Photoshop Adobe Illustrator Drawing Canva Digital Painting InDesign Design Theory Procreate Digital Illustration App
Life Coach Training Neuro-Linguistic Programming Personal Development Personal Transformation Life Purpose Mindfulness Sound Therapy Emotional Intelligence Coaching
Business Fundamentals Entrepreneurship Fundamentals Freelancing Business Strategy Online Business Startup Business Plan Blogging Amazon Kindle Direct Publishing (KDP)
Digital Marketing Social Media Marketing Marketing Strategy Internet Marketing Copywriting Google Analytics Email Marketing Startup Advertising Strategy

IT & SoftwareHardwareEmbedded Systems

USB Behind the Scenes: Hands-on HID Firmware Development

The #1 video course that explains programming bare-metal firmware for USB human interface devices (HID) step by step.
Rating: 4.7 out of 54.7 (288 ratings)
2,114 students
Created by Mohammed Noureldin
Last updated 2/2021
English
English [Auto]

What you'll 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.

Requirements

  • Basic knowledge of C programming language (recommended).
  • Basic knowledge of designing embedded systems.
  • Any STM32F4 Microcontroller (ARM Coretx-M4 based) on Discovery or Nucleo board to apply the knowledge.

Description

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!

Who this course is for:

  • 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.

Instructor

Mohammed Noureldin
SW, HW & DevOps Engineer | AI Enthusiastic | Pharmacologist
Mohammed Noureldin
  • 4.7 Instructor Rating
  • 288 Reviews
  • 2,114 Students
  • 1 Course

Austrian software engineer with a focus not only on coding, but also on every single detail of software engineering, equipped with a diversity of promising and useful skills, like deep knowledge in different programming languages and frameworks, hands-on embedded systems, and a thorough DevOps experience. Always interested in the latest cutting-edge technologies, and recently started gaining deep knowledge and experience in the field of machine learning and artificial intelligence. My huge passion for technology motivated me to self-educate myself in these different technical fields, and the vision to the future keeps pulling me to develop myself continuously.

Additionally, a pharmacist holds a doctoral degree (Ph.D.) in pharmacology from the University of Graz in Austria. Besides being a husband to a beautiful doctor, but not a father yet.

To keep myself fit (though in the being time I am not really committed), swimming, table tennis, and cycling are my favorites. Occasionally I like to play some computer or board games.

Top companies choose Udemy Business to build in-demand career skills.
NasdaqVolkswagenBoxNetAppEventbrite
  • Udemy Business
  • Teach on Udemy
  • Get the app
  • About us
  • Contact us
  • Careers
  • Blog
  • Help and Support
  • Affiliate
  • Investors
  • Terms
  • Privacy policy
  • Sitemap
  • Accessibility statement
Udemy
© 2022 Udemy, Inc.