banner
按时间整理的学习笔记。

文章归档

Scroll down
Embedded

一、什么是 OTA

OTA 是 Over-The-Air,通过网络远程升级设备软件。嵌入式设备一旦部署到现场,人工拆机升级成本很高,所以 OTA 是产品化必备能力。

OTA 可能升级:

  • 应用程序。
  • 配置。
  • RootFS。
  • Kernel。
  • U-Boot。
  • 全量固件。

一、嵌入式稳定性为什么难

嵌入式设备经常长期无人值守运行,环境比普通服务器复杂:

  • 可能突然断电。
  • 可能网络不稳定。
  • 可能温度变化大。
  • 可能存储寿命有限。
  • 可能没有人工现场维护。

所以嵌入式开发必须考虑异常恢复。

一、什么是 RTOS

RTOS 是 Real-Time Operating System,实时操作系统。它常用于单片机和资源受限设备中,用来管理多个任务、定时器、同步和通信。

常见 RTOS:

  • FreeRTOS。
  • RT-Thread。
  • Zephyr。
  • ThreadX。

一、嵌入式调试的层次

嵌入式调试比普通应用复杂,因为问题可能出在硬件、启动链路、内核、驱动、文件系统或应用。

常见调试手段:

  • 串口日志。
  • LED 状态灯。
  • JTAG/SWD。
  • OpenOCD。
  • GDB。
  • gdbserver。
  • 逻辑分析仪。
  • 示波器。

一、RootFS 是什么

RootFS 是根文件系统,是 Linux 用户态运行的基础。内核启动后,必须挂载 RootFS,然后启动第一个用户态进程。

RootFS 里通常包含:

  • Shell。
  • 基础命令。
  • 动态库。
  • 配置文件。
  • 设备节点。
  • 启动脚本。
  • 应用程序。

一、为什么要理解启动流程

嵌入式 Linux 出问题时,经常不是应用代码的问题,而是系统还没正常启动。比如串口没有输出、内核卡住、根文件系统挂载失败、应用没有自启动。

理解启动流程可以帮助你定位问题发生在哪一层:

1
BootROM -> SPL -> U-Boot -> Kernel -> RootFS -> Init -> App

一、为什么需要设备树

在嵌入式 Linux 中,内核需要知道硬件板子上有什么设备、这些设备接在哪些总线上、使用哪些 GPIO、中断、时钟和寄存器地址。

这些硬件描述不适合全部写死在驱动代码里,所以 Linux 使用设备树描述硬件。

设备树的作用:

  • 描述硬件资源。
  • 把板级差异从驱动中分离出来。
  • 让同一个驱动适配不同板子。
  • 让内核启动时创建设备。

一、为什么外设总线重要

嵌入式开发经常要和硬件打交道。传感器、屏幕、Flash、按键、LED、通信模块都需要通过某种接口和主控芯片连接。

最常见的外设接口:

  • GPIO。
  • UART。
  • I2C。
  • SPI。
  • PWM。
  • ADC。

理解这些接口,是从应用开发走向板级开发和驱动开发的基础。

一、什么是交叉编译

交叉编译是指在一种平台上编译另一种平台运行的程序。比如在 x86_64 Ubuntu 电脑上编译 ARM 开发板运行的程序。

常见组合:

1
2
开发机:x86_64 Linux
目标板:ARM Linux

为什么需要交叉编译:

  • 开发板性能弱,编译慢。
  • 开发板存储小,不适合安装完整工具链。
  • CI/CD 通常运行在服务器上。
  • 需要统一构建环境。

一、什么是嵌入式开发

嵌入式开发是围绕特定硬件设备进行的软件开发。和普通 PC 或服务器开发相比,嵌入式更关注硬件资源、实时性、功耗、启动速度、稳定性和长期运行。

常见设备:

  • 路由器。
  • 工业控制器。
  • 智能家居设备。
  • 车载设备。
  • 摄像头。
  • 网关。
  • 可穿戴设备。
1345
请输入关键词进行搜索