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

文章归档

Scroll down
嵌入式开发

理解启动链路,是排查嵌入式 Linux 问题的基础。系统启动失败时,不能只说“板子起不来”,而要能判断卡在 BootROM、Bootloader、Kernel、RootFS 还是 init 阶段。

嵌入式 Linux 开发绕不开交叉编译。开发机通常是 x86_64,目标板可能是 ARM、AArch64、MIPS 或 RISC-V。代码在开发机上编译,最终要在目标板上运行,这中间最容易出问题的是架构、动态链接器和依赖库。

嵌入式 Linux 入门的第一步,不是改内核,也不是写驱动,而是把开发环境搭起来,把板子稳定连上,把启动日志完整拿到。只要这一步不扎实,后面遇到启动失败、网络不通、应用跑不起来时,就会缺少最基本的排查入口。

学习嵌入式 Linux 最容易遇到的问题,不是资料太少,而是资料太散。今天看驱动,明天看 Buildroot,后天又去研究 U-Boot,结果每个概念都知道一点,但真正拿到一块板子时,还是不知道从哪里开始开发。

更合理的方式,是按真实项目的开发链路学习:先能把系统跑起来,再能改 rootfs,再能开发应用,最后再深入内核和驱动。

精简 Linux 系统里的时区问题经常被低估。桌面发行版通常有 systemd、timedatectl、完整 tzdata 和图形化配置,但嵌入式 rootfs 里可能只有 BusyBox、少量动态库和几个启动脚本。更常见的情况是 /etc/localtime 位于只读 rootfs 中,运行时不能直接替换;设备还需要通过 MQTT 接收其他设备下发的时区修改协议,并且重启后不能丢失配置。

一、什么是 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。
  • 基础命令。
  • 动态库。
  • 配置文件。
  • 设备节点。
  • 启动脚本。
  • 应用程序。
12345
请输入关键词进行搜索