2010-03-22 17 views
12

He completado mi licenciatura en Ingeniería Informática. Tuvimos algunos cursos básicos de electrónica en Procesamiento Digital de Señales, Teoría de la Información, etc. pero mi campo principal es la Programación.¿Cuáles son los requisitos previos para aprender la programación de sistemas integrados?

Sin embargo, estaba buscando entrar en la Programación de Sistemas Embebidos, y NO tengo conocimiento de cómo se hace. Sin embargo, estoy muy interesado en entrar en este campo.

Mis preguntas:

  • ¿Cuáles son los idiomas utilizados para sistemas embebidos programa?
  • ¿Podré aprender sin tener nada básico en electrónica?
  • ¿Algún otro requisito que yo deba saber?
+3

¿Cómo obtuviste un grado CE sin tomar un montón de clases de bajo nivel de arquitectura de computadora y electrónica? En mi escuela, el programa CE fue el mismo que el programa EE los primeros 2 años, casi toda la teoría de circuitos. Entonces el programa CE requirió múltiples clases en la arquitectura del sistema y en los sistemas embebidos donde, como el programa EE, en los campos, señales, sistemas de retroalimentación, etc. ¿Te refieres a Ingeniería de Software? – Mark

+0

Pre-requisitos? Ninguna. No hay nada que no pueda aprender por primera vez en un contexto incrustado, si puede recoger el conocimiento necesario a medida que avanza. –

Respuesta

2

Entré en ese campo sin saber cómo se hacía cuando recién empecé a graduarme y renuncié después de 1,5 años. Entonces, lo que digo puede ser un poco oxidado, y definitivamente no exhaustivo.

El lenguaje que usamos es C. Pero en ese momento, el espacio en disco era de 4MB y la memoria era de 8MB en los dispositivos que estábamos desarrollando, y sé que se utilizó C debido a la pequeña huella de sus bibliotecas. Aparentemente, el rendimiento también fue un criterio.

En cuanto a la electrónica básica, para una posición de nivel de entrada casi ninguna es necesaria. Obtendrás la información y la experiencia requeridas con el tiempo.

No son requisitos previos, pero tener experiencia en el funcionamiento del sistema operativo interno y el desarrollo del sistema es definitivamente una ventaja.

+0

También se metió en él sin conocimiento. No hay problema. – James

8

Sin duda, se requiere experiencia o al menos una comprensión significativa de la electrónica digital y la ingeniería informática de bajo nivel. Deberá poder leer las hojas de datos del dispositivo y comprenderlas. Ámbitos, multímetros, analizadores lógicos, etc. son herramientas del oficio.

C se usa principalmente, pero los lenguajes de nivel superior se cuelan lentamente.

+1

¡Y no se puede asustar de un poco de ensamblaje aquí y allá! – Earlz

+0

@Earlz, es cierto si no puede evitarlo. Un buen compilador de C es bastante bueno para optimizar la mayoría de las cosas. – kenny

+2

A veces, como en el x86, tiene que hacer cosas dependientes de la plataforma que no son posibles directamente desde C, como leer y escribir en los puertos. – Earlz

1

Idiomas: C, Ensamblador, Procesamiento, Básico y muchos otros, depende de la plataforma que utilice y de lo que esté disponible.

Puede obtener información más específica si hace la misma pregunta en ChipHacker o Electronics Exchange que son sitios de estilo de intercambio de pila (como este) pero orientados a la electrónica y la "informática física".

4

usted tiene que aceptar limitaciones y ser capaz de trabajar con ellos:

  • velocidad de la CPU
  • escasa memoria
  • falta de instalaciones de redes
  • compiladores y sistemas operativos personalizados
  • placas personalizadas y controladores
  • depuración con un analizador lógico
  • prácticas de codificación y pruebas raras
  • ...

La recompensa es una comprensión profunda de lo que está sucediendo.

1

Querrá sentirse bastante cómodo con C y desarrollar una sólida comprensión del ensamblaje. En los sistemas/integrados, generalmente está trabajando con pequeñas cantidades de memoria y procesadores más lentos, por lo que debe comprender cómo utilizar los recursos limitados de forma inteligente.

Si te estás metiendo en esto como un hobby, escoge un tablero gumstix o un arduino, estos paneles de desarrollo te darán cientos de horas de aprendizaje y diversión.

Si está tratando de hacer una carrera de esto, encuentre un trabajo donde los proyectos suenen interesantes y ensucie sus manos. Tome cada tarea que se le presente y pregúntese cómo puede mejorar y aprender de esta tarea.

De cualquier manera, diviértete y feliz codificación!

4

VHDL, Verilog y FPGA también son jugadores serios en esta área. Con una buena formación en CS, mucho compromiso, y tal vez algo de MIT OpenCourseware, podrás realizar algo bueno. Un buen conocimiento de arquitecturas de CPU y algo de ASM también será muy útil.

