Red de conocimiento informático - Conocimiento informático - ¿Cómo aprender integrado por ti mismo?

¿Cómo aprender integrado por ti mismo?

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, nuestra clase generalmente estaba llena de inquietud sobre el futuro. No sabíamos qué podíamos hacer después de estudiar física. Tus experiencias actuales y tu aprendizaje actual definitivamente te afectarán algún día en el futuro. Después de graduarnos, cada uno de nosotros encontró su propia carrera: estudiar en el extranjero y cambiar de carrera en finanzas, permanecer en la escuela para enseñar y realizar investigaciones científicas, diseñar chips, escribir programas, iniciar empresas, etc., todo lo cual es inseparable de las habilidades básicas ( matemáticas) aprendidas en la escuela, TI, circuitos electrónicos), capacidad de autoaprendizaje bien entrenada.

Entonces, para todos los estudiantes y programadores actuales confundidos que están tratando de cambiar de carrera, definitivamente habrá un lugar para ustedes 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 siguiendo este artículo. Solo soy un programador con más de diez años de experiencia y me gustaría brindarles algunos consejos a quienes estén interesados ​​en la programación. 1. Las tres direcciones principales de los programadores

Las direcciones de los programadores generalmente se pueden dividir en tres categorías: campo profesional, campo empresarial y campo de sistemas operativos. Una vez que los conozcas, elige según tus intereses.

No puedo dar asesoramiento en el ámbito profesional.

Los negocios, es decir, las aplicaciones, no están completamente separados del sistema operativo:

① Al desarrollar productos físicos, las personas que escriben bien las aplicaciones a veces necesitan el conocimiento del sistema operativo, como programar configuraciones de prioridad y saber que ciertas funciones pueden hacer que el proceso entre en suspensión.

② Cuando la persona que escribe la aplicación se convierte en ingeniero de sistemas, debe comprenderla de arriba a abajo. En este momento, debe tener conocimientos en el campo del sistema operativo. ¿Diseñar toda la solución del sistema?

③ Las personas que crean aplicaciones deben comprender las necesidades de la industria y la lógica del negocio. Por lo tanto, las personas que son líderes en su mayoría hacen aplicaciones. Una vez que ingresas a una determinada industria, es difícil cambiar de industria.

④ En cuanto al campo del sistema operativo, una vez hecho, acabará con todas las industrias: él solo es responsable del sistema subyacente y no tiene nada que ver con el negocio que se desarrolla en él. Muchos en esta industria son fanáticos de la tecnología y expertos de la industria.

⑤ No existen límites entre el sistema operativo y el negocio. Si tiene experiencia en sistemas operativos y luego comienza a aplicarlos, tendrá un conocimiento profundo del sistema y tendrá soluciones a los problemas cuando los encuentre. Con experiencia empresarial y conocimiento del sistema operativo, pronto podrá formar un equipo y comenzar su propio negocio, al menos como CTO. 1.1 Ámbito profesional

Se puede 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 conocimientos teóricos relativamente sólidos, tiendo a pensar en estas personas. como "científicos" "Han estado estudiando durante muchos años, a menudo realizando investigaciones académicas.

En el campo integrado, sus resultados deben expresarse en un determinado algoritmo y optimizarse para un determinado chip. Es posible que haya personal dedicado a realizar esta parte del trabajo.

1.1.2 Implementación de Ingeniería

También hay un tipo de personas que entienden los conceptos de estos campos profesionales, pero no profundizan en ellos. Puede utilizar varios materiales de código abierto para lograr un objetivo determinado y crear productos. Por ejemplo, en el procesamiento de imágenes, sabe cómo utilizar cientos de funciones complejas en opencv para realizar el reconocimiento de avatares. A veces, estas funciones también se pueden optimizar en función de chips específicos.

Los "campos profesionales" no son lo mío. Si quieres hacer esto, creo que la mejor manera de comenzar es estudiar cursos de posgrado o doctorado en la escuela. 1.2 Campo empresarial

En otras palabras, es la aplicación, que se puede dividir en las dos categorías siguientes.

1.2.1 Visualización de la interfaz

Por supuesto, hacer un producto requiere una buena interfaz, pero esto no significa que no sea importante, pero tiene poco potencial de desarrollo.

