看了涛神和仲一的八股文文档,我觉得复习八股可以从以下几个方面开展:

  • C/C++语法
  • 计算机网络
    • TCP/IP协议栈
    • TCP协议
    • UDP协议
    • MQTT协议
    • HTTP协议
  • 编译/调试
    • GNU工具链的组成
    • ELF文件格式
    • 交叉编译器
      • 命名
      • 命令行(-O -nostdlib…)
    • 编译的全流程
    • 内存分区及决定因素
    • gdb的使用
    • Core Dump
    • 内存泄露检测工具Valgrind的使用
    • 性能分析工具的perf使用
    • 系统调用跟踪工具strace的使用
    • JTAG、示波器、逻辑分析仪
    • Makefile、Shell、CMake
    • 动态库、静态库的区别
  • 计算机组成原理:MMU、Cache、TLB、流水线、CPU架构、总线架构、中断控制器、DMA原理
  • 体系结构
    • ARM:指令集(汇编)、寄存器、异常处理流程、特权模式
    • RISC-V
  • 嵌入式常见通信协议
    • UART
      • 各种电平:TTL、RS232、RS485…
    • SPI
    • IIC
    • 1-Wire
    • Modbus
    • CAN
    • USB
    • 调试方法
    • 信号完整性、抗干扰
  • Linux内核
    • 内存管理
    • 进程管理
      • 进程、线程的区别
      • 调度策略
      • 实时性优化
      • 进程间通信
    • 文件系统
  • FreeRTOS
  • Linux驱动开发
    • 芯片上电到程序运行的流程
    • uboot
    • 根文件系统搭建(busy box, buildroot)
    • 字符设备驱动框架
    • 设备树
    • platform驱动框架
    • input子系统
    • 中断处理
    • 同步
  • STM32
    • MCU的启动流程
    • bootloader
    • OTA
    • GPIO
    • 定时器
    • PWM
    • ADC/DAC
    • DMA
    • RTC
    • 低功耗
  • 安全
    • 校验算法(如CRC)
    • Secure Boot流程和实现
    • 加密算法(如AES、SHA)
  • 硬件设计

C/C++ → 嵌入式通信协议(UART/SPI/I2C)→STM32开发 →FreeRTOS →计算机组成原理→体系结构→Linux内核→驱动开发→编译/调试工具→计算机网络→安全机制