Esta pregunta es demasiado amplia porque no hay una distinción clara entre firmware y software.
Suponiendo que la definición de firmware sea un código de bajo nivel que interactúa directamente con el controlador o sus registros periféricos, estos serán los pasos típicos
- Lea la hoja de datos del hardware previsto. Si no se conoce el hardware previsto, lea las hojas de datos de probables hardware y encuentre el hardware correcto.
- Lea secciones específicas para su necesidad. Ejemplo de SPI? UART? ¿USB? DMA?
- Decida la cadena de herramientas correcta (generalmente obtendrá esto de la hoja de datos)
- Use el IDE que admite la cadena de herramientas y le resultará cómodo.
- Escriba un código de interacción de registro de bajo nivel y vea que las cosas funcionan. Ver que las cosas están funcionando podría ser tan simple como analizar visualmente la respuesta al uso de un visor o radio sniffer.
- Envuelva las interacciones de registro en API de contenedor lógico fácil de usar
- Use las API y escriba el código de pegamento (lógica de la aplicación).
Estos no son un conjunto exhaustivo de pasos, pero describen el proceso general de manera simplista.
- ¿Cuál es el siguiente paso para una persona que está interesada en los sistemas embebidos después de trabajar en placas ATmega, MSP430 o Arduino y construyó pocos proyectos de hardware decentes? ¿Qué hay de trabajar en Linux embebido?
- ¿Cómo podemos programar los microcontroladores PIC usando una placa Arduino?
- ¿Por qué son importantes los sistemas integrados, que son herramientas, dispositivos y equipos pequeños, rápidos y muy potentes que se han convertido en parte de nuestra vida cotidiana?
- Cuál es una mejor opción: el trabajo actual en el que estoy trabajando con un marco .Net que me paga bastante bien o un trabajo de programación integrado donde podría trabajar con C que me pagaría menos que mi trabajo actual.
- ¿Cómo se relaciona el diseño electrónico y la tecnología con los sistemas integrados?