Las palabras clave ahora son desarrollo de aplicaciones para Android y aplicaciones para IOS. No se deje engañar por las palabras Android e IOS. Son lo mismo que los VC y VB anteriores. Son solo la implementación de 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). Pero la lógica empresarial dentro del programa, el procesamiento de imágenes y sonidos de vídeo, etc., son el núcleo. 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 miles o millones de accesos simultáneos, etc. Este también es el núcleo.

Sin embargo, ¡es muy rápido comenzar con la aplicación Android e IOS! Si estás en el último año de la universidad y estás ansioso por encontrar un trabajo, entonces debería ser fácil encontrar trabajo 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 son bastante populares ahora. Alrededor de 2011 y 2012, el salario inicial de los programadores de Android era bastante alto y luego comenzó a disminuir. Comenzar con la aplicación de Android básicamente solo lleva 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 se hicieron populares varios tipos de capacitación en IOS. A la tierra de China nunca le han faltado talentos que puedan crecer rápidamente. Se estima que los ingenieros de IOS serán baratos en un tiempo.

Estar familiarizado con Android e IOS es solo un requisito básico. Si no me crees, ve a 51job y busca Android o IOS. Debe haber otros requisitos en los requisitos del trabajo.

1.2.2 Lógica de Negocios

Para un ejemplo simple, si está creando un software de registro, debe considerar estas cosas:

①Lo normal El proceso es comenzar a trabajar y salir del trabajo. Necesito registrarme

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

③¿Cómo manejar las solicitudes de licencia?

④¿Cómo afrontar las horas extras?

Para ejemplos más complejos, en el sistema de videoconferencia, cómo se conectan los distintos módulos y cómo son compatibles los distintos protocolos, no podrá comprenderlo a menos que profundice en esta industria.

Siempre hay la mayor cantidad de trabajos en el desarrollo de aplicaciones y la barrera de entrada también es baja. Básicamente, siempre que conozca el lenguaje C y se desempeñe bien durante la entrevista, la mayoría de las empresas le darán una oportunidad. Porque:

①Después de incorporarse a la empresa, es necesario volver a capacitarse: familiarizarse con su lógica empresarial.

② Lo que tienes que hacer es básicamente que cada módulo haya decidido el marco por ti y tú solo tienes que completar el código.

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

Si su ambición es escribir aplicaciones, le sugiero que primero practique las habilidades básicas: las estructuras de datos y los algoritmos son esenciales, y luego elija bases de datos, programación de redes, etc. según sus intereses para profundizar. estudiar.

Finalmente, elija una industria que le interese y sea optimista y trabaje duro durante 10 años. Las personas que desarrollan aplicaciones han elegido una determinada industria y será difícil cambiar de industria más adelante. ¡Elegir una industria es muy importante! 1.3 Campo del sistema operativo

UCOS es demasiado simple, VxWorks es demasiado caro y profesional, Windows ya no está integrado y IOS no es de código abierto, por lo que en el campo del sistema operativo solo podemos jugar con Linux.

¡Linux domina el campo integrado!

¿Qué pasa con Android? Android, como QT, es un sistema GUI. Es solo que Google es demasiado poderoso. Ahora Android está en todas partes, por lo que Linux Android se ha convertido en el estándar en muchos casos. Tenga en cuenta que lo que nos importa aquí es todo el sistema Android y los mecanismos internos, en lugar de aprender algunas API y luego desarrollar programas de interfaz.

El contenido incluido en el campo de los sistemas operativos, en pocas palabras, es crear una "computadora" especial con un sistema instalado, que se puede dividir en:

①Planificación de hardware para el producto:

Seleccione el chip principal según la demanda, el rendimiento y el costo, combínelo con los periféricos y deje que los desarrolladores de hardware lo diseñen.

② Cree, instale el sistema operativo y escriba controladores para placas individuales

③ Personalice las soluciones del sistema, como mantenimiento y actualizaciones

④ Es posible que también necesite configurar e instalar Android, etc. Sistema GUI:

⑤Configurar el entorno de desarrollo para desarrolladores de aplicaciones

⑥Resolver problemas difíciles desde una perspectiva del sistema

Este campo generalmente se denomina "sistema subyacente" o "desarrollo impulsado".

Primero resuelva 2 malentendidos comunes:

①¿Este trabajo consiste en escribir programas de controladores?

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

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

Algunas personas suelen decir que el fabricante del chip original ya ha preparado el controlador, por lo que puedes traerlo y modificarlo. Si su hardware es exactamente el mismo que el de la placa pública original, y el código fuente original no tiene errores y no desea optimizar el rendimiento, reducir costos o crear algunos productos únicos, entonces esto es correcto.

