12 dépôts
Kernel-mode implementations for hardware device communication and interrupt management.
Distinct from Kernel Driver Implementation: Broadens from filesystem-specific drivers to general hardware device drivers
Explore 12 awesome GitHub repositories matching operating systems & systems programming · Device Drivers. Refine with filters or upvote what's useful.
XNU est un noyau de système d'exploitation hybride qui combine une architecture de micro-noyau avec une couche monolithique pour les services système. Il fournit une base pour le développement de systèmes d'exploitation, incorporant des interfaces d'appel système standardisées, un framework de pilotes de périphériques modulaire et une sécurité de contrôle d'accès obligatoire. L'architecture dispose d'un micro-noyau basé sur Mach et d'une couche monolithique basée sur BSD. Il utilise un bus de communication inter-processus par passage de messages pour un échange de données sécurisé entre les composants isolés du noyau et les processus en espace utilisateur, aux côtés d'un framework de pilotes orienté objet qui découple la logique spécifique au matériel du noyau central. Le système inclut un moteur de contrôle d'accès obligatoire pour l'application de la sécurité pilotée par les politiques et un débogueur de noyau distant pour inspecter la mémoire en direct et analyser les paniques système. Des capacités supplémentaires couvrent la planification multi-processeur, la coordination des ressources matérielles et un système de construction pour générer des images amorçables à travers différentes architectures. Le projet fournit des outils pour la gestion de la construction du noyau, la génération de symboles de débogage et un framework pour la vérification des appels système.
Provides a modular framework for developing and managing kernel-mode hardware device drivers.
This project is a Windows Precision Touchpad driver and Apple Trackpad HID driver. It functions as an input device gesture driver that converts raw touch data from Apple trackpads and MacBooks into native multi-touch gestures and precise pointer movement. The driver implements the precision touchpad protocol to enable native Windows gesture and pointer controls for Apple hardware. This allows the operating system to recognize Apple trackpads as precision touchpads, replacing basic mouse functionality with native multi-finger swipes and precise scrolling. The implementation covers kernel-mode
Implements a kernel-mode driver to intercept hardware interrupts and manage low-level touchpad communication.
The Linux Kernel Module Programming Guide is an educational resource that teaches how to write, compile, and manage loadable kernel modules for modern Linux kernels. It covers the complete lifecycle of kernel modules, from building and loading to unloading and debugging, with a focus on extending kernel functionality without recompiling the entire kernel. The guide provides comprehensive coverage of core kernel programming concepts including dynamic module loading, file-operation registration, interrupt handling, kernel-user data copying, concurrency control, and deferred task scheduling. It
Teaches how to register character devices with major numbers and file operations for user-space interaction.
This repository is a collection of reference source code and implementation examples for developing drivers using the Windows Driver Kit. It provides hardware device driver samples and development templates for building kernel-mode software that enables communication between the Windows operating system and hardware devices. The library includes examples for creating universal Windows drivers, which utilize a shared set of interfaces to operate across multiple versions of the operating system. It also contains specialized implementation samples for various hardware categories, including netwo
Provides reference implementations of kernel-mode drivers for hardware device communication and interrupt management.
This project provides a customized Linux kernel and driver suite designed to enable hardware compatibility for Surface devices. It focuses on building and patching the Linux kernel to provide driver support for proprietary hardware components that are missing from the upstream source. The system includes a secure boot kernel signing mechanism and a process for enrolling custom keys into the system firmware. This allows the execution of patched kernels while maintaining system security protections. The project covers peripheral driver support for touchscreens, styluses, and keyboards, as well
Provides kernel-mode drivers for touchscreens and styluses not available in the mainline kernel.
Tock is a secure embedded operating system and microcontroller kernel designed to isolate untrusted applications and drivers. It functions as a memory-safe process isolator that uses a combination of hardware memory protection and language-level type safety to execute mutually distrustful applications on bare metal. The system distinguishes itself through a hardware abstraction layer that decouples high-level components from specific microcontroller implementations using standardized traits. It further employs a virtualization layer to allow multiple independent software components to share a
Signals user processes by executing registered callback functions through a controlled system call interface.
Ce projet est une bibliothèque Java permettant d'établir des connexions série brutes entre des appareils Android et du matériel externe via le mode hôte USB. Il fournit un pont de communication pour interagir avec des microcontrôleurs et des adaptateurs sans nécessiter d'accès root. La bibliothèque inclut un framework d'identification d'appareils pour détecter et mapper le matériel série en utilisant les identifiants de vendeur et de produit. Elle propose des implémentations de pilotes spécialisées pour des chipsets tels que CDC et FTDI afin de permettre l'échange de données entre différentes normes matérielles. Elle couvre des capacités d'intégration matérielle incluant la découverte d'appareils, la configuration des ports série pour les débits en bauds, et la gestion des lignes de signal pour le contrôle de flux matériel.
Implements USB interface binding and I/O for Common Class and FTDI chipsets.
i2cdevlib est une collection de pilotes de périphériques et de couches d'abstraction matérielle conçus pour les appareils I2C. Il fournit une collection de pilotes de capteurs, une base de données de registres et un gestionnaire de périphériques pour coordonner la communication entre les microcontrôleurs et les composants matériels. Le projet utilise une couche d'abstraction matérielle pour découpler la logique de l'appareil du matériel spécifique du microcontrôleur et des bibliothèques de câblage. Cette abstraction de la couche de transport permet aux pilotes de périphériques de rester portables sur différentes architectures matérielles. La bibliothèque couvre un large éventail d'intégrations matérielles, incluant des capteurs de mouvement et inertiels, des moniteurs environnementaux, des horloges temps réel et la détection tactile capacitive. Elle inclut également la prise en charge de l'extension GPIO, de la conversion analogique-numérique et du pilotage d'écrans OLED et de compteurs numériques. Le système inclut des outils pour le débogage du protocole I2C et l'analyse du trafic, permettant la corrélation des données brutes d'un analyseur logique avec des définitions de registres lisibles par l'homme.
Automatically creates functional management code and bitfield access patterns using defined register map specifications.
Ce projet est un pilote de caméra système macOS et un plugin logiciel qui expose les flux vidéo logiciels en tant qu'entrées caméra reconnues par le matériel. Il fonctionne comme un plugin de caméra virtuelle OBS, permettant d'utiliser la sortie en direct d'OBS comme un périphérique webcam dans d'autres applications. L'outil permet le routage de la vidéo composée depuis une suite de production vers des applications de visioconférence telles que Zoom ou Google Meet. Cela permet de diffuser des scènes traitées au lieu d'un flux webcam brut. Le système s'intègre à macOS en utilisant un pilote de périphérique au niveau du noyau et des transferts de mémoire partagée pour déplacer les trames vidéo du processus de l'application vers le système d'exploitation. Il utilise le framework CoreMedia pour gérer la synchronisation des flux vidéo et les métadonnées.
Provides a kernel-level device driver that creates a virtual video device recognized by the operating system.
embedded-notes is a collection of technical study guides and development notes focused on embedded Linux, Linux kernel internals, and C programming. It serves as a reference for embedded systems development and a preparation resource for technical interviews in the field. The project provides detailed documentation on writing device drivers, managing virtual memory, and understanding kernel internals. It also includes guides on IoT network protocols, such as MQTT and TCP/IP, and outlines the architectural details of chip architectures and hardware peripherals. The material covers a broad sur
Provides technical guides on implementing kernel-mode device drivers for memory, logging, and process communication.
NuttX est un système d'exploitation temps réel (RTOS) conforme à POSIX, conçu pour les microcontrôleurs allant des architectures 8 bits aux 64 bits. Il fournit un environnement d'exécution déterministe avec un ordonnanceur de tâches temps réel et un noyau embarqué POSIX pour assurer une exécution de code portable sur diverses cibles matérielles. Le projet se distingue par une couche d'abstraction matérielle complète qui fournit des pilotes standardisés pour I2C, SPI, CAN et USB sur divers chipsets de semi-conducteurs. Il dispose également d'une pile réseau embarquée prenant en charge TCP, UDP, IPv4 et IPv6, ainsi que des protocoles industriels tels que Modbus et DroneCAN. Le système couvre un large éventail de capacités, incluant une gestion avancée de la mémoire avec pagination à la demande, des opérations cryptographiques sécurisées et un système de fichiers virtuel pour gérer des types de stockage disparates. Il intègre en outre des interfaces de haut niveau pour les interfaces graphiques, la synthèse audio et l'exécution de plusieurs langages de script et charges de travail WebAssembly. L'environnement est construit en utilisant Make ou CMake pour cibler des configurations de cartes et des chipsets spécifiques.
Provides a framework for character, block, and specialized drivers to interface hardware with the OS.
Ce projet fournit un framework de développement pour écrire des modules de noyau Linux chargeables en utilisant le langage de programmation Rust. Il établit une méthodologie pour la programmation système sécurisée en imposant la sécurité de la mémoire et des threads au sein de l'environnement d'exécution restreint du noyau, permettant aux développeurs d'étendre les fonctionnalités du système d'exploitation tout en prévenant les erreurs courantes de corruption mémoire. Le framework se distingue par la génération automatisée d'interfaces de fonctions étrangères (FFI) typées, qui font le pont entre le code de haut niveau et les en-têtes et structures système du noyau de bas niveau. Il mappe les constructions de synchronisation de haut niveau directement sur les mécanismes de verrouillage natifs du noyau, garantissant que les données partagées restent protégées à travers de multiples threads d'exécution et contextes d'interruption. L'ensemble d'outils s'intègre aux pipelines de build natifs du noyau pour gérer la compilation et l'édition de liens du code source en objets binaires. En fournissant des abstractions sécurisées pour l'interfaçage matériel et les environnements aux ressources limitées, il prend en charge la création de pilotes de périphériques et de composants système fiables qui maintiennent des règles strictes de propriété et d'emprunt à la compilation.
Enables the creation of reliable device drivers using type-safe bindings to communicate with kernel structures.