Si tengo un buen conocimiento de la programación de Java y conozco información sobre el microcontrolador, ¿puedo comenzar a aprender Linux integrado? Si no, ¿cómo puedo comenzar en este campo?
Si tengo un buen conocimiento de la programación de Java y conozco información sobre el microcontrolador, ¿puedo comenzar a aprender Linux integrado? Si no, ¿cómo puedo comenzar en este campo?
Hay algunos pasos antes de subirse a Linux incrustado. Como dijo @KKToronto, sería bueno si primero tuviera una experiencia con Linux de escritorio. Si no tienes ninguna experiencia, te recomiendo instalar Ubuntu en tu computadora de escritorio / portátil para sentir algo con el sistema operativo.
Pasar del escritorio al mundo integrado, al menos en forma de Linux, es relativamente fácil, si está planeando desarrollar FOR Linux incorporado. Casi todas las interfaces de los controladores, las llamadas al kernel, son iguales. Un programa que se ejecuta en un escritorio de Linux, puede ejecutarse en un sistema integrado de Linux con pequeñas modificaciones. La plataforma beagleboard es un buen ejemplo, como lo señaló @JobyTaffey. Algunas aplicaciones que desarrollé pueden ejecutarse tanto en el escritorio como en el beagleboard sin alteraciones de código, solo necesito usar el compilador correcto.
Aún en el tema "desarrollar para Linux incorporado": una de las principales alteraciones es el compilador, principalmente porque casi todos los procesadores integrados que son lo suficientemente potentes para ejecutar Linux son ARM. Desde el programador C / C ++ / Java es casi como migrar de x86 a ia64.
Si desea obtener una experiencia "integrada" más profunda como compilación de controladores de dispositivos para hardware nuevo, acceso a puertos de E / S en la placa, control de equipos externos mediante Linux, iría con Primer incrustado de Linux . Es un gran libro para aprender sobre cosas de bajo nivel, cómo se hacen los controladores del dispositivo, cómo obtener acceso a ubicaciones de memoria fijas que representan algún periférico, etc. (Y tiene un increíble sable de luz en la portada =))
Por el lado del hardware, un conocimiento profundo del microcontrolador es realmente importante, ya que se tratará directamente con la memoria para la configuración / acceso de periféricos. Algunas operaciones pueden incluso requerir conocimientos de montaje, principalmente interrupciones o escritura flash. Depende mucho de la arquitectura del microcontrolador.
Si no tiene experiencia en esto, le recomiendo comenzar con arduino, como se señaló @stevegt, para obtener una sensación de hardware / electrónica y luego pasar a una programación de baremetría sobre cualquier otro procesador, para aprender algunos trucos relacionados con Interfaz de hardware / software, que de alguna manera está oculta en el firmware de arduino o en el kernel de Linux.
Como puede ver, hay mucho conocimiento oculto en la expresión "Linux incrustado". Tenga en cuenta que no necesita tener todo para construir un sistema integrado. Debe centrarse en qué lado quiere aprender primero y obtener un sistema prefabricado para el otro: arduino para primer contacto de hardware, beagleboard para aprender a programar para Linux incorporado, un procesador de baremetal para interfaz de hardware / software.
Específicamente para su caso, recomendaría la tabla beagle. Como tiene un poco de fondo de programación y microcontroladores, puede desarrollar algunas aplicaciones de alto nivel para adquirir experiencia en la programación de Linux y, cuando se sienta lo suficientemente cómodo, puede iniciar el hardware con las E / S disponibles en la placa.
¡Consigue una placa de desarrollo de Linux y comienza a piratear!
Elija uno con una comunidad fuerte que pueda apoyarlo. Una BeagleBoard sería una buena opción. Raspberry Pi puede ser tentador, pero aún no tienen una comunidad de desarrolladores bien establecida.
Es posible que no desee intentar ejecutar Linux en un microcontrolador; es un ajuste perfecto. Si quieres un microcontrolador, diría que usar un Arduino. Si quieres Linux, deberás buscar algo más caro, al menos algo como un gumstix.
La mejor combinación a menudo es un Arduino que habla con un host de Linux a través de un cable USB.
Definitivamente puedes empezar a aprender. Consigue un BeagleBone, tienen una buena comunidad y la junta tiene muchas E / S. He desarrollado un diseño personalizado basado en BeagleBone y funciona bien. TI tech. apoyarlo relativamente bien también.