Pero en esta era donde no innovar es buscar la muerte, ¿es posible? ! Hay dos razones:

① Incluso si simplemente modifica el código, el requisito previo para poder modificarlo es que pueda comprenderlo, la mejor manera de mejorar su comprensión es escribir varios controladores desde cero; .

② Muchas veces, es necesario personalizar profundamente el sistema.

En el pasado, los teléfonos móviles MediaTek sólo necesitaban cambiar la interfaz antes de poder ser enviados. Ahora, las fábricas imitadoras están cayendo una tras otra. Cuando todos usan la solución original sin modificaciones, terminan teniendo que pagar el costo.

Por ejemplo, hay dos fabricantes de cámaras de tráfico y cámaras de vigilancia en Shenzhen que me han pedido que haga 4 proyectos:

①Mejorar el rendimiento del controlador de la tarjeta SD proporcionado por el fabricante. fabricante, utilizando DMA.

②Después de cambiar el modelo de Flash, el sistema a menudo encuentra problemas y necesita modificar el error del controlador.

③La pantalla táctil hace clic incorrectamente. Busqué la causa y luego descubrí que era causada por el condensador de derivación.

④ Para reducir costos, reemplace 4 piezas de DDR con 2 piezas de DDR. Debe cambiar la inicialización de DDR mediante el gestor de arranque.

Estos proyectos son muy urgentes y no se pueden enviar hasta que estén terminados. ¿Qué tal si buscamos al fabricante original en este momento? A menos que sea un gran cliente como ZTE y Huawei, ¿quién se preocupará por usted?

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, ayudar a los ingenieros de aplicaciones en la parte superior y a los ingenieros de hardware en la parte inferior 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 que los datos de la cámara se puedan enviar directamente al DSP a través de DMA. Podemos actuar como un puente entre el software y el hardware. Para los productos físicos, puede haber problemas de software o hardware. Generalmente, es más fácil para el ingeniero del sistema subyacente encontrar el problema.

Cuando hay problemas con las aplicaciones de hardware y software que no pueden resolver, les damos ideas y les proporcionamos herramientas desde la perspectiva del software subyacente. Otro ejemplo es la selección de la solución: si el rendimiento del chip está a la altura del estándar, si el BSP disponible está completo, etc. Esto sólo puede ser considerado por la persona a cargo de toda la solución, quien debe comprender la capa subyacente.

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

①Comprender conocimientos de hardware para comprender los diagramas de circuitos

②Tener buen inglés y poder leer manuales de chips

③Tener la capacidad de escribir y trasplantar controladores

④Tener cierta comprensión del sistema operativo para resolver varios problemas difíciles

⑤Comprender el Mecanismo interno de Android

p>

⑥Comprender ensamblador, lenguaje C, C y JAVA

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

① Empezar en esta industria definitivamente lleva más de medio año, incluso si estudias a tiempo completo.

② Sus puestos son definitivamente menores que los de APP

③ Y no tienes 1 o 2 años de experiencia. Después de reclutarte para la empresa, seguirás trabajando como. APLICACIÓN al principio.

Las ventajas son:

① Después de aprender bien, estará familiarizado con la industria. Si desea cambiar de carrera, puede cambiar de carrera si desea crear la suya propia. productos, luego haga sus propios productos.

② En comparación con las personas que presentan solicitudes, no se ven obligadas a trabajar horas extras todos los días debido a demandas que cambian con frecuencia.

③El umbral es alto y, por supuesto, el salario es relativamente alto.

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

①Los ingenieros de hardware quieren convertirse en ingenieros de software, sería mejor comenzar con software de bajo nivel.

②Ingenieros de MCU, quieren actualizar. Las personas que conocen los conceptos básicos de Linux definitivamente conocerán los microcontroladores, pero es posible que las personas que conocen los microcontroladores no necesariamente conozcan Linux.

③Estudiantes con tiempo suficiente: si estás en tu segundo o tercer año de universidad, será beneficioso pasar la primera mitad del año aprendiendo las capas subyacentes de Linux integrado.

④ Personas que quieran dominar todo el sistema. Por ejemplo, si está escribiendo 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 los conceptos básicos de Linux.

⑥Las personas que crean aplicaciones de Linux, sí, también necesitan aprender.

