Colección de citas famosas - Colección de poesías - ¿Cómo aprender bien los sistemas integrados?

¿Cómo aprender bien los sistemas integrados?

Enlace original: Enlace web

Hoja de ruta de aprendizaje de Linux integrado Fui a la universidad en 1999, con especialización en física. Cuando era estudiante de primer año, la clase generalmente estaba llena de ansiedad sobre el futuro. No sabía qué podía hacer después de estudiar física. Su experiencia actual y sus estudios actuales definitivamente afectarán su vida futura. Después de graduarme, también encontré mi propio trabajo: fui al extranjero para continuar mis estudios y cambié mi carrera hacia las finanzas, me quedé en la escuela para enseñar, hacer investigaciones científicas, diseñar chips, escribir programas, fundar una empresa, etc. Estas son inseparables de las habilidades básicas que aprendimos en la escuela (matemáticas, informática, circuitos electrónicos) y de la capacidad de autoaprendizaje que hemos perfeccionado.

Entonces, sois estudiantes y programadores confundidos que quieren cambiar de carrera. Definitivamente habrá un lugar para ti en el futuro. Si es bueno o malo depende de sus esfuerzos y acumulación actuales.

No puedo predecir qué industria será popular dentro de unos años, ni puedo garantizar que harás una fortuna estudiando este artículo. Solo soy un programador con más de diez años de experiencia. Si estás interesado en la programación, me gustaría darte algunos consejos.

1. Tres direcciones para programadores. Las direcciones de los programadores generalmente se pueden dividir en tres categorías: campos profesionales, campos comerciales y campos de sistemas operativos. Después de conocerlos, elige según tus intereses.

En el ámbito profesional no puedo darte ningún consejo.

El negocio (es decir, la aplicación) no es completamente independiente del sistema operativo:

(1) Al desarrollar productos físicos, las personas que escriben buenas aplicaciones a veces necesitan conocimientos del sistema operativo. , como la configuración Programación de prioridades, sabiendo que ciertas funciones pueden poner los procesos en suspensión.

(2) Aquellos que escriben aplicaciones para ser promovidos a ingenieros de sistemas, necesitan saber todo de arriba a abajo y luego deben tener conocimientos en el campo de los sistemas operativos. De lo contrario, ¿cómo diseñar todo el sistema?

3 Las personas que crean aplicaciones deben comprender las necesidades de la industria y comprender la lógica del negocio. Por lo tanto, las personas que son líderes están en su mayoría orientadas a las aplicaciones. Una vez que ingresa a una industria, es difícil cambiar de industria.

(4) En el campo de los sistemas operativos, esto está acabando con todas las industrias: él solo es responsable del sistema subyacente, y el negocio que desarrolle en él no tiene nada que ver con él. Muchas personas en esta industria son expertos técnicos.

⑤ No existen límites entre el sistema operativo y el negocio. Si tiene experiencia en sistemas operativos y luego trabaja en aplicaciones, conocerá la causa raíz del sistema y tendrá soluciones cuando encuentre problemas. Con experiencia empresarial, puede volver a aprender el sistema operativo y pronto podrá formar un equipo para iniciar su propio negocio. Al menos ser CTO no es un problema.

Los campos profesionales de 1.1 se pueden dividir en las dos categorías siguientes.

1.1.1 Investigación académica

Por ejemplo, habla, procesamiento de imágenes, inteligencia artificial, este tipo de trabajo requiere que tengas fuertes conocimientos teóricos. Tiendo a pensar en esas personas como "científicos". Han estudiado durante muchos años y, a menudo, realizan investigaciones académicas.

En el campo integrado, es necesario utilizar algunos algoritmos para expresar sus resultados y optimizar ciertos chips. Alguien puede hacer esta parte del trabajo.

1.1.2 Implantación de Ingeniería

También hay personas que entienden los conceptos de estos campos profesionales, pero no han profundizado en ellos. Puede utilizar varios materiales de código abierto para lograr un objetivo determinado y crear un producto. Por ejemplo, en el procesamiento de imágenes, sabe cómo utilizar cientos de funciones complejas en opencv para lograr el reconocimiento de avatar. A veces, estas funciones se pueden optimizar para el chip específico.

Los "campos profesionales" no son lo mío. Si quieres hacer esto, creo que la mejor manera de comenzar es a través de programas de posgrado y doctorado en la escuela.

1.2 Las áreas de negocio, es decir, las aplicaciones, se pueden dividir en las dos categorías siguientes.

1.2.1 Visualización de la interfaz

