嵌入式概括和学习路线初稿
嵌入式是干啥的?嵌入式就是让微控制器(MCU)或处理器在特定硬件平台中运行特定软件,使其实现如数据采集、信号处理、控制执行、数据传输、显示反馈等任务,以满足特定行业或应用场景的功能需求。嵌入式系统广泛应用于工业控制、智能家电、消费电子、汽车电子、通信设备、机器人、物联网设备等领域。电子信息、自动化、测控、通信、计算机、软件工程、信息工程、电气、集成电路、机械、车辆工程。
10+offer ,嵌入式秋招概况和学习路线
一、个人背景
交流:xihongshixuezhang
双非本9硕
投递70家,面试近30场,offer10+,
二、嵌入式薪资
三、嵌入式式岗位介绍
3.0、什么是嵌入式?
-
嵌入式是干啥的?
- 嵌入式就是让微控制器(MCU)或处理器在特定硬件平台中运行特定软件,使其实现如数据采集、信号处理、控制执行、数据传输、显示反馈等任务,以满足特定行业或应用场景的功能需求。
- 嵌入式系统广泛应用于工业控制、智能家电、消费电子、汽车电子、通信设备、机器人、物联网设备等领域。
-
什么方向可能会相关:
- 电子信息、自动化、测控、通信、计算机、软件工程、信息工程、电气、集成电路、机械、车辆工程
3.1、C++方向:
C++作为一种高性能的编程语言,在软件开发领域有着广泛的应用。C++岗位一般分为以下几类:
- C++软件开发:涉及桌面应用、游戏开发、图形渲染等领域,需要扎实的C++基础和面向对象编程思想。
- 后端开发:利用C++的高性能特点,在服务器端进行高并发、高可用系统的开发,如金融交易系统、分布式存储等。
- 系统软件开发:包括操作系统、数据库、编译器等底层软件的开发,对系统原理和底层架构有深入理解。
虽然C++相关的岗位相对其他语言可能较少,但由于其复杂性和高性能特点,要求较高。
3.2、 嵌入式方向:
嵌入式系统广泛应用于物联网、智能家居、工业控制、汽车电子等领域。嵌入式方向大致可以分为以下几类:
-
嵌入式硬件开发:主要负责硬件电路设计、PCB绘制、硬件调试等。这一方向需要电子、电气工程方面的知识,不多展开。
-
嵌入式软件开发:
-
-
应用层开发:
-
- Linux用户态开发:在Linux操作系统的用户空间进行开发,如使用Qt进行界面设计,或者开发与硬件交互的应用程序。工作内容相对简单,主要关注业务逻辑的实现。
- 实时操作系统(RTOS)开发:基于实时操作系统(如FreeRTOS、μC/OS)进行应用开发,常用于对实时性有要求的嵌入式设备。Stm32、rtos、操作系统,通信总线
-
底层驱动开发:
-
- 驱动程序开发:在Linux内核态编写驱动程序,与硬件直接交互。需要深入理解操作系统原理、硬件架构和驱动模型,入门和学习难度较大。
-
嵌入式软件开发对C/C++语言、数据结构、操作系统等基础知识有较高要求。底层驱动开发虽然难度较大,但薪资水平高,发展前景广阔。
3.3、 自动驾驶相关方向:
自动驾驶是当前的热点领域,涉及多学科的交叉。主要分为以下几个方向:
-
应用层开发:
-
- 功能开发:基于中间件或平台提供的接口,开发自动驾驶功能模块,如路径规划、环境感知、人机交互等。
- 智能座舱开发等:涉及车载娱乐系统、信息显示、语音交互等,提升用户的驾驶体验。
-
中间件开发:
-
- 中间件框架:负责封装底层操作系统和硬件接口,为上层应用提供统一的编程接口。需要对系统架构和软件设计模式有深入理解。
- 通信框架:开发车辆内部网络通信协议,确保各模块之间的数据传输可靠。
-
底层开发:
-
- 操作系统层开发:涉及实时操作系统的开发和优化,对系统的实时性、安全性进行保障。
- 硬件驱动开发:为传感器、执行器等硬件设备编写驱动程序,与硬件直接交互。
3.4、怎么确定自己学什么?
- 根据岗位要求,看看自己想去什么样的岗位
- 进一步学对应的知识
- 举例
四、编程相关学习
4.1、编程语言
-
C语言
- 基础语法
- 结构体/枚举/位操作
- 函数、指针(重要)、内存管理
-
C++
- C++基础
- 面向对象特性(抽象、类、封装、继承、多态)
- 模板、泛型、STL、新特性
- 学习资料:黑马+实际项目实践
4.2、数据结构与算法
- 数据结构:
- 字符串、栈、队列、链表、堆、树、队列、数组、哈希表等
- 算法:
- 查找、排序
- 经典算法思想(动态规划、回溯等)
- 学习资料:《代码随想录》、《hot 100》、《hello 算法》
4.3、操作系统原理
- 内存管理和调度
- 多任务:多线程/并发/线程
- I/O原理
- 文件管理
- 学习资料:王道
4.4、计算机网络原理
-
网络模型
-
TCP/IP协议栈划分
-
ping原理等
-
学习资料:湖工大教书匠
4.5、单片机原理/微机/片组原理
-
计算机基本组成
-
指令和总线
-
处理器架构和设计
-
存储系统
-
I/O系统
-
学习程度:选择性学习
4.5、Linux操作系统
Linux基本使用
- 系统概念和特点
- Linux环境安装和搭建
- 目录结构
- 基本命令和常用工具
- 基本网络管理
- 基本编译器链
- 基本的shell编程
Linux下的C/C++开发进程
- 编辑器:Vim
- 编译
- 编译器套件:GCC
- 编译工具:make, makefile, cmake/autotools
- 调试:GDB
- 运行
Linux系统编程
-
系统调用
-
内存管理和使用
- 内存分配
- 内存管理
-
多任务编程
-
进程管理
- 进程概念:创建、终止、退出
- 进程间通信:管道、无名管道、消息队列、信号、信号量、共享内存、套接字
-
线程
- 线程概念、
- 线程编程:创建、终止、等待、同步、互斥、信号、同步
-
-
文件I/O编程
- 文件/文件描述符
- 文件结构/文件描述符
- 文件指针/文件描述
- 标准I/O流、标准I/O操作、非阻塞I/O、异步I/O
-
网络编程
- TCP/IP协议栈
- Socket通信(客户端/服务端)
- TCP、UDP编程
4.6、图形化界面编程:QT
- 学习内容
- 对话框/窗口、信号与槽、组件、网络通信、多线程等
- 学习资源
- 学习程度:不需要学太深入
五、嵌入式硬件基础
- 模电/数电基础
- 熟悉常用仪器仪表:万用表、电烙铁、焊台、示波器、信号发生器等
- 熟悉常见器件通信/传输方式/协议/接口/总线:串口、IIC、SPI、CAN、485、TCP/IP
- 会看或画基本电路图和PCB板
- 会看硬件时序图
- 会基本的电路仿真
六、常见开发工具
- Linux指令
- Git
- Shell
- Vim
- GCC
- makefile
- GDB
- 交叉编译工具链
七、嵌入式典型平台(ARM)
7.1、luo机开发(stm32)
- 学习内容
- GPIO
- 典型电路、相关寄存器、工作模式
- 中断
- 工作模式、中断向量表、优先级、中断处理流程、主/外部中断
- 定时器
- 时钟体系和时钟、关键寄存器和控制、PWM定时器、看门狗定时器、实时时钟RTC
- 存储器
- 协议/接口/总线
- GPIO
- 学习资料:野火、正点原子,项目实践
- 本质:用代码驱动各种外设,实现对应的功能
7.2、RTOS(实时操作系统)
- FreeRTOS
- 学习资料丰富
- RT-Thread
【经验视频】
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)