Estas personas no necesitan profundizar, solo 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, qué hace y qué hace cada uno). directorio se utiliza), APP Siempre que tenga estos conceptos sobre la relación de llamada con el controlador y la cadena de herramientas

En este artículo, el sistema operativo será Linux de forma predeterminada y cómo aprender el sistema integrado. Sistema Linux Android. 1.4 ¿Qué incluye el sistema Linux Android integrado?

¿Qué incluye el sistema Linux integrado? No te preocupes, dame un ejemplo y lo sabrás.

①Cuando se enciende la computadora, ¿quién muestra esas interfaces?

Es BIOS, ¿qué hace? Algunas pruebas automáticas, luego leen ventanas desde el disco duro y lo inician.

De manera similar, esta BIOS corresponde al gestor de arranque en Linux integrado. Este gestor de arranque leerá el kernel de Linux desde Flash y lo iniciará.

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

Por supuesto, ejecutar aplicaciones para navegar por Internet, chatear, etc.

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

En la unidad C y en la unidad D.

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

③Si Windows puede reconocer la unidad C y la unidad D, entonces debe tener la capacidad de leer y escribir en el disco duro.

A esta capacidad la llamamos controlador. Por supuesto, no se trata sólo de discos duros, sino también de 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 contiene cinco partes principales: gestor de arranque, kernel, controlador, sistema de archivos raíz y programa de aplicación. En cuanto a aplicaciones, podemos dividirlas en: C/C y Android.

Entonces, el sistema Android Linux integrado incluye las siguientes 6 partes:

①cargador de arranque

②kernel de Linux

③Controlador

④Aplicaciones escritas en C/C

⑤El propio sistema Android

⑥Aplicaciones de Android

La conexión entre Android y Linux es realmente enorme. Sus aplicaciones están muy extendidas. que después de aprender Linux, no hay razón para detenerse y no aprender Android. La mayoría de los dispositivos inteligentes ejecutan un sistema operativo Linux; tienen Android instalado o pueden conectarse a 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 ningún conocimiento básico y se centra en la practicidad para comenzar lo más rápido posible. También habrá materiales adjuntos que puede consultar; si quieres aprender en profundidad.

En el trabajo real, nos dedicamos al desarrollo de periféricos del "sistema operativo" y no estudiamos ni modificamos demasiado el sistema operativo en sí.

① El sistema operativo tiene funciones como gestión de procesos, gestión de almacenamiento, gestión de archivos y gestión de dispositivos. Estas funciones principales son muy estables y confiables y básicamente no requieren que modifiquemos el código. Solo necesitamos mejorar el controlador de nuestro propio hardware

② Al aprender el controlador, inevitablemente estarán involucrados otros conocimientos, como la gestión del almacenamiento y la programación de procesos. Cuando comprenda profundamente el controlador, también profundizará su comprensión de otras partes del sistema operativo.

③La mayoría de los códigos en el kernel de Linux son controladores de dispositivos. Se puede considerar que el kernel de Linux está compuesto por. varios tipos de controladores

Sin embargo, para convertirse en un maestro en este campo, debe tener un conocimiento profundo del propio sistema operativo Linux y estudiar su código fuente.

Después de terminar tu trabajo y tener tiempo libre, puedes leer estos libros:

① "Notas completas sobre el kernel de Linux" de Zhao Jiong. Este libro es relativamente delgado, lo recomiendo. este libro. Más tarde publicó "Análisis completo del kernel de Linux", que era tan denso que es posible que olvides la parte anterior después de leerla.

② "Análisis de escenarios de código fuente de LINUX Core" de Mao Decao y Hu Ximing Este libro está dividido en dos volúmenes y es extremadamente grueso. Simplemente léelo como un diccionario: si quieres comprender en profundidad un determinado aspecto del conocimiento, lee un capítulo determinado.

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

Con el fin de comenzar rápidamente y comenzar. No es necesario que lea los libros anteriores primero. Aprenda de este artículo. 2.1 Hoja de ruta de introducción

Suponiendo que no tiene ningún conocimiento, hemos planificado la siguiente hoja de ruta de introducción. Los conocimientos previos son la base para los siguientes conocimientos. Se recomienda estudiar en orden. No es necesario estudiar cada parte en profundidad y se describe a continuación en capítulos. 2.2 Conocimientos básicos antes de aprender a conducir

2.2.1 Lenguaje C

