BSP Development Training Schedule
The training may be organized in different cities/countries. You can follow the schedule for the most up-to-date dates and available seats.
What Will You Be Able to Do After This Training?
- Embedded software development for real-world applications
- Work with reliable and optimized BSP architectures used in real products.
- Multi-MCU BSP architecture
- Develop software for different microcontrollers using a single architectural approach.
- Debugging and problem analysis
- Systematically identify and resolve hardware and software issues.
- Sensor and hardware integration
- Apply accurate measurement and calibration techniques on real hardware.
- One-to-one practical work on real hardware
- Working on real problems encountered in the field
- Development using industry-standard tools and methodologies
- Clean, maintainable, and sustainable coding practices
- Preparation for advanced embedded software roles
- Coding discipline aligned with industry standards
- A strong portfolio with projects running on multiple MCUs
- Analytical thinking and systematic problem-solving skills
- Engineers working in embedded software or aiming to work in this field
- Developers who want to move away from vendor-dependent BSP structures in their current projects
- Developers working with multiple MCU families and looking for a single architectural approach
- Those who want to improve their skills in debugging, logging, and fault analysis
- Engineers who want to learn real BSP architectures used in the field
- Professionals aiming to advance their career in embedded software engineering
Those at the level of “I want to learn C from scratch”
Those who are not interested in MCU registers, datasheets, and hardware-level details
- Those who want to stay only at the Arduino level
⚠️ This training does not teach shortcuts; it teaches the correct and sustainable way.
Prerequisites:
Intermediate-level C programming knowledge
Participants are expected to be familiar with the following C topics:
- Basic control structures (if/else, switch-case, loops)
- Functions and parameter passing concepts
- Arrays and pointer fundamentals
- Structures (struct), unions, and typedef usage
- Bit-level operations and bitmask logic
- The role of header (.h) and source (.c) files, and the basic compilation process
- Basic familiarity with debugging concepts
Training Flow – 2-Day Intensive Program
Objective:
Enable participants to bring an MCU from reset to a fully operational state by building clock, timing, I/O, and communication infrastructure using a vendor-independent BSP architecture.
Content:
Requirements definition
MCU architecture and memory layout
Project template (platform-independent structure)
Startup file
Linker script
Clock configuration (clock tree, PLL, clock sources)
Bu oturumun çıktısı:
The MCU boots up in a controlled and predictable manner after reset
The BSP skeleton is clearly established
Content:
Clock verification using MCO
Tick infrastructure (without using SysTick)
System time with microsecond resolution
GPIO drivers (Register-level & BSP layer)
Outcome of This Session:
Clock and timing are measured and verified
Delay and timing infrastructure is established
Real hardware is controlled through GPIO
Content:
UART hardware architecture and operating principles
Industry-standard UART driver design (BSP layer)
RX / TX data flow management and buffering
Logging infrastructure for debugging and system tracing
Bu oturumun çıktısı:
The system communicates with the external world
A field-usable logging infrastructure is established
Content:
Fundamental timer principles
Time measurement
PWM generation
Duty cycle control
Hardware validation
Outcome of This Session:
Applications requiring high timing precision can be developed
The foundation for systems such as motors, LEDs, and power electronics is established
⚠️ By the end of Day 1, participants will have built a vendor-independent and extensible BSP infrastructure from scratch.
Objective:
Transform the BSP infrastructure built by the participants into a data-collecting, high-performance, and production-ready system.
Content:
- ADC operating principles
- Sampling, resolution, and reference voltage concepts
- ADC driver architecture and BSP integration
- Temperature measurement using an NTC sensor
- Light level measurement using an LDR
- Analog level control using a potentiometer
Outcome:
- Accurate transfer of analog signals into software
- Establishment of measurement, filtering, and validation infrastructure
Content:
I²C protocol fundamentals (addressing, ACK/NACK)
I²C driver infrastructure
Bus management and error scenarios
Hands-On Examples:
Analog output generation using the MCP4725A DAC
SSD1306 0.96” OLED display driver
Text and basic graphics rendering
Displaying measured data on the screen
Outcome:
Reliable communication with external peripherals
Visualization of measured data via DAC output and display
Content:
SPI protocol fundamentals and timing principles
SPI driver architecture (mode, clock, CS management)
W25Q128 SPI Flash memory architecture
Page / Sector / Block structure
Read / Write / Erase commands
Hands-On Exercises:
Reading and writing data using the W25Q128
Sector erase and data verification
Analysis of flash access timings
Outcome:
Persistent data storage using external SPI flash memory
Foundation for logging, configuration, and data recording infrastructure
Content:
Fundamental DMA principles
Using UART with DMA
Reducing CPU load
Integrating all components into a single project
Outcome:
A production-oriented, high-performance BSP project
Hands-on experience with a real product scenario
Hardware Package Provided to Participants
These hardware components will be used hands-on during the training and given to participants as a gift at the end of the program.

Sensors and peripherals for ADC, I²C, and GPIO applications, enabling real hardware scenarios.

Real-time analysis of digital signals and communication protocols.
Training Methodology
"“From Theory to Practice” Approach
- Conceptual Foundation: Explanation of core principles, theoretical framework, and required mathematical models
- Implementation: Step-by-step development through hands-on coding
- Testing: Testing, measurement, and debugging on real hardware
- Troubleshooting: Real-time analysis and problem-solving based on real-world issues
- Optimization: Performance tuning and industry-oriented applications
"Hands-On Workshop:
- Development board for each participant: The boards used during the training are given to participants at the end of the program
- Real sensors and actuators: One-to-one practice with industry-grade hardware
- Live debugging sessions: Real-time debugging and analysis
- Face-to-face coding: Reinforcing learning through code reviews and collaborative development
Why This Training?
This training is designed around real hardware and production-oriented scenarios, rather than purely theoretical concepts.
A Development Board for Every Participant
The development board used during the training is permanently gifted to participants at the end of the program.
Hands-On Practice with Real Sensors and Actuators
One-to-one, hardware-based applications are carried out using sensors and peripherals actively used in industry.
Live Debugging and Analysis Sessions

Real-time debugging, logging, and signal analysis techniques are covered through live, hands-on applications.
Face-to-Face Coding
Professional software development habits are reinforced through code reviews and collaborative development sessions.
Hands-On Workshops & Applied Mini Projects
Each topic is reinforced with small-scale projects and hands-on workshops, applying concepts to real-world scenarios.
Instructor
Burak Eme Polat
Founder & Lead Instructor | Embedya
I am a graduate of METU Electrical and Electronics Engineering and have been working in the field of embedded systems for approximately 15 years.
In addition to RTOS, Embedded Linux, and BSP architectures, I specialize in system profiling, performance analysis, and advanced debugging techniques.
In my trainings, I transfer professional, field-proven approaches through hands-on practice using real hardware and real-world scenarios.