Por supuesto que necesitas una buena interfaz para fabricar productos, pero eso no significa que no sea importante, significa que no hay potencial de desarrollo.

Las palabras clave ahora son desarrollo de aplicaciones para Android y aplicaciones para IOS. No se deje confundir por los términos Android e IOS. Son iguales que los VC y VB anteriores, excepto que son solo un conjunto de controles GUI.

Espero no haberte ofendido. Tengo mis razones.

Un programa necesita una interfaz GUI, pero la lógica interna del programa es el núcleo.

Las herramientas de desarrollo de Android e IOS nos simplifican el desarrollo de GUI, proporcionan el mecanismo de interacción de estos controles, encapsulan y brindan algunos servicios (como la transmisión de red). Es la lógica de negocio dentro del programa, el procesamiento de imágenes y sonidos de vídeo, etc. , son todos básicos. Además, no olvide el programa en segundo plano en el lado del servidor: cómo guardar datos de forma más segura, proteger la privacidad del cliente, cómo manejar millones de accesos simultáneos, etc.

Sin embargo, ¡las aplicaciones de Android e IOS son rápidas de usar! Si eres un estudiante de último año y estás ansioso por encontrar un trabajo, deberías poder encontrarlo fácilmente si pasas 1 o 2 meses aprendiendo Android o IOS. Después de todo, la demanda de aplicaciones es siempre mayor y estas dos tecnologías todavía están relativamente de moda. Alrededor de 2011 y 2012, el salario inicial de los programadores de Android era bastante alto, pero luego empezó a bajar. El tiempo de entrada básico para la aplicación de Android es de solo un mes, por lo que cada vez más personas la conocen. En 2013 y 2014, el salario del desarrollo de IOS era obviamente más alto que el de Android, por lo que también se expusieron varias capacitaciones de IOS. Siempre ha habido escasez de talentos de ritmo rápido en China. Se estima que los ingenieros de IOS serán baratos en el futuro.

Conocer Android e IOS es sólo un requisito básico. Si no lo cree, vaya a 51job y busque Android o IOS. Otros requisitos se confirmarán en los requisitos del trabajo.

1.2.2 Lógica empresarial

Como ejemplo sencillo, para crear un software de tarjetas perforadas, debes considerar lo siguiente:

(1) Proceso normal Es hora de fichar en el trabajo.

②¿Qué debo hacer si alguien se olvida? Regístrelo como una excepción y envíelo al administrador.

(3) ¿Cómo afrontar las solicitudes de licencia?

4 ¿Cómo afrontar las horas extras?

Para dar otro ejemplo más complejo, en un sistema de videoconferencia, no se puede descubrir cómo conectar varios módulos y cómo ser compatible con varios protocolos sin profundizar en la industria.

Siempre existen la mayoría de los puestos de desarrollo de aplicaciones y la barrera de entrada es baja. Básicamente, siempre que puedas hablar lenguaje C y tener un buen desempeño en las entrevistas, la mayoría de las empresas te darán una oportunidad. Porque:

Después de ingresar a la empresa, es necesario reciclarse: familiarizarse con su lógica empresarial.

2. Lo que necesitas hacer es básicamente un módulo, y el marco ha sido decidido por ti. Puedes simplemente completar el código.

Dime algo que te haga feliz: en las empresas de software, los líderes básicamente escriben aplicaciones (y marketing, por supuesto). Las personas que escriben aplicaciones pueden investigar el mercado y recibir clientes externamente, y gestionar programadores para completar el desarrollo internamente. Si a él no se le permite ser el líder, ¿quién podrá hacerlo?

Si su ambición es escribir una aplicación, le sugiero que primero practique las habilidades básicas: las estructuras de datos y los algoritmos son necesarios, y luego elija bases de datos, programación de redes, etc. para un estudio en profundidad de acuerdo con tus intereses.

Por último, elige una industria que te interese y trabaja duro durante 10 años. Si las personas que desarrollan aplicaciones eligen una determinada industria, será difícil cambiar de industria en el futuro. ¡La selección de línea es importante!

UCOS es demasiado simple en el campo de los sistemas operativos 1.3, VxWorks es demasiado caro y demasiado profesional, Windows no reproduce sistemas integrados, IOS no es de código abierto y solo puede reproducir Linux en el campo de sistemas operativos.

¡Linux domina el campo integrado!