Cualquiera que se especialice en ciencias e ingeniería parece enseñar lenguaje C. He visto a muchas personas que obtuvieron 90 o 100 puntos en el examen de lenguaje C. Se quedaron atónitos tan pronto como se subieron a la computadora. Dudo que alguna vez hayan escrito un programa en una computadora.

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

Por otro lado, la práctica aporta verdadero conocimiento. ¡Para aprender el lenguaje C, debes practicar, practicar y escribir!

Después de dominar la sintaxis básica, puede practicar algunos ejercicios de lenguaje C en la computadora;

Después de haber escrito varios programas en C, puede pasar a la siguiente etapa de desarrollo bare metal. .

①No es necesario profundizar demasiado

Como comienzo rápido, siempre que puedas escribir "¡Hola, mundo!", escribir clasificación de burbujas y conocer algunas operaciones gramaticales básicas, es 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 y no No es necesario aprender otras cosas, como colas, árboles binarios, etc. No es necesario aprender ninguna función, no es necesario aprender el uso de ninguna función, como operaciones de archivos, programación multiproceso, redes; programación, etc.; estos conocimientos se utilizarán al escribir aplicaciones de Linux, pero no son necesarios para aprender sistemas operativos, especialmente controladores.

Simplemente sigue adelante. Si encontramos problemas del lenguaje C que no entendemos en el futuro, volveremos y los aprenderemos nuevamente.

En el "desarrollo básico" posterior, continuará practicando el lenguaje C, que será más práctico.

El lenguaje C se perfecciona en la escritura de código.

② Puede aprender en Visual Studio o Linux. Este último requiere dominar algunos comandos de compilación. Por el momento, no proporcionamos tutoriales sobre el lenguaje C. Encuentre un libro sobre el lenguaje C de forma gratuita. Video de idioma (principalmente sobre cómo configurar el entorno), puede aprenderlo usted mismo.

2.2.2 Operaciones básicas de PC Linux:

Para PC Linux, recomendamos usar Ubuntu, ya que es muy fácil instalar software en él.

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 de Ubuntu ya es muy fácil de usar. Podemos comenzar rápidamente con varios teléfonos inteligentes. Creo que el sistema de escritorio de Ubuntu también puede ayudarlo 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 tan simples que simplemente los enumeraré:

①cd: Cambiar directorio (cambiar directorio).

nombre del directorio cd? // Introduce un directorio cd .. // cd "dos puntos": vuelve al directorio anterior cd - // cd "dash": vuelve al último directorio

②pwd: Imprimir directorio de trabajo (imprime el directorio actual para mostrar la ruta absoluta del directorio de trabajo actual)

③mkdir: Crear directorio (crear directorio)

mkdir abc // Crear carpeta abcmkdir -p a/b/c // Crea la carpeta a, luego crea la carpeta b en a y luego crea la carpeta c en b

④rm: Eliminar (eliminar directorio o archivo)

rm ?file // Eliminar el archivo llamado file rm -rf dir ? // Eliminar el directorio llamado dir

⑤ls: Lista (enumerar el contenido del directorio)

⑥mount: Montar

mount -t nfs -o nolock, vers=2 192.168.1.123:/work/nfs_root /mntmount -t yaffs /dev/mtdblock3 /mnt

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

libro chown: libro /work -R ?// Para el directorio /work y todo el contenido que contiene, el propietario se cambia a usuario del libro

⑧chmod: Cambiar modo (cambiar permisos), el siguiente ejemplo es muy simple y crudo

chmod 777 /work -R ?// Para el /work. directorio y todo lo que hay debajo. El contenido y los permisos se cambian a legibles, escribibles y ejecutables

⑨vi: el comando de edición más utilizado en Linux, su uso es un poco complicado, busque el uso usted mismo.

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

2.2.3 Conocimiento de hardware

El propósito de aprender conocimientos de hardware es poder comprender el diagrama esquemático, comprender el protocolo de comunicación y comprender el manual del chip que no buscamos; poder diseñar el diagrama esquemático, pero tampoco es necesario poder diseñar placas de circuito.

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

① Estudia los "Principios de las microcomputadoras" y comprende la composición de una computadora y los principios de interacción de varios componentes.

② Estudie "Circuitos digitales", comprenda los principios y usos de varios circuitos de puerta y domine algunas operaciones lógicas (Y, O, etc.).