2

Los sistemas integrados generalmente se programan en C, aunque hay sistemas en los extremos del rango que usan el ensamblador cuando el espacio del código o el tiempo es muy ajustado (o no hay un compilador C decente disponible) y en el otro extremo C++ hasta .NET compacto. Depende de lo que quiere decir con sistemas integrados, van desde microcontroladores realmente pequeños con algunos cientos de bytes de RAM y espacio de programa, hasta el tipo de dispositivo de teléfono inteligente que ejecuta un sistema operativo multitarea completo y una interfaz de usuario.

Llegará más lejos en el extremo superior de este rango sin experiencia en electrónica, porque está menos vinculado al hardware y más similar al desarrollo de escritorio. A medida que avanza en la gama de aplicaciones, el conocimiento de la electrónica, analógica y digital, y las fuentes de alimentación, problemas de ruido, problemas de cumplimiento, problemas de calor y otros se combinan para crear un entorno de diseño realmente desafiante.

de inicio mediante la lectura de algunos de los enlaces here y embedded.com

+0

+1 para señalar que los sistemas integrados de hoy no son solo material de 8 bits μC – ziggystar

0

Aprender C. Aprender a aplicar C a todos los problemas. Otros idiomas pueden esperar. Eventualmente, el ensamblaje ayudará y ningún programador debería estar sin el uso de un lenguaje de scripting.

Dependiendo de los objetivos incrustados que utilice, podría haber muy poca diferencia entre una PC y su objetivo. Con pocos antecedentes en electrónica, esta sería su entrada más fácil.

Los procesadores pequeños le darán la curva de aprendizaje más empinada, pero aprenderá más acerca de la programación integrada. Sin embargo, sin antecedentes electrónicos, esto puede presentar problemas adicionales que quizás aún no tenga las habilidades para resolver.

Eventualmente tendrá que aprender electrónica si quiere avanzar más allá de lo básico.

2

Lo que hasta ahora no he mencionado en las respuestas es que hasta ahora probablemente haya realizado la mayoría de la codificación en el contexto de un sistema operativo. En muchos (¿quizás la mayoría?) Casos, con firmware en lugar de software, no tendrá la conveniencia y los beneficios de la codificación en la parte superior de un sistema operativo. Esta es la razón por la cual muchas de las otras respuestas indicaron que un buen conocimiento de la electrónica era crítico.

1

Como han mencionado otros, incrustado puede significar muchas cosas. En mi mundo (Aeroespacial y Defensa), trabajamos con sistemas operativos en tiempo real (VxWorks e Integrity son los principales jugadores) y ocasionalmente Linux. Programamos en C principalmente, aunque también se usa C++ si el proyecto ha decidido utilizar la Programación y Modelado Orientado a Objetos.

Por lo tanto, en cuanto a las Pre-Reqs, C seguro. Realmente necesitas aprender todo acerca de C, incluidas las operaciones inteligentes BIT, que tratan con valores hexadecimales, punteros, todas las cosas de bajo nivel. Montaje también, pero solo lo uso para depurar las cosas más difíciles hoy en día. Necesita saber lo suficiente para leer y entender.

Creo que An Embedded Software Primer es un gran comienzo para cambiar su forma de pensar hacia la integración. Manejo de interrupciones, problemas en tiempo real, etc.

Como mencionó Mickey, a veces ni siquiera tiene un sistema operativo. En estos casos, generalmente escribe su propio administrador de tareas de algún tipo, pero eso generalmente no sería algo para el principiante. Buena suerte.

6

Comenzar en Embedded Systems es una tarea compleja en sí misma, ya que es un campo muy amplio con numerosas opciones de hardware y software.

¿Cuáles son los idiomas utilizados para programar los programas del sistema integrado?

Lenguaje de ensamblaje, C, C++, Python, C# y otros.

¿Seré capaz de aprender sin tener nada básico en electrónica?

Aprender sistemas integrados sin los conocimientos básicos de electrónica no sería una buena idea. Los sistemas integrados son una combinación de hardware y software. Puede seguir el enfoque de aprender haciendo en lugar de revisar los extensos y detallados libros de texto. Puede consultar this blog para aprender sistemas integrados haciendo prácticas, paso a paso. Le ayudará a comenzar desde el principio.

¿Alguna otra condición previa que yo deba saber?

Electrónica básica, electrónica digital, conocimiento de microcontroladores y programación en C. Como usted es de origen en informática, necesitaría una placa de desarrollo de cualquier microcontrolador de 8 bits (los estudiantes de EE y ECE tienen suficiente conocimiento y antecedentes para compilarlo en el tablero o PCB) para comenzar. (¡No prefiera los simuladores al principio, puede equivocarse con sus conceptos!).

Cuestiones relacionadas