La Red de Conocimientos Pedagógicos - Aprendizaje de inglés - Cómo aprender Linux integrado

Cómo aprender Linux integrado

Como recién llegado, ¿cómo aprender Linux integrado? Me han preguntado esto demasiadas veces. Cierra este post para responderlo.

Antes de aprender Linux integrado, debes tener una base en el lenguaje C. No importa si tienes los conceptos básicos de montaje (solo unas pocas instrucciones de montaje, puedes utilizarlas de un vistazo).

¿Hasta qué punto deberías aprender el lenguaje C? Por supuesto, cuanto más familiar sea, mejor. Si no estás familiarizado con él, debes tener habilidades básicas. Por ejemplo, escriba una matriz para ordenar, sume los números de entrada, etc.

La única forma de aprender el lenguaje C es escribir más programas y practicar más. No importa si hay un error de compilación, puedes solucionarlo tú mismo. No importa si la ejecución es incorrecta, puedes analizarla tú mismo. Solía ​​​​usar VC Para practicar el lenguaje C, a menudo intentaba escribir algunas preguntas de competencia en lenguaje C. Todas son preguntas de C puro, matemáticas puras y lógica pura, y no involucran cosas como interfaces.

Muy adecuado para entrenar tus habilidades de programación.

Volviendo al tema, primero debemos entender cuál es su propósito. En términos generales, el llamado Linux integrado se puede dividir en dos partes: sistema subyacente y desarrollo de aplicaciones.

Si desea desarrollar aplicaciones, debe aprender el lenguaje C, la estructura de datos y JAVA. No hay nada especial a lo que prestar atención en el desarrollo de aplicaciones integradas y el desarrollo de aplicaciones para PC. Tal vez dijiste que necesitas hacer alguna optimización en el sistema integrado, sí, necesitas optimizar el programa, pero no hay optimización.

No es diferente al desarrollo de programas en PC. Además, cuando tienes la capacidad de optimizar, no tienes que hacer esta pregunta. Para un ejemplo específico,

Por ejemplo, para la interfaz de desarrollo, usamos VC en PC; tal vez usemos QT o Android en Linux integrado. En este momento tienes que aprender QT.

Programación Android. Pero la base sigue siendo C o JAVA, y sobre esta base es necesario estar familiarizado con sus interfaces. Si ha estudiado VC, se necesita tiempo para comprenderlo.

Estas clases y controles.

Si tu objetivo es aprender el sistema subyacente, esa es mi especialidad, pero puedes decir un poquito.

Antes de responder a esta pregunta, déjame responder primero: mucha gente me pregunta: ¿es el aprendizaje impulsado o la aplicación del aprendizaje?

Solo puedo decir que me interesa. Los controladores y las aplicaciones no están completamente separados.

1. El controlador del que hablamos no se limita al funcionamiento del hardware, sino que también incluye conceptos como los principios del sistema operativo y la programación de suspensión y activación del proceso.

Si desea escribir una buena aplicación y resolver los problemas encontrados en la aplicación, debe comprender este conocimiento.

2. El umbral de la aplicación es bajo, especialmente el Android actual, que es JAVA puro. Personalmente, creo que el camino del desarrollo de aplicaciones es la competencia empresarial.

Por ejemplo, en la industria de las comunicaciones, la industria de IPTV y la industria de la telefonía móvil, usted conoce las necesidades de la industria. Por lo tanto, las personas que son líderes están en su mayoría orientadas a las aplicaciones.

3. Como conductor, en realidad no quiero que me llamen “ser un conductor”, quiero que me llamen “ser un conductor del sistema subyacente”. Si lo hace, acabará con todas las industrias. He estado trabajando durante varios años,

He fabricado teléfonos móviles, IPTV y TV para conferencias, pero estos productos no son diferentes para mí porque solo trabajo en la capa inferior. Sus asuntos no tienen nada que ver conmigo

Cuando hay un problema en la aplicación y no pueden resolverlo, les daré sugerencias y les proporcionaré herramientas desde la perspectiva del kernel.

En cuanto a la dirección de desarrollo subyacente, personalmente creo que soy un experto técnico.

4. De hecho, no existe límite entre trabajar en la capa inferior y trabajar en aplicaciones. Si tienes un nivel bajo de experiencia antes de aplicarlo, te sentirás muy a gusto.

Con experiencia empresarial, puedes empezar de nuevo y formar un equipo rápidamente.

