re: Escritura de controladores de dispositivo
Gracias por el A2A. Mi primer controlador de dispositivo fue para el Data General Nova, para conectarme a un lector de cinta de papel. Pedí la documentación para escribir controladores de DG y descubrí que no era tan difícil de hacer como mucha gente decía. Tomó algunas semanas, pero la mayor parte de eso fue dar vueltas, aprender sobre los controladores y aprender el lenguaje ensamblador de la DG. Durante ese ejercicio reescribí el editor de mi programador en lenguaje ensamblador DG (lo había desarrollado previamente en Pascal) como ejercicio. Con un fondo de electrónica (EE sin terminar), encontré que el lenguaje ensamblador es mucho mejor que cualquier lenguaje de alto nivel. Poco después, aprendí C y moví la mayor parte de mi código a C o lenguaje ensamblador, ya que los prefería a Pascal.
Más conductores
- Como novedad, ¿cómo y dónde puedo encontrar un trabajo decente (posiblemente una buena MNC) como ingeniero de software integrado en la India?
- ¿Qué está haciendo el código de inicio de Keil en 8051?
- En el 8051 microcontrolador, 2 ciclos de máquina significa ¿cuántos pulsos de reloj?
- Entre i3indya y cetpa, ¿cuál es mejor para el entrenamiento de verano en sistemas integrados? ¿Hay algún instituto mejor que los dos?
- He completado una capacitación integrada en la que aprendí a programar controladores 8051, AVR y ARM. ¿Es este conocimiento suficiente para conseguir un trabajo en la industria principal? Si no, ¿qué más debo aprender?
Aunque usted (el OP) no lo ha pedido, continuaré, ya que la historia de mi primer controlador de dispositivo no fue muy interesante.
Un par de años después escribí varios controladores de dispositivos para una variedad de plataformas. Un desafío fue la implementación de MP / M, la versión multiusuario de CP / M, para la cual escribí todos los controladores para una computadora basada en Cromemco Z80. El controlador de disquete PerSci era muy difícil ya que no tenía un controlador inteligente y dependía de la CPU del host para casi todas las funciones, incluido el posicionamiento de la cabeza, que se manejaba interpretando el cambio de fase desde un sensor óptico. (Pude hacer trampa, usando el depurador para hacer ingeniería inversa basada en su controlador CDOS).
También escribí controladores para varias micro computadoras para diferentes tipos de dispositivos. También hice una buena cantidad de trabajo en sistemas integrados, escribiendo un par de ejecutivos (mini-OS) y los controladores de dispositivos asociados.
Más recientemente, hace veinte o veinticinco años, escribí muchos controladores de dispositivos, incluidos controladores para redes propietarias en OS / 2 y DOS. Estos fueron para conectarse a redes POS indocumentadas heredadas utilizando adaptadores NIC especiales que fueron desarrollados para nosotros, principalmente por una compañía canadiense, Sangoma. Tengo una historia particularmente interesante sobre uno de esos conductores …
Historia interesante
Para conectarme a una red de puntos de venta Fujitsu en un minorista en Japón, volé a Tokio y aproveché su red con un osciloscopio. (un alcance de almacenamiento portátil de Tektronix) Regresé y llamé a la especificación a Sangoma, que personalizó una NIC para nosotros. Luego decodifiqué manualmente el contenido del mensaje, ya que había realizado un seguimiento de los datos que se habían enviado a través de la red en ese momento: códigos de artículos, cantidades, precios, descripciones, etc. Escribí el controlador OS / 2 y la aplicación decodificadora de mensajes y voló de regreso a Tokio para verificar que funcionaba en su red y, con un par de pequeños ajustes, lo hizo.
Más tarde ese día, nosotros (mi gerente y yo) nos reunimos con el minorista y los ingenieros de Fujitsu. Insistieron en que su red era propietaria y que no podíamos interactuar con ella, y nos advirtieron que las NIC estaban “no disponibles”, ya que tenían más de un año de retraso. Les dijimos una y otra vez que ya habíamos desarrollado nuestra propia interfaz. pero se rieron y nos dijeron que eso era imposible. No pudimos convencerlos de que estaba funcionando y probado, así que finalmente los convencí de que nos siguieran de vuelta al laboratorio del minorista. Cuando demostramos que estaba operativo, ¡quedaron estupefactos! No puedo describir lo sorprendidos que estaban, risas nerviosas, charlas locas entre ellos y reacciones como si Godzilla acabara de aparecer.
Una última cosa
Me siento obligado a comentar sobre una de las cosas que dije anteriormente. Tuve (con un socio) una empresa de desarrollo de software CAD / CAM para el período de hace 38 a 25 años, y aprendí mucho sobre la gestión de programadores. Una de esas cosas es que es mejor tener un equipo con niveles mixtos de experiencia para que todos se sientan desafiados, tanto los que escriben el código difícil como los que hacen la aplicación diaria. También apliqué que con niveles mixtos de experiencia es peligroso tener demasiado código en lenguaje ensamblador, C o incluso C ++. Así que ya no soy un gran defensor de esos idiomas en una pequeña empresa. (En una empresa más grande es diferente, ya que sus programadores pueden ser especialistas).