¿Qué pasa con Android? Al igual que QT, Android también es un sistema GUI. Es solo que Google es demasiado poderoso y ahora Android está en todas partes, por lo que en muchos casos Linux Android se ha convertido en el estándar. Tenga en cuenta que lo que nos importa aquí es todo el sistema y mecanismo de Android, en lugar de aprender algunas API y desarrollar programas de interfaz. El contenido incluido en el campo de los sistemas operativos, en pocas palabras, es hacer una "computadora" dedicada con un buen sistema, que se puede dividir en:

① Planificación de hardware para productos:

Según las necesidades, el rendimiento y el costo, seleccione el chip principal y combínelo con dispositivos periféricos, diseñados por desarrolladores de hardware.

(2) Cree e instale el sistema operativo y escriba el controlador de placa única.

③Mantenimiento personalizado, actualización y otras soluciones del sistema.

④ También puedes configurar e instalar sistemas GUI como Android:

⑤ Configurar el entorno de desarrollo para desarrolladores de aplicaciones.

⑥Resolver problemas desde una perspectiva sistémica.

Esta área a menudo se denomina "sistemas de bajo nivel" o "desarrollo de controladores".

Primero resuelva dos malentendidos comunes:

¿Este trabajo consiste en escribir controladores?

Si observamos los seis puntos enumerados anteriormente, cabe decir que incluye el desarrollo de controladores, pero es mucho más que el desarrollo de controladores.

②¿Aún necesitamos escribir un controlador? ¿No hay fábrica original? ¿O simplemente hay que cambiarlo?

Algunas personas suelen decir que el chip original está en buen estado y puede ser reemplazado. Si su hardware es exactamente el mismo que el de la placa original, el código fuente original no tiene errores y no desea optimizar el rendimiento, reducir costos y crear algunos productos distintivos, entonces esta afirmación es correcta.

Pero en esta era de innovar o morir, ¿es posible? ! Hay dos razones:

(1) Incluso si solo modifica el código, el requisito previo para la modificación es la comprensión, la mejor manera de comprenderlo es escribir varios controladores desde cero;

② Muchas veces es necesario personalizar profundamente el sistema.

En el pasado, los teléfonos móviles MediaTek podían comercializarse simplemente cambiando la interfaz, pero ahora las fábricas imitadoras están fallando una tras otra. Cuando todos usan el plan original sin modificaciones, al final solo pueden pagar el costo.

Por ejemplo, hay dos fabricantes en Shenzhen que producen cámaras de tráfico y cámaras de vigilancia. Me pidieron que hiciera cuatro proyectos:

① Mejorar el rendimiento del controlador de la tarjeta SD proporcionada por. el fabricante y utilice DMA.

②Después de cambiar el modelo de Flash, a menudo ocurren problemas en el sistema y es necesario modificar los errores del controlador.

③El clic en la pantalla táctil es incorrecto y se encuentra el motivo. Más tarde se descubrió que la causa era el condensador de derivación.

(4) Para reducir costos, reemplace 4 bloques de DDR con 2 bloques de DDR, lo que requiere que el gestor de arranque cambie la inicialización del DDR.

Estos artículos son extremadamente urgentes y si no podemos procesarlos, no podemos enviarlos. ¿Por qué no encontrar el fabricante original en este momento? A menos que seas un gran cliente como ZTE y Huawei, ¿a quién le importas?

Cuando trabajaba en ZTE, en realidad dedicaba muy poco tiempo a escribir controladores. La mayor parte de mi tiempo lo dedicaba a depurar: ajustar el sistema y ayudar a los ingenieros de aplicaciones y de hardware a encontrar problemas. Muchos de los códigos fuente que obtenemos de los fabricantes y en línea son estándar y, por supuesto, pueden usarse directamente. Pero podría ser mejor optimizar su producto. Por ejemplo, podemos combinar el controlador de la cámara y el controlador DMA para enviar los datos de la cámara directamente al DSP a través de DMA. Podemos actuar como puente entre el software y el hardware. Para los productos físicos, puede haber problemas con el software o el hardware y, en general, es más fácil para los ingenieros de sistemas subyacentes encontrar problemas.

Cuando las aplicaciones de software y hardware tengan problemas que no puedan resolver, bríndeles sugerencias y proporcióneles herramientas desde la perspectiva del software subyacente. Otro ejemplo es la selección de la solución: si el rendimiento del chip puede cumplir con los estándares, si el BSP disponible está completo, etc. , esto solo puede ser considerado por la persona a cargo de todo el esquema, quien debe comprender la capa inferior.

En el campo de los sistemas operativos, existen muchos requisitos de conocimiento:

(1) Comprender el conocimiento del hardware y los diagramas de circuitos.

