5 votos

Programadores integrados: La profundidad abajo el agujero del conejo EE?

Así que yo sé que la mayoría de los desarrolladores de Embebido son probablemente EE/CE con algunos CS espolvoreado. Yo lo he hecho....suficiente con Arduino a donde quiero llegar más cerca del hardware. Me gradué con una C. S. grado, pero que tienen el deseo de aprender mucho más acerca de la interacción con la memoria/registros/etc...(no estoy seguro de si alguna vez voy a conseguirme un trabajo....pero es más para el conocimiento personal)

Sin embargo, im curioso cómo ahora la mayoría de los "incrustado programadores" ir. Me refiero a la electrónica en sí es un campo profundo. Quiero saber lo suficiente acerca de la interacción con la memoria/registros/etc.. (incluso en ASM). Pero.....habría una necesidad de ir más allá?

En segundo lugar, esto es incluso posible hacer esto con un C. S. grado? Sé que la mayoría incrustado trabajos que requieren de un EE grado, pero, ¿alguno de C. S.?

Si es así ¿cuál es la mejor manera de pasar de algo como arduino? No estoy realmente buscando cosas para hacer con decir.....beagleboards o nada relacionados con Unix. Im realmente hablando de MUY bajo nivel (BRAZO/dispositivos AVR y tal). Suficiente para donde puedo interactuar con la memoria/registro de componentes. (Me siento como eso es el nivel más cercano, sin tener que saber cómo construir el propio chip jaja)

6voto

Matt McMinn Puntos 6067

Inicialmente se obtuvo una licenciatura en ingeniería eléctrica grado, y comenzó a diseñar los circuitos de lógica fuera de la escuela. Después de un par de años, me di cuenta de que la mayoría de lo que estaba haciendo se puede hacer uso de los microprocesadores (esto fue en la década de 1970, cuando los primeros acaba de llegar en el mercado). Así que me fui de nuevo y consiguió un grado MSC. Desde entonces he aprovechado la combinación de los dos en una exitosa carrera de hardware embebido de diseño y programación.

Sin un entrenamiento formal, es bastante duro para recoger suficiente conocimiento de electrónica para el diseño de circuitos complejos desde el principio; desde mi experiencia siempre parece más fácil enseñar a un EE del programa de enseñar a un CS importantes para el diseño de hardware.

Dicho esto, probablemente, usted puede aprender lo suficiente en su cuenta para entender los esquemas de desarrollo de tableros, etc., al menos el digital porciones. Los circuitos analógicos (op-amps, amplificadores, fuentes de alimentación, etc.) es más un arte negro, especialmente de alta frecuencia de RF (radio frecuencia) de los circuitos. Hay un montón de matemáticas involucradas; por ejemplo, echa un vistazo a estas ecuaciones para los diversos tipos de filtros. Esto está muy lejos de la lógica digital, donde se trabaja con el álgebra Booleana y cosas como mapas de Karnaugh. Ya no vas a ser el diseño de circuitos, usted sólo necesita una comprensión básica de puertas lógicas (and, or, NAND, NOR, XOR y not). Puede que también desee aprender acerca de los flip-flops (que se utiliza para hacer los registros), los multiplexores y de los multiplexores. Estos bloques de construcción, junto con la memoria, la conforman las entrañas de un microcontrolador.

