Cómo aprender la interfaz de software / hardware

Se me ocurren varias formas de trabajar en la interfaz de hardware y software:

1.) Escriba su propio compilador o ensamblador para una arquitectura de conjunto de instrucciones (ISA)

Apuesto a que probablemente sepa qué es el ISA, pero en caso de que no lo sepa, es, simplemente, un acuerdo entre el hardware y el software sobre lo que cada uno espera del otro.

Escribir un compilador o ensamblador requeriría que comprenda un determinado ISA: necesitaría aprender sobre qué recursos de hardware e instrucciones de máquina están disponibles, cómo se manejan las interrupciones y las llamadas a funciones, cómo se almacenan los datos y mucho más (como se describe en el ES UN). Luego, aprovechará la información acumulada para tomar el código escrito y traducirlo a un código de máquina ejecutable equivalente.

2.) Emular una computadora vieja

Esto en realidad es un proyecto en el que estoy trabajando. Este proyecto requeriría que haga un estudio en profundidad de la computadora: qué procesador y periféricos tenía, cómo funcionaba ese procesador y cómo funcionaban esos periféricos. Luego, utilizando esa comprensión, escribiría un programa que podría cargar con éxito las aplicaciones escritas para la máquina original y ejecutarlas de la misma manera que la máquina original.

Sugeriría escribir un emulador para una consola de videojuegos antigua porque hay una gran cantidad de documentación para esas máquinas, y una vez que lo haya construido, tendría una razón para usar el emulador (si es que disfruta de video antiguo juegos).

3.) Hackear un Kernel

Tengo una comprensión muy vaga de lo que es esto, pero creo que es principalmente escribir código que modifica el núcleo de un sistema operativo como Linux. Este núcleo, el núcleo, es lo que gestiona la ejecución de programas y la interacción del software con E / S y memoria. Entonces, al igual que escribir un compilador o ensamblador, la piratería / desarrollo del kernel le permitiría trabajar muy de cerca con el hardware de una computadora de uso general desde el lado del software y de una manera muy práctica.

4.) Construye tu propia computadora

Si tiene los medios, podría construir su propia computadora. Y no me refiero a comprar un procesador, memoria, estuche y demás, y ensamblarlo. No, me refiero a volverse loco y diseñar su propio ISA, construir un procesador basado en él desde cero (usando microchips) e interconectarlo con memoria y E / S (también potencialmente construido desde cero).

no conectas el software al hardware. Usted escribe software para operar el hardware. Sospecho que parte de su problema es su habilidad lingüística. El software está escrito para un hardware en particular, generalmente mediante el uso de un lenguaje de computadora llamado que traduce un programador que quiere hacer en una secuencia de instrucciones de hardware o código que ejecuta el hardware.

Por ejemplo, Windows 10 tiene 10 millones de líneas de código que simplifican lo que el usuario final tiene que hacer. la impresión de su nombre puede consistir en un comando simple como PRINT “myname” que el sistema operativo puede traducir en cientos o incluso miles de instrucciones individuales de la máquina.

Yo probaría Raspberry Pi o Arduino. Son programables con python y otros lenguajes comunes. Las Raspberry Pi son computadoras reales que exponen cables (GPIO) que se controlan fácilmente a través de lenguajes informáticos con los que ya está familiarizado … o que está por aprender en sus clases. Si no, puede aprenderlos en línea … Comience a encender y apagar las luces LED (este es su “Hola Mundo”). A partir de ahí, el mundo es tu ostra.

Compre una Raspberry Pi. Y un kit de inicio electrónico. Use el Pi para hacer que la electrónica salte para hacer su oferta. Construye un robot. O una radio que cambia el tiempo. O un sistema de video vigilancia (o sistema de observación de aves). O una estación meteorológica. O un pollo de Twitter. O cualquiera de las docenas de otras cosas que la gente ha hecho, que explotan la capacidad de Pi para interactuar con el mundo real sin dejar de ser fácil de instalar, conectar y programar.

Tome un curso sobre sistemas embebidos

More Interesting

¿Hay alguna forma para que una compañía de distribución de energía monitoree el uso de energía de su red eléctrica y luego distribuya solo la cantidad de energía necesaria a un sector particular de la red (como cómo un enrutador de Internet controla el tráfico en una red)? Si es así, ¿ya existe un sistema de este tipo?

¿Por qué ahora vemos una tendencia de más núcleos en lugar de más GHz de las CPU?

¿Cuáles son las habilidades que se buscan en los ingenieros informáticos?

¿Qué carrera es mejor a largo plazo, como chef o como ingeniero informático?

¿Qué es mejor, ingeniería informática o TI?

Si tuviera 1,5 horas para presentar algo relacionado con la informática a la audiencia con diferentes antecedentes, ¿de qué hablaría?

Cuando abrimos un nuevo archivo .C esa vez, la instrucción #include #include int main () {getch (); return 0;} debería mostrarse en ese archivo. ¿Cómo hago esto?

¿Qué es bueno, ingeniería informática o ingeniería mecánica? ¿Por qué?

¿Es posible dominar la ingeniería mecánica, la ingeniería informática y la informática?

¿Con qué áreas de la ingeniería clásica deberían unirse las ciencias de la computación para hacer de la ingeniería de software una rama de la ingeniería?

¿Cómo se utilizan dos inversores para almacenar un bit?

¿Por qué alguien tendría una placa base con doble CPU?

¿Qué oferta debo aceptar, ingeniería de software en la Universidad de Waterloo o ingeniería informática con una especialización de software en la Universidad de Toronto? ¿Por qué?

¿Se puede estudiar ingeniería informática después de la ingeniería mecánica?

¿Cuáles son las mejores empresas de desarrollo web en América del Sur?