I took on a summer project under the supervision of Professor Jonathan Ostroff at York University in 2011. The primary goal was to investigate software engineering techniques for safety and security certification in life-critical systems. The targeted application was medical devices.
Our lab at York U acquired several pacemaker circuits designed by a lab in McMaster University. They have the exact same circuitry used in a certain commercial pacemaker, except laid out on a much bigger piece of PCB for easy debugging and educational purpose.
My part of the project was to design and implement a high-level API for access to the embedded system hardware. The hardware comes with little to no documentation (with several critical errors as well), so a fair bit of reverse-engineering was required. I actually enjoyed this bit of the project the most: reverse-engineering and cross-checking the little documentation with observation from oscilloscope and MATLAB simulation.
The key deliverables are
- Software on the pacemaker embedded system, written in PIC C
- User interface on PC, written in Visual C#
- A set of software demos highlighting the specific function of every peripheral circuit
- Extensive documentation
- Weekly presentations
Here's my favorite system diagram of the embedded system of the pacemaker:
Took all my experience in debugging embedded hardware, skills in reading data sheets and writing MATLAB simulation (plus a bit of Office knowledge...) to produce this graph. It's my favorite because of its technical content and because it looks nice. To me anyway.
Project webpage at the Software Engineering Lab (SEL) at York University: