OpenFFBoard is an open-source force feedback interface board designed for simulation devices like steering wheels and joysticks. The firmware provides force feedback effects via USB HID to gaming/simulation software while processing inputs from encoders, analog sources, buttons, and CAN bus. It features a modular architecture based on FreeRTOS with TinyUSB USB stack, supporting multiple motor drivers (PWM, TMC4671, ODrive, VESC, RMD) and a command interface for runtime configuration. Settings persist to flash/EEPROM via an abstraction layer with automatic registration. The project targets STM32 microcontrollers (F407VG, F407VG_DISCO, F411RE) and includes extensive hardware abstraction layers, plugin architecture for extensibility, and clean C++ wrappers for FreeRTOS primitives.
IronOS is embedded firmware for a family of portable soldering irons (TS100, TS80/P, TS101, Pinecil, Pinecil V2, MHP30, Sequre S60/S60P/T55/S99). The firmware runs on three distinct SoC architectures — STM32F103 (Cortex-M3), GD32VF103 (RISC-V), and Bouffalo BL702 (RISC-V) — behind a single board-support abstraction. It implements PID temperature control of the soldering tip via PWM, thermocouple uV-to-temperature conversion with cold-junction compensation, USB-PD (FUSB302/FUSB302B/HUB238/FS2711) and Quick Charge 3.0 power negotiation, accelerometer/hall-effect-based motion detection for sleep, an OLED menu UI, and a full BLE GATT stack on Pinecil V2. The core control loop is: ADC samples tip thermocouple voltage (with PWM holdoff timing) -> gain/op-amp compensation and lookup-table interpolation to Celsius -> PID controller -> PWM duty to the heating element, with input voltage/current monitoring for wattage budgeting and thermal runaway protection.
RVX is a fully functional RISC-V RV32I microcontroller IP core written in synthesizable Verilog, targeting FPGAs (specifically Digilent Arty A7 and Cmod A7 boards). It implements the RV32I base ISA v2.1 plus the Zicsr extension and Machine-Level ISA v1.13. The core includes a custom system bus (`rvx_bus`) that can be parameterized with an arbitrary number of memory-mapped slaves, and a set of peripherals: UART, GPIO, SPI, and machine timer (`mtime`/`mtimecmp`). The repository provides complete example projects for bare-metal and FreeRTOS, including board-specific wrapper modules, constraint files, and TCL scripts for Vivado project creation. The software examples use CMake with the RISC-V GCC toolchain and the `libsteel` hardware abstraction library. A comprehensive verification suite covers all RV32I instructions via RISC-V Architecture Test programs, alongside Cocotb-based peripheral tests and a Verilator simulation framework with C++ harness. The bus interface uses a simple request/response handshake with write strobes, which is clean but non-standard (not AXI/Wishbone). The core is a single-monolithic file (~1300 lines) with a 4-state FSM and no pipelining, making it compact but harder to modify. Overall, the repository is a well-documented, professionally structured open-source hardware project with strong testing practices, suitable for FPGA-based embedded systems education or low-complexity control applications.
This repository is a VSCode-based development port of the LVGL embedded GUI library for PC simulation. It provides a complete environment to develop and test LVGL applications on Linux, Windows, and macOS without embedded hardware. The codebase includes a CMake build system, an SDL2-based hardware abstraction layer (HAL) for display and input devices (mouse, keyboard, touchwheel), and optional FreeRTOS integration for simulating real-time behavior. The main entry points are `src/main.c` (single-threaded with a `while(1)` loop) and `src/freertos_main.c` (FreeRTOS task-based), both using the same `sdl_hal_init()` to set up LVGL. The project is essentially a thin wrapper that initializes LVGL, sets up SDL drivers, and runs a demo or user application. Its architecture is straightforward: LVGL submodule, SDL library, and application glue code. The repository is actively maintained, with recent commits and issue triage, and uses current versions of LVGL (v10.0.0) and SDL2. It is a solid but unexceptional project, serving its purpose as a convenient PC simulator for LVGL development.
This repository contains the ESP-Drone firmware, an open-source flight control system for quadcopters based on Espressif ESP32/ESP32-S2/ESP32-S3 microcontrollers. It is a port of the Bitcraze Crazyflie firmware (GPLv3) and is primarily designed for STEAM education. The system provides a complete drone control stack including sensor drivers (IMU, barometer, magnetometer, ToF range finders, optical flow), state estimation (complementary filter, extended Kalman filter), attitude/position controllers (PID, Mellinger, INDI), and communication via Wi-Fi (UDP, ESP-NOW) and CRTP protocol. It supports modular expansion 'decks' for additional hardware like flow sensors, thermal cameras, and localization systems (Lighthouse V1/V2, UWB TDoA). The firmware runs on FreeRTOS and uses ESP-IDF v5.0 as its development framework.
This repository is a curated list (awesome list) of embedded systems resources, including tutorials, books, tools, and links for various microcontrollers, RTOS, Linux kernel development, and more. It contains no executable code, libraries, or applications. The sole source file is a README.md that aggregates external references. As a static index, it serves as a reference for embedded engineers but offers no software architecture, reusable components, or functional logic.