(2) Buen inglés y puedo entender las instrucciones del chip.

③Capacidad para escribir y trasplantar controladores.

④ Tener cierto conocimiento del propio sistema operativo y ser capaz de resolver diversos problemas difíciles.

⑤ Comprender el mecanismo interno de Android.

⑥Comprender ensamblador, lenguaje C, C y JAVA.

Definitivamente es un gran pozo. Las personas que no tienen interés ni perseverancia deben elegir con cuidado.

Se necesita más de medio año para iniciarse en esta industria, incluso si estudias todo el día.

2 Su estado definitivamente no es tan bueno como el de APP.

Y no tienes 1 o 2 años de experiencia. Una vez que la empresa lo contrata, comienza a crear aplicaciones.

Las ventajas son:

1 Si lo aprendes bien, tendrás éxito seguro en la industria. Si quieres lograrlo, puedes lograrlo si quieres; para hacer tus propios productos, haz tus propios productos.

② En comparación con las personas que lo solicitan, no se verán obligadas a trabajar horas extras todos los días debido a los cambios en las necesidades.

El umbral es alto y, por supuesto, el salario también es relativamente alto.

En el campo de los sistemas operativos, creo que es adecuado para estas personas:

(1) Si un ingeniero de hardware quiere cambiar de carrera para convertirse en ingeniero de software, sería Es mejor comenzar con el software subyacente.

(2) Ingeniero de microcontroladores que quiere actualizarse. Las personas que comprenden la capa inferior de Linux definitivamente comprenderán los microcontroladores, pero es posible que las personas que comprenden los microcontroladores no necesariamente comprendan Linux.

③Estudiantes con mucho tiempo: si eres estudiante de segundo o tercer año, es beneficioso pasar la primera mitad del año aprendiendo el Linux integrado subyacente.

4. Personas que quieren dominar todo el sistema. Por ejemplo, si escribe una aplicación en la empresa, pero quiere ser ascendido a ingeniero de sistemas, entonces debe aprender en el nivel inferior.

⑤Para los ingenieros que desean iniciar su propio negocio y fabricar productos físicos, si tienen dinero, no necesitan aprender ninguna tecnología, pero si no tienen dinero y quieren fabricar productos, entonces Tienes que aprender la capa inferior de Linux.

6 Las personas que hacen APPs Linux, sí, también deberían aprender.

Estas personas no necesitan entrar en detalles, solo tienen una comprensión general: el gestor de arranque se usa para iniciar el kernel, el sistema de archivos de Linux (cuál es el primer programa, para qué se usa el directorio), La aplicación y los conceptos de relación de llamada del conductor y cadena de herramientas son suficientes.

El sistema operativo predeterminado de este artículo es Linux y analiza cómo aprender el sistema Android Linux integrado.

1.4 ¿Qué incluye el sistema Android Linux integrado? No te preocupes, sólo dame un ejemplo.

¿Quién muestra esas interfaces cuando se enciende el ordenador?

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 se descargará para leer el kernel de Linux e iniciarlo.

②¿Cuál es el propósito de iniciar Windows?

Por supuesto, ejecuta la aplicación para chatear online.

¿Dónde están estos programas online y programas de chat?

En la unidad cy la unidad d.

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

(3) ③Windows puede reconocer la unidad C y la unidad D, por lo que debe tener la capacidad de leer y escribir en el disco duro.

Esta capacidad se llama impulso. Por supuesto, no se trata sólo del disco duro, sino también de las tarjetas de red, USB y otro hardware. Linux integrado puede leer y ejecutar aplicaciones desde Flash. Debe tener un controlador Flash y, por supuesto, no es solo Flash.

En pocas palabras, el sistema LINUX integrado consta de cinco partes principales: gestor de arranque, kernel, controlador, sistema de archivos raíz y aplicación. En cuanto a aplicaciones, podemos dividirlas en: C/C, Android.

Por lo tanto, el sistema Android Linux integrado incluye las siguientes seis partes:

①Cargador de arranque

②Kernel de Linux

③Controlador

④Aplicaciones escritas en C/C

⑤El propio sistema Android

6.⑥Aplicaciones de Android

Android y Linux Las conexiones son geniales y sus aplicaciones tan está muy extendido, no hay razón para dejar de aprender Android después de haber aprendido Linux. En la mayoría de los dispositivos inteligentes, se ejecuta un sistema operativo Linux; tiene Android instalado o puede interconectarse con un teléfono Android. Ahora, Linux Android se ha convertido en estándar.

