Jeśli znasz się na programowaniu to bez problemu poradzisz sobię z mikrokontrolerami AVR (jeśli chodzi o urządzenia zewnętrzne). Jeśli chodzi o drivery to zależy od systemu operacyjnego na jaki chcesz pisać np. na Linuxsie są to tzw. "kernel modules" (moduły jądra). Nie wiem za dużo jak to się ma do windowsa, ale trzeba (raczej) znać dobrze Assembly.