Volvemos a la pregunta de cómo aprender. ¿Qué incluye el sistema subyacente Linux integrado? No te preocupes, sólo dame un ejemplo.

1. ¿Quién muestra esas interfaces cuando se enciende la computadora? Es la BIOS. ¿Qué hace? Algunas pruebas automáticas, luego leen ventanas desde el disco duro y comienzan.

De manera similar, esta BIOS corresponde al gestor de arranque en Linux integrado. Este gestor de arranque parpadeará para leer el kernel de Linux e iniciarlo.

2. ¿Cuál es el propósito de iniciar Windows? Por supuesto que es un chat en línea o algo así.

¿Dónde están estas herramientas de Internet y chat?

Por lo tanto, Windows primero debe identificar la unidad C y la unidad D. En Linux, lo llamamos sistema de archivos raíz.

3. Windows puede reconocer la unidad C y la unidad D, por lo que debe poder leer y escribir en el disco duro. Esto implica algo llamado controlador. Por supuesto, no se trata sólo del disco duro, sino también de la tarjeta de red, USB, etc.

Linux integrado puede leer y ejecutar aplicaciones desde Flash. Debe tener un controlador Flash y, por supuesto, no es solo Flash.

Detengámonos aquí. LINUX incorporado contiene cuatro módulos: programa de arranque, kernel, controlador y sistema de archivos raíz.

Primero, el gestor de arranque:

Este es un programa básico ligeramente complejo. Pero no es fácil entender y escribir este programa básico. Las herramientas fáciles de usar en Windows debilitan nuestras capacidades de programación.

Mucha gente utiliza ADS y KEIL cuando juegan embebidos. ¿Puedes responder estas preguntas?

1. ¿De dónde obtiene la CPU las instrucciones para ejecutar cuando está encendida?

Respuesta: Generalmente las instrucciones se dan desde Flash.

2. Pero Flash sólo se puede leer y no se puede escribir directamente. Si uso variables globales, ¿dónde están estas variables globales?

Respuesta: Las variables globales deben estar en la memoria.

3. Entonces, ¿quién pone las variables globales en la memoria?

a: Amigos que han estado usando ADS y KEIL durante mucho tiempo, ¿pueden darme una respuesta? Esto requiere un "reposicionamiento". En ADS o KEIL, el código de reubicación lo escribe la empresa que fabrica estas herramientas.

¿Lo has leído?

4. Con una memoria tan grande, ¿cómo saber dónde leer el "contenido originalmente almacenado en Flash" en la memoria?

Respuesta: Esta dirección está determinada por el "script de enlace". Hay archivos dispersos en ADS y archivos similares en KEIL. ¿Pero lo has investigado?

5. ¿Dijiste que la reubicación significa copiar el programa de Flash a la memoria, para que el programa pueda leer Flash?

Respuesta: Sí, debe poder utilizar Flash. Por supuesto, no sólo eso, sino también configurar el reloj para que el sistema funcione más rápido, etc.

Empecemos haciéndonos y respondiendo esta pregunta. Bootloader, un programa básico, en realidad tiene tres puntos clave:

1. Operación del hardware

2. Comprender la arquitectura del procesador ARM

3. del programa: Reubicación, pila, segmento de código, segmento de datos, segmento BSS, etc.

Para el funcionamiento del hardware, es necesario leer el diagrama esquemático y el manual del chip. Esto requiere una cierta cantidad de conocimiento de hardware, que no requiere que usted diseñe hardware, pero al menos puede comprenderlo. No necesita comprender los circuitos analógicos, pero debe poder comprender los digitales; circuitos. Esta habilidad la aprendí en la escuela, y dos libros (olvidé el título) son suficientes: "Principios de microcomputadoras" y "Circuitos digitales". Pero dudo que tengas paciencia.

He leído estos dos libros con todo mi corazón. No sé si ahora hay un libro más rápido. Si quieres acelerar, suelta esta pieza primero. Si no lo entiendes, pregúntale a Google y publícalo.

Además, no olvides leer las instrucciones del chip. No busques chino, sólo inglés. Es doloroso al principio, pero descubrirá que leer el manual de cualquier chip es fácil una vez que se familiarice con la sintaxis y el vocabulario.

Mire a Du Chunlei: OK, hay instrucciones de ensamblaje, modo de excepción, MMU, etc. Sólo necesitas saber tres cosas.

