Device Driver Design
Most embedded systems have more than one device driver. In fact, sometimes there might be dozens. As your experience grows, you will need to understand the way different devices in the system interact with each other. You will also have to consider how the application software will use the device driver so that you can provide an adequate API.
You will need to have a good understanding of the overall software design and be aware of possible issues in the system. Getting input from multiple sources can lead to a better design. Here are some areas to consider when designing a software architecture that includes various device drivers:
- Interrupt priorities
If interrupts are used for the device drivers in a system, you need to determine and set appropriate priority levels.
- Complete requirements
You need to be aware of the requirements of the various peripherals in the system. You don’t want to design and implement your software in a manner that unknowingly handicaps the peripheral from operating as it is intended. This can cause such major problems that the product might not be usable until the system functions as specified. It’s a good idea to use software design reviews to flush out any potential problems that might have been overlooked by an individual developer.
- Resource usage
It is important to understand what resources are necessary for each device driver. For example, imagine designing an Ethernet device driver in a system with a very limited amount of memory. ...