Skip to content

嵌入式学习路线

作者:姜蘅洋🖊️

1.什么是嵌入式开发:

  • 嵌入式开发主要工作是开发嵌入式系统
    • 嵌入式系统Embedded System
      • 嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。
      • 嵌入式系统常被用于高效控制许多常见设备,被嵌入的系统通常是包含数位硬件和机械部件的完整设备。

2.嵌入式开发路线:

  • 嵌入式系统开发
    • 微控制器开发:现代操作系统主要是基于微控制器(例如STM32),在较复杂的系统中,也会使用微处理器。
      • 需要对微控制器的体系结构有比较明确的认知,这需要计算机体系结构的相关知识以及微控制器专门的参考手册,至少能熟练掌握微控制器的启动过程
      • 需要熟练掌握一两款常用微控制器的使用方法,目前比较主流的微控制器:STM32、ESP32,能够基于微控制器实现板级开发(BSP)。
        • 这需要熟练的掌握C语言以及常见数据结构(如链表、队列等),同时还需要对微控制器的底层寄存器使用有相应了解,以及相关处理器架构的汇编代码,例如启动代码。
      • 对于常用的微控制器,不支持运行Linux操作系统,需要掌握RTOS,这需要操作系统的相关知识,并且能够熟练使用至少一款Linux操作系统(例如Ubuntu)的使用。
    • 图形用户界面开发(GUI)
      • 嵌入式领域GUI开发有两个方向:
        • 面向微控制器的GUI开发:
          • 基于微控制器(STM32/ESP32)实现图形用户交互界面,能够熟练掌握相关GUI框架
        • 面向主流处理器的GUI开发:
          • 能够掌握主流GUI库(QT/Imgui),实现跨系统的用户交互界面,对C++有深刻理解,具有扎实的面向对象的功底。
      • 嵌入式GUI需要熟练掌握相关工具的使用:
        • 交叉编译链,例如arm-none-eabi-gcc
        • cmake
        • git
        • ......
    • 外围设备开发
      • 通过微控制器对外设进行开发和驱动。
      • 能够看懂开发原理图,看懂芯片的参考手册和数据手册。
      • 对通信协议:IIC、SPI、CAN等有深刻理解。
      • 需要较强的C语言基础并且对计算机网络有深刻理解。
    • Linux驱动开发
      • Bootloader的工作流程、UBOOT的编译、裁剪与移植、Linux内核的编译、裁剪与移植,根文件系统的构建、BootLoader、内核和根文件系统的烧写。
        • 重点驱动框架如:
          • 字符设备驱动、块设备驱动、LCD设备驱动、触摸屏设备驱动,总线设备驱动模型,输入子系统模型等。
      • Linux设备驱动开发有相当深刻的了解,熟练掌握蓝牙、WiFi、USB等协议内容,深入了解UNIX、Linux内核

3.一些建议:

  • 如果想学好嵌入式开发,那么就要付出相当多的努力,对于一个优秀的嵌入式开发工程师,除了对计算机有深刻了解外,还必须对电子电路、机械等领域有所涉及。
  • 在人工智能领域飞速发展的今天,也需要掌握人工智能的相关知识,对于有深刻计算机理解的嵌入式工程师来讲,这并不困难,因为你已经对不同架构、不同系统的计算机了如指掌。
  • 放弃功利心,在这个异常浮躁的社会,嵌入式工程师应该踏实走好脚下的路,即使身边有相当多简单且高薪的职业,但请相信,嵌入式是可以学习和工作一生的职业。
  • 请怀有一颗不断追寻新技术、不断突破自我的心,否则,嵌入式领域会让你异常痛苦。
  • 真正的大师,永远怀着一颗学徒的心
developer

Released under the MIT License.