③ ¿"Circuito analógico"? Bueno, no es necesario aprender esto, al menos básicamente no lo uso en mi trabajo y ahora lo he olvidado por completo.

En lo que respecta a mi experiencia personal, estos cursos son útiles, pero:

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

Por ejemplo, "Principios de microcomputadoras" se basa en el sistema x86, que es muy diferente de la placa ARM, pero por supuesto los principios son los mismos.

Solo entendí estos cursos después de que entré en contacto con la programación integrada.

② Cada libro es muy grueso y contiene mucho contenido. El tiempo de estudio es demasiado largo y el autoestudio es difícil.

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

Lección 1 para preescolar, Sección 1___Cómo ver el diagrama esquemático de GPIO y el circuito de puerta.wmv

Lección 1 para preescolar, Sección 2.1_Cómo ver el diagrama esquemático de la interfaz de protocolo UART.wmv

Lección 1 para preescolar, Sección 2.2_Cómo leer la interfaz del protocolo I2C.wmv en el diagrama esquemático

Lección 1 para preescolar, Sección 2.3_Cómo leer la interfaz del protocolo SPI en el diagrama esquemático<. /p>

Lección 1 para preescolar, Sección 2.4_Cómo leer la interfaz de protocolo del diagrama esquemático - NAND Flash.wmv

Lección 1 para preescolar, Sección 2.5_Cómo leer el protocolo del diagrama esquemático Clase Interface LCD.wmv

Lección 1 para preescolar Sección 3___Cómo ver el diagrama esquemático de Memory Class Interface.wmv

Lección 1 para preescolar Sección 4.1_Cómo verlo Análisis del diagrama esquemático de la placa de desarrollo S3C2410 .wmv

Clase de preescolar 1.a sección 4.2_Cómo leer el análisis de diagramas esquemáticos de la placa de desarrollo S3C2440.wmv

Clase de preescolar 1.a sección 4.3_ Cómo leer el análisis de diagramas esquemáticos de la placa de desarrollo S3C6410.wmv

Incluso si solo tienes conocimientos de circuitos de la clase de física de la escuela secundaria, espero que a través de estos videos puedas comprender los diagramas esquemáticos y comprender algunos protocolos de comunicación comunes si deseas dominar más conocimientos de hardware; Los vídeos también pueden servir como índice para hacerle saber qué conocimientos le faltan.

Los conocimientos de hardware mencionados en estos vídeos se utilizarán en la serie de vídeos "Desarrollo de placa básica" y podrá compararlos entre sí para profundizar su comprensión.

2.2.4 ¿Quieres especializarte en aprender a desarrollar microcontroladores en Windows?

Muchas escuelas han abierto cursos sobre microcontroladores. Mucha gente ha aprendido de 51 microcontroladores y microcontroladores AVR, que son. Los microcontroladores STM32, relativamente nuevos ahora, comenzaron a entrar en contacto con el campo integrado y utilizaron software de desarrollo en Windows, como keil, MDK, etc.

La pregunta es, ¿deberíamos aprender específicamente a desarrollar microcontroladores en Windows?

①Si este es un curso obligatorio para tu especialidad, entonces apréndelo

②Si tu especialidad está estrechamente relacionada con los microcontroladores, como el control mecánico, etc., entonces apréndelo

③Si solo desea comenzar con los microcontroladores y luego aprender el Linux integrado más amplio, ¡deje de aprender microcontroladores en Windows!

Las razones son las siguientes:

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

Existe un buen software de desarrollo de microcontroladores con interfaz gráfica en Windows, como Keil, MDK, etc.

Encapsulan muchos detalles técnicos, como:

Solo comenzarás a escribir código desde la función principal, pero no sabes cómo se ejecuta el primer código después de encender. on;

p>

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

No sabes cómo se lee el programa. Flash en la memoria;

No sé cómo se divide y usa la memoria, y no sé dónde está la pila y dónde está el montón;

Cuando quieras para recortar el programa para reducir el uso de Flash y memoria, no tienes idea de por dónde empezar;

Cuando creas un nuevo archivo, se agrega automáticamente al proyecto, pero no comprendes el mecanismo en absoluto;

Espera y así sucesivamente.

②Basado en el aprendizaje básico de ARM Linux, puede aprender más profundamente y ser más adecuado para el aprendizaje posterior de Linux. De hecho, es un aprendizaje de microcontroladores en Linux, pero todo es más primitivo: usted mismo debe escribir todo el código y administrar qué archivos se agregan al proyecto;

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