2. Cómo aprender el sistema operativo Linux incorporado. Este artículo asume que no tiene ninguna base y se centra en la practicidad, para que pueda comenzar en el menor tiempo posible. Puede consultar si desea obtener información en profundidad.

En el trabajo real, nos desarrollamos en torno al "sistema operativo" y no realizaremos investigaciones ni modificaciones demasiado profundas en el sistema operativo en sí.

①El sistema operativo tiene funciones como gestión de procesos, gestión de almacenamiento, gestión de archivos, gestión de dispositivos, etc. Estas funciones principales son muy estables y confiables, y básicamente no necesitamos modificar el código. Sólo necesitamos perfeccionar los controladores para nuestro propio hardware.

②El impulso de aprendizaje definitivamente implicará otros conocimientos, como gestión de almacenes, programación de procesos, etc. Cuando comprenda profundamente el controlador, también profundizará su comprensión de otras partes del sistema operativo.

③La mayoría de los códigos del kernel de Linux son controladores de dispositivos. Se puede considerar que el kernel de Linux se compone de varios controladores.

Sin embargo, para convertirte en un maestro en esta área, debes tener un conocimiento profundo del propio sistema operativo Linux y estudiar su código fuente.

Después de un ajetreado trabajo y ocio, puede leer estos libros:

① Notas completas del kernel de Linux de Zhao Jiong, relativamente delgadas, recomendadas. Posteriormente se publicó el "Análisis completo del kernel de Linux", que era demasiado grueso. Si no te gusta, olvídalo.

(2) "Análisis de escenarios del código fuente central de LINUX" de Mao y Hu, dividido en dos volúmenes, es extremadamente denso. Míralo como si fuera un diccionario: si quieres entender algo en profundidad, simplemente lee un capítulo.

Hay muchos otros libros buenos, pero no los he leído mucho y no tengo más sugerencias.

Para fines de inicio rápido e introducción, no es necesario leer el libro anterior primero, simplemente siga este artículo para aprender.

2.1 Hoja de ruta de inicio Suponiendo que no tenga ninguna base, hemos planificado la siguiente hoja de ruta de inicio. Los conocimientos previos son la base para los siguientes conocimientos. Se recomienda estudiar en orden. No es necesario estudiar en profundidad cada sección, lo que se describirá en las siguientes secciones.

2.2 Conocimientos básicos antes de aprender el controlador 2.2.1 Lenguaje C

Mientras estés en ciencias e ingeniería, parece que se enseña el lenguaje C. He visto a muchas personas que obtuvieron una puntuación de 90 o 100 en la prueba de lenguaje C, pero se volvieron estúpidas tan pronto como se subieron a la computadora. Dudo que alguna vez escribieran programas en computadoras.

No importa lo buena que sea la teoría, si no puedes trabajar sin práctica, ¿por qué la empresa debería contratarte?

Por otro lado, para aprender el lenguaje C desde la práctica, ¡debes practicar, escribir y escribir!

Cuando domines la sintaxis básica, podrás practicar algunos ejercicios de lenguaje C en el ordenador.

Cuando haya escrito algunos programas en C, podrá pasar a la siguiente etapa de desarrollo básico.

(1) No es necesario que sea demasiado profundo.

Como comienzo rápido, siempre que puedas escribir "¡Hola, mundo!", escribir clasificación de burbujas y realizar algunas operaciones gramaticales básicas, será suficiente por el momento.

La operación del puntero es el punto clave, practique más;

No necesita aprender demasiado sobre la estructura de datos, solo necesita dominar la operación de la lista vinculada. No es necesario aprender otras cosas, como colas y un árbol binario. No es necesario aprender el uso de ninguna función, como operaciones de archivos, programación multiproceso, programación de redes, etc. Este conocimiento se utilizará al escribir aplicaciones de Linux, ¡pero no es necesario para aprender los controladores del sistema operativo!

Avanzar siempre y volveremos para aprender cuando encontremos problemas del lenguaje C que no entendamos.

En el posterior "Desarrollo Bare Metal", continuarás practicando el lenguaje C, que será más práctico.

El lenguaje C se refina al escribir código.

②Puedes aprender en Visual Studio o Linux. Esto último requiere dominar algunos comandos de compilación. Por el momento no ofrecemos tutoriales en lenguaje C. Encuentre un libro en lenguaje C y videos gratuitos en lenguaje C en Internet (principalmente sobre cómo configurar el entorno) y podrá aprender usted mismo.

2. 2. 2 Operaciones básicas de PC Linux:

