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
    • 存储器
    • 协议/接口/总线
  • 学习资料:野火、正点原子,项目实践
  • 本质:用代码驱动各种外设,实现对应的功能

7.2、RTOS(实时操作系统)

  • FreeRTOS
    • 学习资料丰富
  • RT-Thread

【经验视频】
在这里插入图片描述

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