Un libro que recomiendo para empezar es "Prácticas de Electrónica para los Inventores"; olvida los Inventores ángulo, simplemente claramente un buen libro básico sobre el tema. (Otro libro menciona a menudo es "El Arte de la Electrónica", pero cuesta cuatro veces más ($90 vs $22), y es un poco más teórico.

Otro libro usted puede mirar en es "Código: El Lenguaje Oculto de Hardware y Software", por Charles Petzold, que era una leyenda en Microsoft. Es bastante básico, pero hace un buen trabajo de mostrar cómo el software y el hardware trabajen juntos.

En términos de herramientas, usted va a querer obtener al menos una decente multímetro, que puede medir el voltaje, la corriente, la resistencia, y tal vez de la capacitancia. Una de las satisfacciones primeros pasos en la programación embebida es ser capaz de parpadear un LED usando uno de los pines de un microcontrolador. Este es esencialmente el "Hola Mundo" de los incrustado mundo. Usted encontrará docenas, si no cientos de posts en este foro vuelva a esta actividad.

Finalmente, si usted quiere tomar en serio a hurgar en los circuitos, usted querrá obtener un osciloscopio digital, tal vez 60 o 100 MHz.

Como alguien dijo, una de las habilidades que usted querrá dominar es la lectura de las hojas de datos para las diversas partes en un PCB (placa de circuito impreso); no sólo el microcontrolador sino también de diversos periféricos, como los sensores, pantallas Lcd, módems (utilizado para celular, Bluetooth y otras comunicaciones), etc.

Como usted ya ha trabajado con un Arduino, te sugiero que te paso por encima de los 8-bits del procesador mundo a una de 32-bits. Usted querrá elegir un determinado microprocesador de la familia y, a continuación, obtener una tarjeta de desarrollo para ir con ella. Yo voy a sugerir un ARM Cortex-M7 procesador: el STM32F746NGH6. Es un procesador RISC, como AVR32 y MIPS, corriendo a 216 MHz. El que tiene el procesador de 1 MB de Flash, 340K de RAM, y todos los habituales interfaces en serie (I2C, SPI, UART, USB), además de hasta 18 temporizadores. Usted puede o no se han encontrado algunos de estos periféricos en el Arduino. Usted encontrará que todo el hardware de interconexión que se hace por escrito dedicados registra en el chip proporciona para cada periférico. La explicación de todo esto es lo que hace que las hojas de datos tanto tiempo (220 páginas para este chip en particular). Usted, evidentemente, puede ignorar algunas de las más complicadas como DMA y DSP hasta más tarde.

Hay una muy buena placa de evaluación disponibles para $50. It has a 4.3" touch screen LCD, 8 MB of additional RAM and lots of other goodies. In any case, you want to stay away from single board computers (SBCs) like the Raspberry Pi and Beaglebone Black; they are very capable and also inexpensive (you can get a Raspberry Pi for a little as $20). Sin embargo, en general, ejecutar Linux, y es mucho más difícil de conseguir "el metal" en esas, porque usted tiene que tratar con los controladores de dispositivo de ajuste en el Linux del modelo.

Yo sugiero que pruebe a escribir programas en lenguaje ensamblador, además de C, ya que sin duda le dará una mejor idea de lo que está pasando bajo el capó. Además es divertido. El libro "ARM7 a programar en Lenguaje ensamblador:+ de 100 ejemplos" sólo está disponible como un libro electrónico (Kindle), pero se puede descargar un lector Kindle para su PC, si usted no es dueño de un Kindle.

Si solo un programa en C (o en algún otro lenguaje de alto nivel como C++, pero la gran mayoría de firmware para microcontroladores en C), usted no verá ninguna referencias a los registros del procesador. Usted necesita cualquier programa en la asamblea, o tengan un desensamblador disponibles donde se puede ver el código de la máquina el compilador genera para usted.

Además, el libro "Diseño Digital y Arquitectura de computadores: BRAZO Edición" se ve muy interesante, ya que abarca tanto el diseño de hardware y arquitectura de ARM. Así que usted puede ser capaz de utilizar como su inicial hardware introducción. (Puede hacer clic en "Mira dentro" de un de estos libros para ver la Tabla de Contenido y páginas de muestra.)

1voto

stigok Puntos 4223

Estoy en una similar barco, y acabo de empezar a recoger los avr de programación. Estoy seguro de que usted sabe c en este punto, así que todo lo que necesitas hacer es empezar a leer las hojas de datos. Si quieres seguir con atmel, yo sugeriría conseguir un avr dragon, por el precio y obtener las funciones de depuración integrada. Las hojas de datos de todos los registros de lo que controla qué, y si se ha hecho nada con los arduinos, debería ser algo familiar. Me cogió un libro "programación y la interfaz microcontroladores atmel avr" por Thomas gracia. Realmente cosas útiles, y comienza con la asamblea (suponiendo que no conocen a ninguno, es útil con que) y, a continuación, ha c junto con el código de ensamblaje en los ejemplos posteriores. Hay una gran cantidad de ejemplos en el libro, que se presenta como un gran recurso. En términos de puestos de trabajo, no te puedo ayudar, sólo se establece en el camino que he iniciado la pavimentación de mí mismo para aprender a hacer estas cosas. No es tan malo cuando te pones a ello. Deseo mucha suerte en tus aventuras

1voto

Peter Smith Puntos 2292

Empecé en el hardware antes de que el concepto de programación embebida era común (1970), así que empecé a hacer el código en un ZX81 con el 64 kb Rampack (después de todo, ¿quién podría utilizar todo el de 64 kb de memoria?).

He adquirido un Altair 8800 kit y algunas tarjetas de expansión y empezó a jugar en la alternancia de los bits, la implementación de las cosas como una UART y el estándar (en el tiempo) de casete de audio de la interfaz para el programa de almacenamiento.

Hojas de datos en el momento en que eran más difíciles de adquirir (estar muy agradecidos por la internet!) así que mucho de lo que yo hice fue verdaderamente ensayo y error, pero me las arreglé para evitar que sopla nada.

Ciertamente, incluso si usted tiene un interfaz RS232 en el kit (que le permite especificar el protocolo, que no es realmente parte de RS232 pero está universalmente presente), el aprendizaje de cómo implementar uno por poco golpea sin duda tendrá que familiarizarse con los detalles del hardware.

Como TCrosley mencionado, las hojas de datos de los periféricos conectados al controlador son tan importantes como los que usted necesita para hacer esas cosas trabajan juntas, una tarea de un orden de magnitud más complejo.

A través de los años he escrito en diferentes niveles, incluyendo mis propios controladores de dispositivo para IRIX, Solaris e incluso Windows.

El punto es que una comprensión profunda del hardware nos permite hacer más con el hardware, mediante la comprensión de las limitaciones de la misma.

Actualmente estoy usando un Silicon Labs Pregunto Gecko kit ($29.99) en un proyecto de investigación para la ultra de baja potencia de las aplicaciones. Hay un libre de Eclipse IDE basado, compilador, librerías y muchos ejemplos de software.

Esta es una parte interesante ya que dispone de numerosas autónoma periféricos dentro del paquete en el morir, así que esta es una poderosa plataforma para aprender acerca de las interrupciones, DMA controladores y mucho más.

Yo también trabajo bastante extenso con PowerQUICC III y QorIQ procesadores; el cálculo de la configuración de los registros de una DDR2 / DR3 interfaz realmente dar una idea de algunas de las más profundas incrustado tareas es posible; Si no hay una hoja de datos más complicado que el de un procesador, es DDRx (y las muchas notas de aplicación de Micras que son una fuente increíble de buena información).

Me parece que hace el hardware y el código incrustado a ser divertido, porque siempre hay más para aprender nuevos procesadores y periféricos disponibles.

Estoy de acuerdo con el principio básico de que un hardware de enfoque es un mejor punto de partida, pero el aprendizaje sobre el hardware le dará nuevas pistas en el modo de estructurar el código para obtener el máximo provecho de ella. La mayoría de los controlador de dispositivo de la gente que conozco que comenzó como EE o de la física de las especializaciones.

Divertirse!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X