Real-Time Kernels in medical device development (ESC-214)

Matt Gordon, Micrium

September 18, 2011

Matt Gordon, Micrium

Considerations for Developers of Medical Devices
The various services common to real‐time kernels are available to developers of practically any type of product.  In determining if a kernel would meet their needs, though, developers in the medical field must weigh the benefits that these services could bring against risks that don’t exist in every other industry.  Perhaps the most obvious potential downside to kernel use in a medical product is the need for additional certification work.  Typically, the software used in a medical device is required to undergo a certification process that involves extensive testing.  The cost of this process is commensurate with code size; the addition of more code in the form of a kernel means more money must be spent on certification.   

If kernel use necessarily entailed going through the complete certification process for an entire kernel, then many developers might be better off taking their chances with a foreground/background system. However, a handful of the commercial real‐time kernels that are currently available to developers have a history of use in medical devices.  Accordingly, these kernels have already been through the certification process, and the documents that would be needed in order for them to again be used in a medical product have already been generated.  By selecting one of these kernels, developers can avoid uncertainties relating to certification efforts.    

Beyond certification, an issue that should be examined by developers of medical devices who are deciding whether or not to use a kernel is code complexity.  In particular, developers addressing the question of kernel use should consider how many different features their application will incorporate and how many peripheral devices their code will be responsible for managing.  Modern medical devices can be incredibly complex; a device used primarily for taking patient measurements might also be capable of displaying the results of the measurements on an LCD, storing patient data on a USB flash drive, and communicating with a hospital via TCP/IP.  A kernel, by enabling developers to easily divide these responsibilities amongst different tasks, affords a means of managing the complexity.     

For developers of battery‐powered medical devices, power management is an issue that is just as important, if not more so, than code complexity and management of peripheral devices.  A kernel can be highly useful in projects demanding power efficiency, in part because of the multitask structure of a kernel‐based application.  In a foreground/background system, code enabling a transition to a low‐power mode may need to be inserted at multiple locations where the application waits for data or for an event to occur.  In a kernel‐based application, though, the low‐power code is typically needed in just one task: the idle task that the kernel executes when no application tasks are able to run.  Most kernels provide some sort of hook function that allows developers to easily customize the idle task with their power‐management code.    

Conclusion  
The benefits of kernel use, including assistance in dealing with complexity and managing power, are not always obvious.  However, any developer who has struggled to implement a high‐performance, full‐featured product around a foreground/background system knows that this application structure is not suitable for all projects.  Even in the highly regulated medical field, a real‐time kernel can help developers avoid the problems associated with foreground/background systems.  

Although most kernels provide somewhat similar services, only a few of the kernels currently available to developers are suitable for medical applications.  The kernels belonging to this select group have a history of use in medical devices, and have undergone the rigorous testing required to certify software for such devices.  Developers who chose such a kernel substantially increase their odds of completing their next medical project on schedule and under budget.  

Matt Gordon is a senior applications engineer at Micrium.  He has several years of experience developing kernel ports, device drivers, and example applications for Micrium’s customers.  Drawing on this experience, Matt has written multiple articles on embedded software.  Additionally, he has led Micrium’s training program since its inception.  Matt holds a bachelor’s degree in computer engineering from Georgia Tech. This article is based on some of the material he will provide for his half-day tutorial (ESC- 214) on Tuesday at the Embedded Systems Conference in Boston, Ma.  
 
< Previous
Page 2 of 2
Next >

Loading comments...

Most Commented

  • Currently no items

Parts Search Datasheets.com

KNOWLEDGE CENTER