Para conocer los conceptos básicos de programación, el director Wang, por supuesto, debe observar los principios de compilación. Es una pena que este tipo de libros sean definitivamente un libro del cielo. Te aconsejo que no lo leas a menos que seas un súper genio. Mira lo que escribí

& ltManual completo para el desarrollo de aplicaciones Linux integradas>: También hay 1 video, no te preocupes, no gastes dinero. Según el vídeo, hice experimentos relacionados con el hardware y estos conceptos son claros. No he

Encontré un segundo conjunto de libros o videos sobre estos conceptos, lo que me permite presumir por una vez.

Para el gestor de arranque, leo: y luego escribo mis propios programas para hacer experimentos en varios hardware, como GPIO, reloj,

SDRAM, UART, NAND. combínalos juntos es fácil de entender u-boot.

En resumen, para comprender el diagrama esquemático del hardware y el manual del chip, debe encontrar la información usted mismo. Por lo demás solo presiona: y el capítulo del video 1.

Índice del capítulo. Ve y aprende.

2. Kernel:

Aquellos que quieran ser más rápidos primero deben aprender a escribir controladores directamente y aprender más allá del kernel.

Para convertirte en un maestro, debes tener un conocimiento profundo del núcleo. Nota, dije entender. No espero escribir un kernel.

Debe comprender el mecanismo de programación, el mecanismo de administración de memoria, el mecanismo de administración de archivos, etc.

Dos libros recomendados:

1. Leer detenidamente; leer el delgado (la sociedad flotante enfatiza la velocidad, eh),

2. Lectura seleccionada: Quiero saber aprender ¿Qué sección?

En tercer lugar, fuerza impulsora:

El controlador consta de dos partes: el funcionamiento del hardware en sí y el marco del controlador.

La misma frase se aplica al hardware, aún necesita comprender el diagrama esquemático, leer el manual del chip y practicar más.

Hablando del marco del controlador, hay varios libros que se pueden presentar. LDD3, es decir; un libro escrito por un extranjero introduce muchos conceptos y vale la pena leerlo. Sin embargo, su papel

se limita a introducir conceptos. Básicamente se utiliza para familiarizarse con los conceptos antes de comenzar y luego se desecha después de comenzar.

La introducción completa al controlador debería ser Song Baohua: Bueno, para ser honesto, solo leí el catálogo y mucha gente dijo que era bueno, así que lo recomiendo aquí.

Si quieres conocer una pieza mejor, definitivamente es una súper recomendación de 5 estrellas. No espere terminarlo todo; tiene más de 1.800 páginas y cubre dos volúmenes. No estoy seguro de cierta pieza

Ve a verla. Cualquier parte del libro podría tener entre 200 y 300 páginas con gran detalle. Y es necesario analizar el código fuente del kernel con ciertos objetivos. Utiliza Linux 2.4 como ejemplo.

Pero el principio es el mismo y se aplica a otras versiones de Linux.

¿Alguna otra presentación? Jaja, por supuesto que es la segunda fase del video de Linux de Wei Dongshan. & ltManual completo para el desarrollo de aplicaciones Linux integradas>: No hay mucha discusión sobre los controladores en el libro y no es lo suficientemente profundo.

Así que grabé este vídeo. No solo le enseña cómo escribir y modificar el controlador, sino que también le enseña por qué debería escribir y modificar el controlador de esta manera.

Cada conductor está escrito en el sitio:

1. Dibujar con una pizarra es equivalente a que un maestro dibuje en una pizarra en la escuela, lo cual es muy intuitivo.

Definitivamente no para PPT.

2. Como cada lección, comience desde la línea 1 y utilice la información fuente para escribir un programa en el acto. Hablé de más de 20 controladores y escribí más de 20 programas.

3. Compile y pruebe después de escribir.

4. Muy completo, que incluye tres categorías principales: controladores de dispositivos de caracteres, controladores de dispositivos de bloque y tarjetas de red, introducción de hardware, análisis y pruebas del marco de controladores.

El contenido que imparten las instituciones de formación es mucho menos rico que este vídeo. He enseñado en muchas instituciones de formación, pero nunca he visto a un profesor que se atreviera a explicar cada lección en el acto y escribir código en el acto.

Prueba en el acto, ¡excepto yo! No he visto a ninguna institución de formación completar estos contenidos; por falta de tiempo, tomará al menos un mes completarlos, pero esta parte básicamente solo toma dos semanas para enseñarse.

