1. Define Goals and Positioning You need to choose a direction for your embedded system position based on your current programming skills.2. Prepare Core Embedded Knowledge1. Deep mastery of C languageBasic syntax: variable declaration, control structures, loops, conditional statements.Pointers: the relationship between pointers and arrays, pointers to pointers, dynamic memory allocation.Preprocessor: macro definitions, file inclusion, conditional compilation.Functions: recursion, function pointers, variable scope and lifetime.Structures and unions: design and use of complex data structures.Memory management: differences between heap and stack, memory allocation and deallocation strategies.2. Principles of Microcontrollers (MCU)Architecture: understand the architectures of different MCUs and their characteristics.Interrupt system: interrupt vectors, priorities, writing interrupt service routines.Timers: timer configuration, timer interrupts, PWM signal generation.Peripheral interfaces: GPIO, ADC, DAC, SPI, I2C, UART, etc.3. Real-Time Operating Systems (RTOS)Task management: task creation, scheduling, synchronization, and communication.Synchronization mechanisms: semaphores, mutexes, event flags, message queues.Memory management: heap management strategies, memory allocator implementation.4. Linux Operating SystemFile system: structure of the Linux file system, mounting, file operations.Process management: process lifecycle, inter-process communication (IPC).System calls: familiarize yourself with common system calls and their usage scenarios.5. Communication ProtocolsDeep understanding of the working principles and implementation methods of communication protocols such as I2C, SPI, UART, CAN.6. Version ControlGit: master the basic commands and workflow of Git for code version control.7. Software Engineering PracticesCode review: understand the importance and basic process of codereview.Continuous Integration/Continuous Deployment (CI/CD): understand the concepts and tools of CI/CD.3. Bonus Skills1. Data Structures and Algorithms: practice coding problems to enhance your programming skills and algorithmic thinking, review through exercises.2. Basic C++: although primarily using C, the STL library in C++, such as vector, map, can greatly improve programming efficiency.4. Project Practice and Internship ExperienceProject practice: implement a smart home controlsystem (a mainstream direction for embedded projects).5. Interview Skills1. Be thoroughly familiar with every project on your resume, able to clearly explain the project background, technical challenges, and solutions.2. Whether technical or non-technical questions, clear and organized expression is key.3. Show your passion for technology and your ability for continuous learning.
Be the best version of yourself at the best age!Extracurricular ClassMCU Software Entry Process:1. Understanding Microcontrollers
1. What is a microcontroller?
2. Understand the application fields and future opportunities of microcontrollers.
3. Determine your passion and interest in microcontroller development.
2. Basic Preparation
1. Theoretical Preparation
(1) Learning C language (core skill for code development)
Data structures
Structured coding: sequence, branching, selection
Pointers
Functions
Arrays/structures/bit fields
Others
(2) Learning microcontroller chips
Common MCUs
C51
TIMSP series
STM series (recommended STN32 series)
Theoretical learning of chips
What is a clock
What is an interrupt/exception system
What is a peripheral
What is a serial port
What is a minimal system
Learning about the compilation tools supported by the chip
How to compile/how to download
2. Hardware Preparation (based on the selected MCU chip model)
Choose a development hardware board
Master the debugging and downloading process
3. Hands-on Practice
1. Imitation Stage (basic development capability)
(1) Learn and verify each example corresponding to the development board
Example code learning
Development board verification results
(2) Modify and verify based on examples
Modify code design
Development board verification results
2. Advanced Stage (basic independent working capability)
(1) Based on the [imitation stage] code, design your required code
(2) Completely develop a new code framework and system
4. Knowledge Expansion
1. Multi-task scheduling systems
(1) ucos
(2) rtos
(3) Multi-task system MCU porting
(4) Multi-task system MCU code development
2. Advanced Hardware
(1) Learning other hardware
IIC
SPI
EEPROM
Oscilloscope debugging methods
(2) Learning hardware schematics.
Extracurricular Class, class dismissed!