15 repositorios
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 15 awesome GitHub repositories matching operating systems & systems programming · Device Drivers. Refine with filters or upvote what's useful.
XNU es un kernel de sistema operativo híbrido que combina una arquitectura de microkernel con una capa monolítica para servicios del sistema. Proporciona una base para el desarrollo de sistemas operativos, incorporando interfaces de llamadas al sistema estandarizadas, un framework de controladores de dispositivos modular y seguridad de control de acceso obligatorio. La arquitectura cuenta con un microkernel basado en Mach y una capa monolítica basada en BSD. Utiliza un bus de comunicación entre procesos de paso de mensajes para el intercambio seguro de datos entre componentes aislados del kernel y procesos de espacio de usuario, junto con un framework de controladores orientado a objetos que desacopla la lógica específica del hardware del kernel central. El sistema incluye un motor de control de acceso obligatorio para la aplicación de seguridad basada en políticas y un depurador de kernel remoto para inspeccionar la memoria en vivo y analizar los pánicos del sistema. Las capacidades adicionales cubren la programación de multiprocesadores, coordinación de recursos de hardware y un sistema de compilación para generar imágenes arrancables a través de diferentes arquitecturas. El proyecto proporciona herramientas para la gestión de compilación del kernel, generación de símbolos de depuración y un framework para la verificación de llamadas al sistema.
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.
Este proyecto es una librería Java para establecer conexiones de puerto serie crudas entre dispositivos Android y hardware externo utilizando el modo host USB. Proporciona un puente de comunicación para interactuar con microcontroladores y adaptadores sin requerir acceso root. La librería incluye un framework de identificación de dispositivos para detectar y mapear hardware serie utilizando IDs de proveedor y producto. Cuenta con implementaciones de controladores especializados para chipsets como CDC y FTDI para permitir el intercambio de datos a través de diferentes estándares de hardware. Cubre capacidades de integración de hardware que incluyen el descubrimiento de dispositivos, la configuración de puertos serie para velocidades de baudios y la gestión de líneas de señal para el control de flujo de hardware.
Implements USB interface binding and I/O for Common Class and FTDI chipsets.
i2cdevlib es una colección de controladores de periféricos y capas de abstracción de hardware diseñadas para dispositivos I2C. Proporciona una colección de controladores de sensores, una base de datos de mapas de registros y un gestor de periféricos para coordinar la comunicación entre microcontroladores y componentes de hardware. El proyecto utiliza una capa de abstracción de hardware para desacoplar la lógica del dispositivo del hardware específico del microcontrolador y las bibliotecas de cableado. Esta abstracción de la capa de transporte permite que los mismos controladores de dispositivo permanezcan portátiles a través de diferentes arquitecturas de hardware. La biblioteca cubre una amplia gama de integración de hardware, incluyendo sensores de movimiento e inerciales, monitores ambientales, relojes de tiempo real y detección táctil capacitiva. También incluye soporte para expansión GPIO, conversión de analógico a digital y el control de pantallas OLED y medidores digitales. El sistema incluye herramientas para la depuración del protocolo I2C y análisis de tráfico, permitiendo la correlación de datos brutos de analizadores lógicos con definiciones de mapas de registros legibles por humanos.
Automatically creates functional management code and bitfield access patterns using defined register map specifications.
Este proyecto es un driver de cámara para el sistema macOS y un plugin de software que expone flujos de video de software como entradas de cámara reconocidas por el hardware. Funciona como un plugin de cámara virtual para OBS, permitiendo que la salida en vivo de OBS sea utilizada como un dispositivo de webcam dentro de otras aplicaciones. La herramienta permite el enrutamiento de video compuesto desde una suite de producción hacia aplicaciones de videoconferencia como Zoom o Google Meet. Esto permite la transmisión de escenas procesadas en lugar de una señal de webcam cruda. El sistema se integra con macOS utilizando un driver de dispositivo a nivel de kernel y transferencias de buffer de memoria compartida para mover fotogramas de video desde el proceso de la aplicación hacia el sistema operativo. Utiliza el framework CoreMedia para manejar la temporización y los metadatos del flujo de video.
Provides a kernel-level device driver that creates a virtual video device recognized by the operating system.
embedded-notes es una colección de guías de estudio técnicas y notas de desarrollo centradas en Linux embebido, los internos del kernel de Linux y programación en C. Sirve como referencia para el desarrollo de sistemas embebidos y un recurso de preparación para entrevistas técnicas en el campo. El proyecto proporciona documentación detallada sobre la escritura de drivers de dispositivos, gestión de memoria virtual y comprensión de los internos del kernel. También incluye guías sobre protocolos de red IoT, como MQTT y TCP/IP, y describe los detalles arquitectónicos de arquitecturas de chips y periféricos de hardware. El material cubre una amplia superficie de programación de sistemas, incluyendo gestión manual de memoria, gestión del ciclo de vida de procesos y la implementación de conceptos de sistemas operativos en tiempo real (RTOS). También incluye referencias para herramientas de bajo nivel, como compilación cruzada para ARM, análisis binario y scripting de shell para la automatización de compilaciones.
Provides technical guides on implementing kernel-mode device drivers for memory, logging, and process communication.
NuttX is a POSIX-compliant real-time operating system designed for microcontrollers ranging from 8-bit to 64-bit architectures. It provides a deterministic execution environment with a real-time task scheduler and a POSIX embedded kernel to ensure portable code execution across diverse hardware targets. The project distinguishes itself through a comprehensive hardware abstraction layer that provides standardized drivers for I2C, SPI, CAN, and USB across various semiconductor chipsets. It also features an embedded networking stack supporting TCP, UDP, IPv4, and IPv6, alongside industrial proto
Provides a framework for character, block, and specialized drivers to interface hardware with the OS.
HyperDbg is a hardware-assisted kernel-mode debugging platform that leverages virtualization to monitor and control system execution. By utilizing hypervisor-level primitives, it enables deep system analysis and instrumentation without relying on standard operating system debugging interfaces. The framework provides a comprehensive environment for inspecting both kernel and user-mode processes, allowing for granular control over execution flow and system state. The project distinguishes itself through a transparent debugging layer designed to remain invisible to the target environment. It emp
Lists connected PCI and PCIe devices along with vendor and device identification details.
This project is a reference library of firmware examples and a development framework for creating embedded C applications on the RP2040 microcontroller. It provides a collection of hardware peripheral drivers and foundational patterns for managing system resources in resource-constrained environments. The library features reference implementations for programmable I/O state machines, allowing for the creation of custom hardware-level protocols. It also provides a multicore embedded framework to distribute computational workloads across multiple processor cores using symmetric processing. The
Supports creating custom USB peripherals like keyboards, mice, or storage drives by implementing specific device profiles.
This repository contains the complete source code for the OpenBSD operating system and its base utilities. It is a Unix-like operating system focused on a secure, portable, and multi-user environment, featuring a C-based system kernel that manages hardware resources and provides essential services. The project provides a source-based system construction model to compile the core kernel and base utilities from raw files. It includes a cross-compilation toolchain for generating the tools and headers necessary to build binaries for target architectures different from the host machine. The codeb
Implements a modular system of device drivers to interface the kernel with hardware.
Este proyecto proporciona un framework de desarrollo para escribir módulos cargables del kernel de Linux utilizando el lenguaje de programación Rust. Establece una metodología para la programación de sistemas segura al imponer seguridad de memoria y de hilos dentro del entorno de ejecución restringido del kernel, permitiendo a los desarrolladores extender la funcionalidad del sistema operativo mientras previenen errores comunes de corrupción de memoria. El framework se distingue por la generación automatizada de interfaces de funciones externas (FFI) con seguridad de tipos, que conectan código de alto nivel con cabeceras y estructuras del sistema de bajo nivel. Mapea construcciones de sincronización de alto nivel directamente a mecanismos de bloqueo nativos del kernel, asegurando que los datos compartidos permanezcan protegidos a través de múltiples hilos de ejecución y contextos de interrupción. El conjunto de herramientas se integra con los pipelines de compilación nativos del kernel para gestionar la compilación y el enlace de código fuente en objetos binarios. Al proporcionar abstracciones seguras para la interfaz con hardware y entornos de recursos limitados, soporta la creación de controladores de dispositivos y componentes de sistema fiables que mantienen reglas estrictas de propiedad y préstamo en tiempo de compilación.
Enables the creation of reliable device drivers using type-safe bindings to communicate with kernel structures.