Para PC Linux, recomendamos Ubuntu, en el que es muy fácil instalar software.

Nuestro modo de trabajo suele ser el siguiente: leer y escribir código en Windows y luego cargar el código en una PC Linux para compilarlo.

De hecho, el sistema de escritorio Ubuntu ya es muy fácil de usar y podemos comenzar rápidamente con varios teléfonos inteligentes. Creo que el sistema de escritorio Ubuntu también puede ayudarte a comenzar rápidamente. Para mejorar la eficiencia del trabajo, normalmente utilizamos la línea de comandos para operar Ubuntu.

No te preocupes, solo necesitas dominar estos comandos en la etapa inicial. Son muy simples, simplemente los enumeraré:

①cd: Cambiar directorio (cambiar directorio)

¿Nombre del directorio del CD? //Directorio de entrada cd..// cd "dos puntos": volver al directorio anterior cd-// cd "dhorst": volver al directorio anterior.

②pwd: imprime el directorio de trabajo (imprime el directorio actual y muestra la ruta absoluta del directorio de trabajo actual).

③mkdir: crear directorio (crear directorio)

Mkdir abc //Crear carpeta abcmkdir -p a/b/c //Crear carpeta A y luego crear una carpeta en A B, y luego cree la carpeta C en B.

④rm: ¿Quitar (eliminar directorio o archivo)

rm? Archivo//¿Eliminar archivo rm -rf dir archivo con nombre? //Elimina el directorio llamado dir.

⑤ls: Lista (lista el contenido del directorio)

⑥Instalación: Instalación

mount -t nfs -o nolock, vers=2 192.168.1.123: /work/NFS _ root/mnt mount-t yaffs/dev/MTD block 3/mnt

⑦chown: Cambiar propietario (cambiar el propietario del archivo, es decir, el propietario)

libro chown:libro/trabajo -R? //Para el directorio /work y todo su contenido, el propietario se cambia a usuario de reserva y el grupo se cambia a reserva.

⑧chmod: Cambia el modo El siguiente ejemplo es muy simple y tosco.

chmod 777 /trabajo -R? //Para el directorio /work y todo su contenido, los permisos se cambian a legibles, escribibles y ejecutables.

Los comandos de edición más utilizados en Linux son un poco complicados de usar. Busque el uso usted mismo.

Para practicar estos comandos, puede ingresar al sistema de escritorio de Ubuntu, abrir una terminal e ingresar esos comandos; o usar SecureCRT, PuTTY y otras herramientas para iniciar sesión de forma remota en Ubuntu y practicar.

Conocimiento de hardware

El propósito de aprender conocimientos de hardware es comprender el diagrama esquemático, el protocolo de comunicación y el manual del chip. No quiero diseñar un esquema, y ​​mucho menos una placa de circuito.

Para el método ortodoxo, debes estudiar así:

(1) Aprender los principios de las microcomputadoras y comprender la composición de una computadora y los principios de interacción de cada componente.

②Aprenda circuitos digitales, comprenda los principios y usos de varios circuitos de compuerta y domine algunas operaciones lógicas (y, o, etc.).

(3) ¿Circuitos analógicos? No necesito aprender esto. Al menos no lo necesito en el trabajo. Ahora lo he olvidado por completo.

En mi experiencia personal, estos cursos son útiles, pero:

Los principios son útiles, pero la practicidad no es sólida.

Por ejemplo, el principio de la microcomputadora se basa en el sistema x86, que es muy diferente de la placa ARM. Por supuesto, el principio es el mismo.

No entendí estos cursos hasta que entré en contacto con la programación integrada.

(2) Cada libro es muy grueso y contiene mucho contenido. El tiempo de aprendizaje es demasiado largo y el autoestudio es difícil.

En vista de las deficiencias de estos materiales didácticos del campus, combinados con los puntos de conocimiento que se utilizarán en el proceso de desarrollo real, lanzamos la serie de videos "Preescolar_Cómo leer diagramas":

Preescolar Clase 1 No. 1 Duan_ _¿Qué opinas de los circuitos GPIO y de puerta en el diagrama esquemático?

Virus de las paperas de tipo salvaje

Preescolar 1 Sección 2.1_Cómo ver la interfaz del protocolo esquemático UART.wmv

Preescolar 1 Sección 2.2_Cómo ver la interfaz del protocolo esquemático I2C.wmv

p>

Preescolar 1 Sección 2.3_Cómo ver la interfaz del protocolo esquemático SPI.wmv

