Aprende primero los cursos básicos y comienza desde este aspecto.
El camino del aprendizaje integrado es un proceso largo e interesante. La diversión proviene de la sensación de logro que surge con la acumulación de conocimiento, pero la duración proviene del hecho de que, en comparación con el software, todavía hay un camino por recorrer. cierto umbral para empezar.
Pero asegúrese de no estudiar solo, porque el camino de aprendizaje mencionado anteriormente es largo y gradualmente se vuelve más difícil. Siempre hay cosas que una persona no comprende y que le resultan oscuras y difíciles de comprender. Necesito que alguien lo discuta. Tenga en cuenta que se trata de una discusión, no solo de pedir consejo a los demás. Cuando encuentre problemas, primero debe buscar información en Internet, estudiar y pensar primero, y luego pedir consejo a los demás. Por lo tanto, se recomienda encarecidamente encontrar una o dos personas con la misma dirección en la vida real para estudiar juntas. Es más conveniente unirse a un club de microcontroladores para crear una atmósfera de aprendizaje.
1. Cursos básicos
Lenguaje 1.1C
No describiré los puntos de conocimiento específicos en detalle aquí. Después de todo, hay libros y videos sobre C. idioma Hay muchos tutoriales en línea y amplios recursos de aprendizaje.
Sin embargo, aquí se sugiere que la base del lenguaje C debe ser sólida. El método más simple es el método utilizado por las escuelas secundarias para abordar el examen de ingreso a la universidad: las tácticas del mar de preguntas. De hecho, significa hacer cada ejercicio de C al final del libro de lenguaje C una vez, escribirlo, pensarlo y depurarlo usted mismo. Esto ejercitará enormemente tus habilidades básicas de codificación. Si cree que los ejercicios al final del libro de texto en lenguaje C son demasiado simples y no difíciles, puede cambiar a LeetCode.
1.2 Circuito Digital
Para ser honesto, no recuerdo los detalles específicos, pero lo más básico es que necesitas saber cómo la puerta Y o NO implementa la lógica combinacional. la salida de la lógica combinacional se retroalimenta a la entrada. Como entrada de la siguiente lógica, se forma un circuito secuencial y, además, se domina el método de análisis de la lógica secuencial, también es necesario dominar el principio de a; circuito como un pestillo de datos que no pierde datos cuando se apaga.
Personalmente, creo que lo principal que debemos aprender sobre la electricidad es comprender los siguientes puntos: Con el progreso de la civilización humana, hemos descubierto que las uniones PN tienen conductividad unidireccional y hemos fabricado diodos a partir de este.
Debido a la conductividad unidireccional del diodo, se creó un circuito de puerta Y o NO. (Comprenda cómo los diodos forman puertas lógicas Y o NO) Después de que la gente creó la lógica Y o NO, descubrieron que la lógica en el mundo solo es complicada sobre esta base. Puede usar puertas AND o NOT para implementar sumador, desplazador, codificador, decodificador y otra lógica combinacional que desee implementar (domine el método de diseño de lógica combinacional a través de circuitos de puerta).
Pero la lógica en la vida real a menudo no es tan simple como la lógica combinatoria. Termina cuando la entrada se convierte en salida. A menudo, el último resultado afectará el siguiente procesamiento. De esta manera se introdujo el surgimiento de la lógica secuencial, que también trajo el concepto de reloj. (Domine el método de análisis de circuitos secuenciales retroalimentando la salida de la lógica combinacional a la entrada del siguiente reloj).
Todo lo anterior se genera en tiempo real, es decir, la salida correspondiente se puede obtener al mismo tiempo que la entrada. Una vez que la entrada ya no esté disponible, la salida se perderá. No hay forma de guardar los datos. Entonces la gente usó circuitos de puerta para crear flip-flops RS y memorias PROM que pueden retener datos. (Domine el principio del circuito de la memoria y cómo acceder a ella mediante la sincronización del bus).
Después de comprender con precisión el contenido anterior, en cursos posteriores sobre principios de microcomputadoras, encontrará que la unidad central de la CPU es una lógica secuencial compleja y los recursos periféricos son todos lógica combinacional o una caja negra envuelta. en lógica secuencial.
1.3 Alojamiento de código
Uso de herramientas Git y GitHub. Guarde una copia del código en Github para reutilizarlo en el futuro. Poco a poco irás descubriendo que el código que organices es la mejor nota. El tutorial de git recomienda el tutorial de git de Liao Xuefeng, que es simple y fácil de entender. Si estás en China, puedes considerar una casa rural.
Dame algún consejo. Para una lógica compleja, debería haber comentarios necesarios en las notas del código. Es mejor tener un estilo de codificación unificado y estandarizado. Al escribir código, debe tener tanta confianza como Lei Jun. "El código que escribo es tan elegante como la poesía". Herramienta de formato de estilo de código. Muchos editores tienen funciones de formato de código integradas, como VSCode.
También puedes formatear manualmente usando CoolFormat.
2. Curso introductorio
2.1 Microcontrolador
Para ser honesto, el software de simulación actual de Proteus es muy poderoso y es muy útil usarlo para aprender. 51 libros, tutoriales y ejemplos. Muchos, muy adecuados para aprender. Pero aún así te recomiendo que si realmente quieres estudiar, vayas a Taobao a comprar una placa y un módulo de desarrollo físico. Si eres un estudiante con recursos económicos medios, puedes ir a Xianyu y comprar una placa de segunda mano, y es gratis. el envío no excederá los 50.
¿Por qué se recomienda comprar el producto real? Debido a que, después de todo, la simulación de Proteus es simulación, los requisitos de voltaje, temporización de señales, etc. en muchos hardware no son tan estrictos como los circuitos reales, o no son lo suficientemente estrictos. Al igual que si la sincronización de i2c no cumple con los requisitos de la máquina esclava, aún puede comunicarse normalmente, pero si se coloca el mismo programa en el microcontrolador físico, es muy probable que la comunicación i2c no funcione.
Aquí tienes una breve introducción a lo que 51 aprende principalmente. Y pasos de aprendizaje sencillos:
Cree un proyecto, aprenda a compilar, a descargar y comprenda las estructuras de datos de registro únicas de 51 microcontroladores como sbit y sfr.
Aprenda el módulo IO del microcontrolador 51, use IO para encender la lámpara (lámpara de agua), controle el tubo digital, controle el módulo de matriz de puntos 8*8 y la entrada de claves.
Para aprender el módulo de interrupción del microcontrolador 51, comience con la interrupción externa más simple y use interrupciones para identificar eventos clave.
Aprenda el módulo de temporizador de 51 microcontroladores, realice la sincronización de 1 s, implemente un cronómetro digital simple y realice la onda PWM de salida del puerto IO.
Aprenda el módulo de puerto serie de 51 microcontroladores, estándares de nivel de puerto serie maestro, TTL, RS232, estándares de nivel USB, domine la composición de formas de onda del puerto serie, velocidad de baudios maestra, comunicación multihost y otros conceptos.
Después de aprender el módulo básico 51, puedes aprender el módulo de expansión. Puede utilizar el puerto IO para simular varios protocolos de bus de baja velocidad, como el protocolo i2c, el protocolo spi y algunos protocolos personalizados para módulos específicos, como el protocolo de bus único del sensor de temperatura DS18B20, para profundizar su comprensión del protocolo. . El proceso de aprendizaje se puede realizar comprando los módulos correspondientes al protocolo. Intente elegir módulos con muchos tutoriales en línea. Por ejemplo, compre eeprom y mpu6050 para i2c y flash para spi.
Después de aprender esto, podrás hacer algunas cosas pequeñas, como LED giratorios, autos de seguimiento y autos con control remoto. Simplemente siga los tutoriales en línea desde el principio. El primer paso del aprendizaje siempre comienza con la imitación. Primero imita, luego comprende, luego mejora y finalmente absorbe y transfórmate en tus propias habilidades.
Se recomienda que dedique más tiempo al proceso anterior para que pueda comprender y comprender la mayoría de los lugares. Después de todo, es la base, y el aprendizaje posterior se ampliará sobre ella. Si aprende bien los conceptos básicos, tendrá el efecto de establecer paralelos más adelante.
2.2 Principios de la microcomputadora (opcional)
El amigo promedio comenzará a comenzar con STM32 en este momento, pero le sugiero que antes de comenzar con STM32, primero eche un vistazo a Diseño del procesador 8086, es decir, estudiar el curso "Principios de microcomputadoras", creo que todavía es necesario. El principio de la microcomputadora se puede entender a grandes rasgos: cómo la CPU ejecuta instrucciones, cómo acceder a los registros internos y la memoria externa a través del bus de direcciones, el bus de datos y el bus de control, cómo se responde a las interrupciones y el procesamiento interno específico de las interrupciones.
2.3STM32
Ahora puedes aprender STM32 con tranquilidad, que es más complicado que 51. Pero que no cunda el pánico, la esencia es la misma que la de 51, pero los módulos funcionales se han vuelto más complejos y el número de módulos ha aumentado. Pero sigue siendo cierto que el módulo no es esencialmente más que una lógica combinacional o un circuito lógico secuencial, y el registro del módulo es la entrada del circuito lógico.
2.4 Estructura de datos y RTOS
Después de completar el programa básico, puede aprender el pequeño sistema operativo integrado rtos. Tanto Wildfire como Punctual Atom han publicado libros y tutoriales en vídeo. Antes de aprender RTOS, los estudiantes que lo necesiten pueden considerar si aprender estructuras de datos. No es necesario que sea muy profundo. Al menos, debe comprender las estructuras de cola y pila. Es mejor implementarlas usted mismo en C.
2.5Dibujo de PCB y pequeños trabajos de bricolaje
Para placas pequeñas simples como microcontroladores, se recomienda utilizar LCEDA doméstico. AltiumDesigner es más profesional, pero es un software pago. La alternativa es KiCAD.
STM32 tiene muchos módulos funcionales. Lo mejor sería que los aprendieras todos. Sin embargo, me temo que aprenderlos te resultará aburrido (mira tutoriales en vídeo, analiza el código fuente, impleméntalo tú mismo). luego comience a descargar). Un punto de conocimiento son también los tres pasos anteriores). Después de mucho tiempo, me temo que la gente no podrá persistir y la pasión por aprender desaparecerá gradualmente. Por lo tanto, sugiero que el aprendizaje de STM32 esté orientado a proyectos. Por supuesto, aún necesita estar familiarizado con algunos GPIO básicos, interrupciones, i2c, LCD, Touch, ADC, TIMER y otros periféricos.
Al estar orientado al trabajo, es natural que necesites tomar tus propias decisiones. Para aquellos de ustedes que fabrican tablas, Jialichuang está haciendo una promoción recientemente. Es realmente barato, 5 yuanes por 5 piezas y envío gratuito a todo el país. Si desea crear tableros, debe aprender a utilizar el software AltiumDesigner y comenzar a crear sus propios dispositivos a partir de ese momento. Hay mucha información sobre AD en línea. Empecé viendo el vídeo AD6.9 de Guo Tianxiang. En la actualidad, el Lichuang EDA nacional tiene una versión profesional y no hay problema en dibujar placas de circuito simples.
3. Cursos de mejora (Linux)
Después de haber aprendido casi lo mismo sobre los microcontroladores, puede comenzar a aprender Linux integrado. Si lo desglosa con cuidado, puede subdividirlo en. Desarrollo de controladores Linux integrados y desarrollo de aplicaciones Linux integradas.
3.1 Introducción a Ubuntu
Instalar Ubuntu y aprender los conceptos básicos de Linux. Comencé viendo la serie de videos del Programa de desarrollo maestro de Linux en MOOC.com. el siguiente contenido:
Operaciones básicas de Linux y comandos de uso común.
La programación LinuxC se puede compilar usando gcc.
Makefile, recomiendo "Write Makefile with Me" de Chen Hao.
Script de shell.
Interesado en comenzar con los scripts de Python.
3.2 Controlador de Linux
Con los conceptos básicos del uso de Linux, comencé a aprender el procesador, el procesador s3c2440, compré una placa de desarrollo para aprender, recomendé el video de Wei Dongshan, sigo a Wei Dongshan, número 1, Segundo periodo, tercer periodo, vídeo de la clase de graduación.
El principal contenido de aprendizaje es:
El controlador bare metal puede entenderse como un microcontrolador. La naturaleza es la misma, pero no es como 51 y STM32 que usan IDE para compilar y. link., pero use herramientas de compilación cruzada y Makefile para compilar y vincular manualmente. Comience con uboot, aprenda el proceso de inicio general y familiarícese con ubootcmd, bootcmd, variables de entorno, programación flash, etc.
Controlador del kernel, el controlador del kernel aquí sigue siendo muy diferente del controlador básico. En términos relativos, el controlador del microcontrolador solo necesita comprender el manual SOC y configurar el registro, pero el controlador del kernel suele ser compatible. una gran cantidad de maestros SOC y una gran cantidad de fabricantes de periféricos tienen una capa de abstracción de software. En el núcleo, los llamamos subsistemas. Hay una gran cantidad de contenido en los subsistemas. Simplemente elija los relacionados con su trabajo y estúdielos detenidamente. No muerda más de lo que puede masticar.
3.3 Trasplante de controladores Linux
Producción de Rootfs, sistema de archivos del kernel basado en Busybox.
trasplante de arranque, trasplante de núcleo.
4. Mejorar los cursos (software)
Después de tener una cierta base integrada, en el trabajo real más adelante, encontrará que muchos códigos de controladores relacionados con el hardware se componen de materiales proporcionados por los proveedores. . Por ejemplo, solía desarrollar teléfonos móviles en Shanghai. El subsistema del controlador de la solución SOC de Qualcomm es muy completo e incluye un conjunto de estándares de Qualcomm y los proveedores de materiales para teléfonos móviles correspondientes, como LCD (pantalla), TP (táctil), Sensor (cámara), huella dactilar, varios sensores.
4.1 Estructura de datos
Las colas básicas, las listas vinculadas y los buffers circulares son habilidades básicas que se recomienda implementarlas usted mismo. No olvides lo que mencioné antes, el código que has escrito antes es la mejor nota. Recuerde conservar gitee y github. Estos códigos se utilizarán con frecuencia. Con el uso continuo, los defectos se solucionarán lentamente y se mejorará la solidez del código.
4.2 Patrones de Diseño
Recomiendo "HeadFirst", estoy mirando la versión en lenguaje Java. Puede echar un vistazo preliminar a la sintaxis de Java antes de leer. Las ideas de diseño de código no están limitadas por el idioma. Vale la pena leer buenos libros.
5. Acumulación y pensamiento
5.1 Biblioteca del sistema de conocimiento
Poco a poco, cuando entro en un campo subdividido, el campo de desarrollo de audio y video, lo haré. Descubrí que en muchos casos, no se trata solo del dominio de las capacidades de desarrollo generales, es decir, las habilidades de desarrollo de controladores y desarrollo empresarial de software que mencioné anteriormente. Muchas empresas confían en que usted tenga conocimientos profesionales que puedan ser útiles; de lo contrario, ni siquiera comprenderá por qué la estructura de datos en el código está diseñada de esta manera.
Así que cuando ingresas al campo profesional, puedes intentar organizar y acumular poco a poco el conocimiento que has acumulado en la vida diaria. Puede que al principio no sepas mucho al respecto, por lo que puedes copiarlo de blogs y publicaciones. traducir documentos oficiales de acuerdos. Pero el conocimiento es así. Antes de que al principio se convierta en un sistema, es normal tener un poco de conocimiento una vez que alcanza cierta cantidad y estás familiarizado con él, una vez que el conocimiento está conectado, la sensación de integración es extremadamente maravillosa.
Por ello, es recomendable que desarrolles el buen hábito de tomar notas durante tu estudio diario. Si quieres estudiar ese aspecto en profundidad, puedes seguir acumulando aprendizaje, organizarlo sistemáticamente y esperar poco a poco el día en que puedas dominarlo. La base de conocimientos de Yuque que uso actualmente es la biblioteca de documentos showdoc construida en el servidor privado.
5.2 Especificaciones de la documentación y modularización del código (componentización)
No es difícil encontrar que muchos software de código abierto están equipados con documentación detallada, desde la introducción más simple a lo que es este software. hay qué usar, cómo usarlo y las precauciones están claramente escritas. Algunos software de código abierto incluso introducen detalles de implementación interna.
Consulte lo que mencioné antes, el código que escribimos antes es la mejor nota. Podemos continuar mejorando el código que escribimos antes e integrar lentamente los módulos de código con funciones independientes. . Le resultará conveniente reutilizarlo en diferentes proyectos en el futuro.
Después de todo, si lo reutilizas, una buena memoria no es tan buena como una mala escritura. Aún puedes recordar las ideas centrales del código en uno o dos meses. Las ideas centrales después de mucho tiempo, es posible que ni siquiera recuerdes cómo usarlas. En ese momento, me di cuenta de la importancia de introducir documentación de respaldo para el código. Después de todo, cuando el código se acaba de desarrollar, escriba el documento mientras las ideas estén claras y registre las precauciones con claridad. Una vez que esté claro, será mucho más fácil de reutilizar más adelante.