Embedded systems require even more flexibility. Several system permits on-the-market softwares updates. However these updates must be reliable, otherwise, the results can be catastrophic. Device drivers may have any updates and they are very vulnerable to this problem, requiring mechanisms that are able to capture errors arising from updates at runtime.
This work proposes an approach for runtime errors checking in the driver when accessing the device, allowing to detect bugs throughout the lifetime of the embedded system. The proposed mechanism for capturing errors is composed of two modules: Monitor of Device/Driver Communication (MDDC) and the set of FSM. Both modules can be synthesized from a device description at a high-level of abstraction. When connected to a hardware platform in a FPGA they are able to check if the driver operations will lead to a correct state of operation. Thus, the designer can be sure that the updated device driver is reliable.
To validate the technique, drivers for an Ethernet controller and a serial port was developed. Results show the effectiveness in finding device driver errors during runtime, as well as, a low MDDC's overhead about 1.5\% in terms of performance and footprint area of the system FPGA prototype.