Escribir código y administrar código desde cero nos permite adquirir más conocimientos:

Es necesario comprender el proceso de encendido y arranque del chip y saber cómo se ejecuta el primer código;

Necesita dominar cómo leer programas desde Flash en la memoria;

Necesita comprender cómo planificar y utilizar la memoria, como dónde está la pila y dónde está el montón;

Necesita comprender la reubicación del código;

Necesita saber cómo el software y el hardware protegen la escena después de que ocurre una interrupción, saltar a la entrada de interrupción, llamar al programa de interrupción y restaurar la escena;

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

Sabrás cómo se transfiere y ejecuta el programa desde el momento en que se instala el chip. encendido;

Sabrá que durante la llamada a la función, cómo se pasan los parámetros;

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

Y así sucesivamente.

Después de dominar el desarrollo básico de ARM Linux y luego regresar y observar el desarrollo de microcontroladores en Windows, exclamará: ¡Cómo puede ser tan simple! Y comprenderá completamente los detalles técnicos que estas herramientas no le muestran.

Controlador = operación de hardware de la placa de desarrollo ARM del marco de software del controlador de Linux. Podemos comenzar con un desarrollo básico simple, primero dominar la operación del hardware y también:

① Dominar cómo compilar el programa en PC Linux, grabe el programa en la placa y ejecútelo

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

2.2. 5 ¿Por qué elegir la placa de desarrollo ARM9 S3C2440 en lugar de otras con mejor rendimiento?

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

Esto está mal. Si es ingeniero de software, para nosotros no hay diferencia si es ARM9, ARM11, A8 o A9.

Un chip tiene una CPU y numerosos dispositivos integrados en el chip (como UART, USB, controlador LCD). Cuando escribimos programas, no involucramos a la CPU, simplemente operamos esos dispositivos en el chip.

Entonces: la diferencia radica en el dispositivo en el chip, no en el núcleo de la CPU;

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.

La razón por la que se recomienda S3C2440 es que tiene los materiales de aprendizaje de Linux más abundantes y videos de soporte para los números 1 y 2.

2.2.6 Cómo aprender el desarrollo bare metal de ARM Linux

El propósito de aprender el desarrollo bare metal es doble:

① Dominar la estructura bare metal programas y prepararse para el posterior Prepárese para u-boot

②Practique el conocimiento del hardware, es decir: cómo leer diagramas esquemáticos, manuales de chips y cómo escribir código para operar el hardware

El El siguiente u-boot puede considerarse un programa bare metal. Una colección de componentes. Dominamos cada componente uno por uno durante el desarrollo bare metal y luego los juntamos para obtener un u-boot.

El desarrollo posterior de controladores también implica operaciones de hardware. Puede adquirir conocimientos de hardware en el desarrollo básico.

Nota: Si no le importa la estructura básica del programa o la implementación del gestor de arranque, puede omitir esta parte por ahora. En los siguientes videos de controladores, 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 en China que involucra programas ARM bare metal desarrollados en un entorno de PC Linux. Si me equivoco, perdónenme por no haber leído suficientes libros.

Para el desarrollo bare metal, proporcionamos 2 partes de videos:

①Configuración del entorno

Lección 0, Sección 1_Nuevo en el cableado de interfaz de la placa de desarrollo wmv.

Lección 0, Sección 2_Nuevo en la placa de desarrollo, grabando el programa de la placa básica.wmv

Lección 0, Sección 3_Nuevo en la placa de desarrollo, volviendo a grabar todo el sistema .wmv

Lección 0, Sección 4_Nuevo en la placa de desarrollo: uso de vmwae y ubuntu.wmv prefabricado

Lección 0, Sección 5_Nuevo en la placa de desarrollo u-boot se parchea, compila, usa y Se construye el proyecto sourceinsight.wmv

Lección 0, Sección 6_Nuevo en el núcleo de la placa de desarrollo. Se parchea, compila y utiliza u-boot y se construye el proyecto sourceinsight.wmv

Lección 0, Sección 7_Nuevo en la placa de desarrollo, creación de un sistema de archivos raíz y controlador preliminar.wmv

Lección 0, Sección 8_Construcción de un sistema de video en TQ2440, MINI2440.wmv

Lección 0, Sección 9_Método alternativo de programación dnw que no se puede utilizar en win7.wmv

.............No completado

Enlace original: enlace web