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

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内核→驱动开发→编译/调试工具→计算机网络→安全机制