hardware and firmware development