Prabo Semasinghe
Prabo Semasinghe is an experienced firmware engineer with over 8 years of experience in architecting, designing, implementing, and testing embedded software. She has collaborated with diverse development teams, ranging from startups to established firms, and is currently serving as the Lead Firmware Developer for Grain & Protein Technologies, Winnipeg Team.
Prabo’s career goal is to leverage her expertise to enhance software development and testing processes within the embedded systems domain. She holds a PhD in Electrical and Computer Engineering from the University of Manitoba, a Master’s in Telecommunications from the Asian Institute of Technology, and a Bachelor’s in Electrical and Electronics Engineering from the University of Peradeniya.
Developing a Robust Serial Communication Framework Between Microcontrollers
Status: Coming up in April 2026!Serial communication between microcontrollers is often required in complex embedded systems, yet poorly designed protocols can lead to subtle bugs and unreliable behavior.
In this session, I will share a structured approach to build a robust serial communication framework. We will cover several key design pillars:
- Defining structured and extensible message types
- Implementing rigorous sanity checks and error detection (CRCs, checksums)
- Handling retries and timeout logic for dropped packets
- Managing message prioritization to ensure critical data arrives first
Attendees will gain actionable insights and a practical approach to building scalable, modular serial communication protocols that minimize future pitfalls and simplify system debugging.
Developing and Maintaining Application-Independent Driver and Hardware Abstraction Layers for Embedded C
Status: Available NowCreating reusable, easily maintainable, and scalable firmware with a modular architecture greatly benefits development teams. When similar hardware is replicated in multiple projects, the temptation to copy and paste code across projects is strong! However, is this the most effective approach to code reuse? How do you manage bug fixes and improvements for code that is duplicated in various projects?
This session will explore how to generalize and decouple the driver layer and hardware interfacing layer into independently manageable firmware components. Topics covered will include:
- The benefits of developing separate, manageable Driver and Hardware Abstraction Layers (HAL).
- Strategies for writing and managing generalized code:
- Using submodules for code management and reuse.
- Linking generalized driver and hardware abstraction layers with applications via a specific manager module.
- Handling product-specific functionalities using function pointers.
The session will provide examples to illustrate these concepts and demonstrate their application in practice.
