Hardware Firmware Interface Design: Best Practices for Improving Embedded Systems Development