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

文章归档

Scroll down
嵌入式开发

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

嵌入式 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
请输入关键词进行搜索