¿Qué debería hacer el hardware y qué debería hacer el software?

-1

Estoy estudiando un sistema integrado que normalmente incluye MCU y así sucesivamente. Utilizo el método de pensamiento de usar 8051 que el uso de la unidad periférica debe hacerse en el software. Pero aprendí que algunas MCU como S3C2440 tienen una interfaz especial que puede asignar SDRAM a la dirección RAM interna, lo cual se realiza mediante el uso de cualquier software.

Entonces, ¿qué debería hacer el hardware y qué debería hacer el software? ¿Cómo lo sabemos?

    
pregunta LaiJiong

4 respuestas

8

En pocas palabras, utiliza las herramientas y los talentos disponibles para realizar el trabajo, en el tiempo requerido y dentro del presupuesto. Al final, eso es todo lo que importa.

Si bien algunas tareas se prestan naturalmente a un hardware o una solución de software, hay muchas tareas que no importan. Por ejemplo, podría usar un temporizador 555 para hacer parpadear un LED, o podría usar una MCU de US $ 0,30. Hay ventajas y desventajas para cualquiera de los dos, pero al final no importa, siempre y cuando termines el trabajo. He visto LED parpadeantes con cualquiera de los dos enfoques en productos comerciales.

No puedo darle una lista de cosas que se deben hacer en el software, o una lista para el hardware. Esa lista sería larga, aburrida y en su mayoría sin sentido. La tecnología progresa. Hace 20 años nunca hubiera pensado en usar una MCU solo para parpadear un LED. Las tareas que son apropiadas para hardware / software siempre están cambiando. Si te diera una lista ahora, mañana estaría desactualizada.

Para empeorar las cosas, la línea entre el hardware y el software es borrosa. Los FPGA vienen a la mente, los cuales están programados de manera similar a los programas de escritura, pero el resultado final es el hardware. E incluso los FPGA con frecuencia tienen una lógica dentro de ellos que se parece a algún tipo de CPU. Pero incluso las GPU y algunas CPU tienen características similares a FPGA que pueden o no permanecer ocultas para el programador de software.

El conocimiento y la experiencia deberán guiarlo para saber qué es apropiado para el hardware y el software. Su primer paso es conocer el problema que está tratando de resolver y cómo resolverlo. El segundo paso es conocer diferentes maneras de resolverlo: CPU, FPGA, circuitos analógicos, etc. En muchos casos, necesitarás conocer varias CPU diferentes o varias FPGA diferentes para descubrir cuál es el mejor enfoque.

No hay sustituto para conocer tu oficio.

    
respondido por el user3624
2

Depende de tu solución. Siempre hay concesiones inherentes entre el espacio (Hardware), el rendimiento (Software), el costo ($), etc. A medida que los procesadores integrados se han vuelto más complejos y más rápidos, han absorbido parte de la carga que normalmente se asigna a HW. Además, algunas soluciones se prestan mejor a HW o SW.

Hace años, encender o apagar un dispositivo era un simple botón de hardware. Ahora, debido a que los microcontroladores se han convertido en una potencia tan baja cuando están en modo de suspensión (a menudo menos que la descarga automática de la batería que alimenta el dispositivo), se ha convertido en estándar simplemente enrutar el botón de encendido al microcontrolador y dejar que el micro maneje la administración de energía. . Esto le permite hacer cosas como deshacer rebotes, iluminación LED, aceptar pulsaciones de botones de diferentes longitudes, todo en SW. Muchas de estas capacidades anteriormente eran imposibles de usar solo una solución HW antes. Así que al cambiar el dominio, ha aumentado la capacidad del producto. Ese parece ser un principio guía bastante bueno sobre cuándo elegir una solución (HW o SW) sobre la otra.

Algunos factores a considerar:

  • ¿Cuánto poder necesito?
  • ¿Qué tan rápido debe responder mi producto?
  • ¿Qué tan pequeño debe ser?
  • ¿Qué funcionalidad debe admitirse cuando el dispositivo está "apagado"?

Cuando vea estas restricciones y otras como un todo, le ayudará a establecer el equilibrio correcto entre SW y HW. La ingeniería es una práctica, y como tal, no hay una fórmula única para resolver todos los problemas. Cuando lo haya, una computadora lo hará y todos nos quedaremos sin trabajo o afición.

    
respondido por el Joel B
1

El hardware es (casi por definición) necesario para las tareas que deben realizarse más rápido de lo que la CPU puede hacerlas. Es muy útil para tareas que requieren respuestas oportunas a eventos externos que pueden ocurrir en momentos impredecibles. También es útil hacer cosas que requieren la realización de varias acciones con un tiempo considerable, especialmente si esas acciones deben cronometrarse con precisión.

Como regla general, es más fácil para las CPU hacer que las cosas sucedan en su propio marco de tiempo que responder a las cosas que suceden, o hacer que las cosas sucedan en un período de tiempo que debe cumplir con los requisitos impuestos externamente. El hardware ayuda con las últimas tareas.

    
respondido por el supercat
0

Según mi opinión, el uso de periféricos es casi siempre beneficioso en el caso de los microcontroladores. Se guarda:

  1. Tiempo de desarrollo
  2. Poder (la MCU puede ponerse en modo de suspensión mientras los periféricos realizan sus tareas)
  3. Costos (en desarrollo de software)
  4. Hace que la CPU esté libre para otras tareas.
  5. Rendimiento (el rendimiento del hardware suele ser mayor)

Solo en los casos en que el hardware NO está disponible dentro de la MCU y, si está disponible, NO es lo suficientemente bueno para mi propósito (por ejemplo, un ADC de 10 bits, mientras que necesito uno con 16 bits), intento implementar el mismo a través del software.

    
respondido por el Rahul Ranjan

Lea otras preguntas en las etiquetas