Preescolar 1 Sección 2.4_¿Cómo ver la interfaz del protocolo esquemático NAND Flash.wmv?

Preescolar 1 Sección 2.5_Cómo ver la interfaz de protocolo esquemático LCD.wmv

Preescolar 1 Sección 3_ _Cómo ver el diagrama esquemático y otras interfaces de memoria. Virus de las paperas de tipo salvaje

Preescolar 1 Sección 4.1_Cómo ver el análisis esquemático de la placa de desarrollo S3C2410. Virus de las paperas de tipo salvaje

Preescolar 1 Sección 4.2_¿Cómo analizar la placa de desarrollo S3C2440 mirando el diagrama esquemático? Virus de las paperas de tipo salvaje

Preescolar 1 Sección 4.3_¿Cómo analizar la placa de desarrollo S3C6410 mirando el diagrama esquemático? Virus de las paperas de tipo salvaje

Incluso si solo tienes conocimientos de circuitos de la clase de física de la escuela secundaria, espero que puedas comprender el diagrama esquemático y algunos protocolos de comunicación comunes a través de estos videos. Si desea adquirir más conocimientos sobre hardware, estos vídeos también pueden servirle como índice para hacerle saber qué conocimientos le faltan.

El conocimiento de hardware mencionado en estos videos se utilizará en la serie de videos "Desarrollo de placa básica", y luego todos podrán observarse entre sí y profundizar su comprensión.

2.2.4 ¿Quieres aprender a desarrollar microcontroladores bajo Windows?

Muchas escuelas ofrecen cursos de microcontroladores. Mucha gente comienza con el microcontrolador 51 y el microcontrolador AVR. Ahora, el relativamente nuevo microcontrolador STM32 ha comenzado a entrar en contacto con el campo integrado, utilizando software de desarrollo en Windows, como keil y MDK.

La pregunta es, ¿quieres aprender a desarrollar microcontroladores en Windows?

Si este es un curso obligatorio para tu especialización, entonces tómalo.

② Si ​​tu especialización está estrechamente relacionada con los microcontroladores, como el control mecánico, entonces ve y aprende.

(3) Si solo desea comenzar con los microcontroladores y luego aprender una gama más amplia de Linux integrado, ¡deje de aprender microcontroladores en Windows!

Las razones son las siguientes:

①El estudio de los microcontroladores en Windows no es lo suficientemente profundo.

Existen muy buenos software de desarrollo de microcontroladores con interfaz gráfica en Windows, como keil y MDK.

Encapsulan muchos detalles técnicos, como:

Solo puedes escribir el código de la función principal, pero no sabes cómo se ejecuta el código después de encenderlo. ;

Puedes escribir un controlador de interrupciones, pero no sabes cómo se llama.

No sabes cómo el programa lee desde Flash a la memoria;

No sabes cómo se divide y utiliza la memoria. No sé dónde está la pila ni dónde está el montón.

Cuando quieres cortar un programa para reducir el uso de Flash y memoria, no tienes idea de por dónde empezar.

Cuando creas un nuevo archivo, se agregará automáticamente al archivo; proyecto, pero no conoces completamente el mecanismo.

Espera, espera, espera

② El aprendizaje básico basado en ARM Linux puede permitirte aprender más profundamente y es más adecuado para el aprendizaje posterior de Linux. De hecho, está aprendiendo sobre microcontroladores en Linux, pero todo es relativamente primitivo: todos los códigos deben ser escritos por uno mismo y los documentos que se agregan al proyecto deben ser administrados por uno mismo;

En el trabajo, por supuesto, tendemos a utilizar herramientas más convenientes en Windows, pero en la etapa de aprendizaje tenemos que aprender la esencia del programa.

Podemos aprender más conocimientos escribiendo código y administrándolo desde cero:

Necesitamos conocer el proceso de encendido y arranque del chip y cómo funciona el código 1;

Necesita saber cómo leer el programa desde la memoria flash a la memoria;

Necesita comprender cómo se planifica y utiliza la memoria, como dónde está la pila y dónde está el montón. es;

Necesita comprender la reubicación del código;

Necesita saber cómo proteger la escena, saltar a la entrada de interrupción, llamar al programa de interrupción y restaurar la escena después de la se produce una interrupción;

Sabrá que la función principal no es la primera función que escribimos;

Sabrá cómo se ejecuta el programa desde el momento en que se enciende el chip.

Sabrás cómo se pasan los parámetros durante las llamadas a funciones;

Sabrás que cuando ocurre una interrupción, el valor de cada registro debe tratarse con cuidado;

