Device Driver Development / Boot Loaders
Device driver development is no easy task and writing one from scratch isn't for the average software engineer. It's a specialized task that requires knowledge of low level system software, a thorough understanding of hardware, and in-depth knowledge of the operating system internals.
Among the different types of device drivers that your team may require expertise: char drivers, PCI drivers, USB drivers, Block drivers, TTY drivers and Network device drivers.
A device driver and boot loader developer may be responsible for:
- Concurrency and Race Conditions
- Time, Delays and Delayed Work
- Interrupt Handling
- Memory Allocation
- Memory Mapping and DMA
- Communicating with Hardware
- Data Types