Intenta escribir un controlador para todo el hardware en la placa de desarrollo. Si tiene algún problema, aprenda de ellos primero. En el proceso de pensar, aportarás una gran cantidad de conocimientos irrelevantes.

Concatenación, última conexión.

Cuarto, sistema de archivos raíz:

¿Alguna vez has pensado en estos dos problemas?

1. Algunos productos fabricados por Linux se utilizan para monitorear, otros lo son. para teléfonos móviles y algunos son para tablets. Entonces, después de que se inicia el kernel y se monta el sistema de archivos raíz, ¿qué aplicación se debe iniciar?

Respuesta: El kernel no sabe ni le importa qué programa de usuario debe iniciarse. Solo inicia el inicio de la aplicación, que corresponde a /sbin/init.

Obviamente, esta aplicación leerá el archivo de configuración e iniciará el programa de usuario (monitoreo, interfaz manual, interfaz de tableta, etc.) de acuerdo con el archivo de configuración.

Esta pregunta nos recuerda que existen ciertas convenciones sobre el contenido del sistema de archivos, como /sbin/init y archivos de configuración.

2. ¿Alguna vez has pensado en quién implementó el printf utilizado en los programas Hola y Mundo que escribiste?

Respuesta: Usted no implementó esta función, pero la función de biblioteca sí. Cuando se ejecuta, debes encontrar la biblioteca.

Esta pregunta nos recuerda que existen bibliotecas en el sistema de archivos.

Simplemente pregúntate y responde aquí. Si quieres saber más, puedes echar un vistazo a init.c de Busybox para saber qué está haciendo el proceso de inicio.

Por supuesto, también puedes ver el capítulo: Construyendo el sistema de archivos raíz.

Cuéntame sobre mi experiencia de aprendizaje.

1. Me especialicé en física y electrónica en la escuela. De hecho, el curso no enseñó cómo diseñar circuitos, solo enseñó algunos conocimientos sobre circuitos electrónicos. Diseño de PCB

Aprendí por mi cuenta en el laboratorio. Solo diseñé dos capas de tableros y ahora casi me olvido de ellos. Pero conserva la capacidad de leer esquemas y manuales de chips.

2. Me especialicé en software y estoy interesado en el diseño de software, pero solo aprendí lenguaje C y bases de datos. Hice muchas preguntas del concurso con gran interés. No tengo la capacidad para participar en la competencia, pero he practicado el lenguaje C de manera muy sólida.

3. En el laboratorio, en la primera empresa, simplemente diseñamos algunas tarjetas PCI simples y escribimos controladores para Windows.

4. La segunda empresa utilizó el microcontrolador 51 para fabricar un teléfono para automóvil y comenzó el camino del software puro.

5. Comencé a sentir las deficiencias del microcontrolador, así que renuncié y estudié Linux a puerta cerrada durante medio año, comenzando con cómo operar Red Hat. Los pasos son para verificar:

Luego escriba su propio programa básico para operar el hardware y luego analice u-boot. Mire también; comprenda el marco de LINUX.

Al escribir tableros básicos, se recomienda fortalecer su comprensión de las interrupciones. El kernel utiliza interrupciones para realizar diversas funciones.

6. Después de analizar u-boot, inicie la programación simple del controlador. En este momento, la habilidad todavía es muy débil.

7. He estado trabajando en ZTE durante 2 años y mis habilidades se han perfeccionado escribiendo varios controladores y resolviendo varios problemas (problemas de controladores, ayudando a localizar problemas de aplicaciones).

En resumen:

1. Libros de hardware: principios de microcomputadoras, circuitos digitales, libros de texto universitarios. Han pasado muchos años desde que me gradué y se me ha olvidado mi nombre.

2. Libros sobre Linux:

& ltArquitectura y Programación ARM>:

& ltManual completo para el desarrollo de aplicaciones Linux integradas>

p>

& ltControlador de dispositivo Linux>; El libro escrito por extranjeros

& ltInstrucciones detalladas sobre el desarrollo del controlador de dispositivo Linux>

& ltComentarios completos del kernel de Linux>; p><Análisis de la escena del kernel de Linux>

3. Video:

Video No. 1 de Wei Dongshan Linux (basado en la grabación S3C2440): experimento ARM, u-boot, sistema de archivos, primario conductor.

Video No.1 de Wei Dongshan Linux (grabado según S3C6410): programa de placa básica.

Vídeo de Wei Dongshan Linux Número 2: Controladores avanzados