Espera, espera, espera

Ha dominado el desarrollo básico de ARM Linux y luego, cuando regrese al desarrollo del microcontrolador en Windows, exclamará: ¡Qué simple! Y comprenderá completamente los detalles técnicos que estas herramientas no le muestran.

Controlador = Marco de software del controlador de Linux Operación del hardware de la placa de desarrollo ARM Podemos comenzar con un desarrollo simple y básico y dominar la operación del hardware primero, o podemos:

① Dominar cómo operar. en PC Linux Compile el programa, grábelo en la placa y ejecútelo.

② Sienta las bases para aprender el gestor de arranque: después de dominar varias operaciones de hardware, la siguiente combinación es el gestor de arranque.

2.2.5 ¿Por qué elegir la placa de desarrollo ARM9 S3C2440 en lugar de otras placas de desarrollo con mejor rendimiento?

Existe un concepto erróneo: S3C2440 está obsoleto y ARM9 está obsoleto.

Esto no está bien. Si es ingeniero de software, para nosotros no importa si es ARM9, ARM11, A8 o A9.

Un chip con una CPU y muchos dispositivos en el chip (como UART, USB, controlador LCD). Cuando escribimos un programa, la CPU no participa, solo se operan los dispositivos en el chip.

Entonces: la diferencia radica en el dispositivo en el chip, no en el núcleo de la CPU; la diferencia radica en las diferentes operaciones de registro.

Debido a que nuestro controlador de escritura no involucra el núcleo de la CPU, solo opera dispositivos distintos de la CPU y solo lee y escribe los registros de estos dispositivos.

Se recomienda S3C2440 porque tiene los materiales de aprendizaje más completos sobre Linux, incluidos los videos de soporte No. 1 y No. 2.

2.2.6 Cómo aprender el desarrollo básico de ARM ¿Linux?

Aprender el desarrollo bare metal tiene dos propósitos:

① Dominar la estructura del programa bare metal y prepararse para el posterior u-boot.

②Practique conocimientos de hardware, es decir, cómo leer diagramas esquemáticos e instrucciones de chip, y cómo escribir código para operar hardware.

El siguiente u-boot puede considerarse como una colección de programas básicos. Podemos dominar todos los componentes uno por uno en el desarrollo básico y luego ensamblarlos para obtener un u-boot.

El desarrollo posterior de controladores también implica operaciones de hardware. El desarrollo bare metal puede aprender conocimientos de hardware.

Nota: Si no le importa la estructura básica del programa y la implementación del gestor de arranque, puede omitir esta parte primero. En el vídeo del controlador a continuación, también volveremos a explicar los conocimientos de hardware involucrados.

Se recomiendan dos libros: "Arquitectura y programación ARM" de Du Chunlei y "Manual completo de desarrollo de aplicaciones Linux integradas" de Wei Dongshan. Este último puede ser el primer libro sobre programas ARM bare metal desarrollados en el entorno doméstico de PC Linux. Si me equivoco, perdónenme por mi falta de lectura.

Para el desarrollo bare metal, proporcionamos dos videos:

①Construcción del entorno

Lección 0, Sección 1_El cableado de la interfaz apenas toca la placa de desarrollo. Virus de las paperas de tipo salvaje

Lección 0, Sección 2_Escribir un programa básico para una nueva placa de desarrollo.

Virus de las paperas de tipo salvaje

Lección 0 Sección 3_Reincendie todo el sistema inmediatamente después de tocar la placa de desarrollo. Virus de las paperas de tipo salvaje

Lección 0, Sección 4_Utilice vmwae y ubuntu.wmv recién agregados en la placa de desarrollo.

Lección 0, Sección 5_Parchear, compilar y usar u-boot que es nuevo en la placa de desarrollo y construir el proyecto sourceinsight. Virus de las paperas de tipo salvaje

Lección 0, Sección 6_Parchear, compilar y usar u-boot, nuevo en el núcleo de la placa de desarrollo, construir el proyecto sourceinsight. Virus de las paperas de tipo salvaje

Lección 0, Sección 7_Cómo crear el sistema de archivos raíz y el controlador de arranque de la placa de desarrollo. Virus de las paperas de tipo salvaje

Lección 0 Sección 8_Construcción de un sistema de vídeo en TQ2440 y MINI 2440. Virus de las paperas de tipo salvaje

Lección 0 Sección 9_Win7 no puede utilizar el método alternativo de grabación dnw. Virus de las paperas de tipo salvaje

............Incompleto.

Enlace original: enlace web