Hardware Requirements
Before requesting or attempting to port IronOS to new hardware, verify that the device meets these requirements.Hard Requirements
These requirements must be met for IronOS support:-
Supported Processor
- ARM Cortex series (Cortex-M0, M3, M4, M7)
- RISC-V processor
- Must have a FreeRTOS port available
- 8051 and similar processors are not supported
-
Flash Memory
- Minimum: 64KB (can work with less if DFU bootloader is present)
- Recommended: 128KB or larger
- Larger flash enables multi-language firmware and additional features
-
RAM
- Minimum: 16KB
- More RAM allows for better buffering and features
-
Heating Element Control
- One or more controllable heating elements
- Temperature sensor for each heating element
- For thermocouples: cold junction compensation sensor required
-
Firmware Update Mechanism
- User must be able to update firmware without opening the device
- USB DFU, custom bootloader, or similar mechanism
-
Known Pinmap
- Complete pinout documentation for the microcontroller
- Understanding of peripheral connections (USB-PD IC, power control, etc.)
- Access to schematics (open source strongly preferred)
Soft Requirements
These are strongly preferred but not strictly required:-
Power Delivery
- USB-PD strongly preferred over Quick Charge
- Quick Charge only devices are considered legacy
- Will have lower priority for support
-
Documentation
- Open source hardware or published schematics strongly preferred
- Increases likelihood of support
- Helps community contribute fixes and improvements
-
Vendor Support
- Responsive vendor support helps dramatically
- Willingness to answer technical questions
- Community-friendly manufacturers are prioritized
-
Hardware PWM
- Hardware PWM for tip control is nice to have
- Not essential (can be done in software)
-
Processor Selection
- Strong preference against STM32 clones
- Genuine STM32, GD32, or other established MCUs preferred
Planned Future Features
These features are planned but not yet implemented:- Color screens
- More than 2 buttons or encoder inputs
- WiFi/Zigbee/networking capabilities
Device Types
IronOS is designed primarily for soldering irons, but has expanded to similar devices:- Soldering Irons - Primary target (TS100, TS80, Pinecil, etc.)
- Hot Plates - Similar thermal control (MHP30)
- Desoldering Guns - Compatible device type
- Reflow ovens (different use case)
- Heat guns (safety considerations)
- Devices without temperature feedback
Porting Process
1. Gather Hardware Information
Collect the following information:- Microcontroller model and specifications
- Complete pinout (which GPIO pins connect to what)
- Power supply design (DC jack, USB-PD, QC)
- Display type and interface (SPI, I2C)
- Temperature sensing method (thermocouple, thermistor)
- Heating element control method (MOSFET, transistor)
- Accelerometer/motion sensor (if present)
- Button configuration
2. Create BSP Directory
Create a new Board Support Package directory:3. Implement BSP Functions
The BSP must implement these key functions:Hardware Initialization
I2C Communication
PWM Control
Temperature Sensing
IRQ Handlers
Connect hardware interrupts to firmware callbacks:- ADC conversion complete
- Timer interrupts for PID loop
- Button press interrupts
- USB/power delivery events
4. Configure Device Parameters
Inconfiguration.h, define device-specific parameters:
5. Add Makefile Support
Updatesource/Makefile to include your device:
6. Test Hardware Functions
Test each BSP function independently:- Power-on - Device boots without errors
- Display - OLED shows boot screen
- Buttons - Input is recognized
- Temperature sensing - Reads reasonable values
- Heating control - Tip heats when commanded
- Motion detection - Accelerometer works (if present)
- Power negotiation - USB-PD/QC works correctly
7. Calibrate Thermal Model
The thermal model needs calibration for accurate temperature control:- Measure tip thermal mass - Heat capacity of the tip assembly
- Measure thermal inertia - How quickly the tip responds
- Test PID parameters - Tune for stable temperature control
- Validate temperature accuracy - Compare to external thermometer
8. Submit for Review
Once the port is working:- Test thoroughly on actual hardware
- Verify all features work correctly
- Document any quirks or limitations
- Submit a pull request with:
- Complete BSP implementation
- Updated Makefile
- Documentation for the new device
- Photos/videos of it working (helpful)
Example: Device Port Request
When requesting support for a new device, provide this information:BSP Examples
Refer to existing BSP implementations:Core/BSP/Miniware/- STM32F103 based devices (TS100, TS80)Core/BSP/Pinecil/- GD32VF103 RISC-V deviceCore/BSP/Pinecilv2/- BL702 RISC-V deviceCore/BSP/MHP30/- Hot plate variantCore/BSP/Sequre/- Recent STM32 port example
- Different MCU architectures
- Various display sizes
- Different power delivery methods
- Temperature sensing methods
Common Porting Challenges
Flash Space Limitations
If flash is tight:- Build single-language firmware only
- Use compressed multi-language builds
- Disable debug features
- Optimize compiler flags for size (
-Os)
Temperature Sensor Noise
For noisy temperature readings:- Increase ADC filtering in
TipThermoModel - Adjust
TIP_THERMAL_INERTIAvalue - Add hardware filtering (capacitor on ADC input)
- Increase ADC sample averaging
PWM Frequency Issues
If tip heating is unstable:- Verify PWM frequency is appropriate (10-100 Hz typical)
- Check if hardware PWM is available
- Ensure MOSFET can handle switching frequency
- Add deadtime if using complementary PWM
Display Issues
For display problems:- Verify I2C/SPI timing
- Check display initialization sequence
- Confirm display dimensions in configuration
- Test with known-good display first
Resources
Next Steps
BSP Documentation
Learn about the BSP layer in detail
Architecture
Understand firmware architecture
Building
Build firmware for your device
PID Control
Understanding temperature control