🟢 第五层:嵌入式 Linux 开发基础
嵌入式 Linux 是物联网、智能设备、工业控制等领域的核心技术之一。本层重点掌握从 Bootloader 到驱动的开发过程,理解 Linux 系统构成及其移植方法。
🔹 嵌入式 Linux 系统概览
📌 嵌入式 Linux 特点
- 可裁剪、可定制、模块化强
- 支持多种架构(ARM、MIPS、RISC-V 等)
- 社区支持强大(开源内核、驱动丰富)
📌 系统组成
- Bootloader:负责上电后硬件初始化、加载内核(如 U-Boot)
- Kernel:Linux 内核,管理硬件与系统资源
- RootFS:根文件系统,包含用户空间程序
- 应用层:运行用户程序、脚本、服务等
🔹 启动流程详解
📌 通用启动流程
📌 U-Boot(主流 Bootloader)
- 二阶段:SPL(初始化内存)+ U-Boot 本体
- 功能:串口输出、TFTP 下载、引导内核、环境变量配置等
- 命令示例:
🔹 设备树(Device Tree)
📌 基本概念
- 描述硬件资源的结构化信息
- 独立于内核源码,提高可移植性
- 文件类型:
.dts(源文件)、.dtsi(包含文件)、.dtb(二进制)
📌 示例结构
📌 编译设备树
常用 Linux 命令与开发工具
文件与目录管理
| 命令 |
功能说明 |
ls -l |
列出文件详细信息 |
cd /path |
进入目录 |
cp source dest |
拷贝文件/目录 |
mv old new |
移动/重命名文件 |
rm -rf dir |
删除文件或目录 |
mkdir name |
创建新目录 |
find / grep |
搜索文件/内容 |
权限与用户管理
| 命令 |
功能说明 |
chmod 755 file |
修改权限(rwx) |
chown user:group |
更改文件拥有者 |
sudo |
以管理员身份执行命令 |
whoami / id |
查看当前用户信息 |
进程管理
| 命令 |
功能说明 |
ps / top |
查看运行进程 |
kill PID |
杀死某个进程 |
htop |
进阶图形化进程管理工具 |
nice, renice |
修改进程优先级 |
网络调试
| 命令 |
功能说明 |
ping |
测试网络连通性 |
ifconfig / ip |
配置 IP、MAC |
netstat -anp |
查看网络连接状态 |
scp, rsync |
文件远程复制 |
ssh user@host |
SSH 登录远程系统 |
设备与文件系统
| 命令 |
功能说明 |
mount / umount |
挂载 / 卸载设备 |
df -h |
查看磁盘空间使用情况 |
lsblk, blkid |
查看块设备信息 |
| `dmesg |
tail` |
软件包管理(针对开发板所用 Linux)
| 工具 |
说明 |
apt, opkg, yum |
安装 / 卸载软件包 |
dpkg -i pkg.deb |
安装本地 deb 包 |
Shell 脚本与自动化
#!/bin/sh 或 #!/bin/bash:脚本头部声明
- 脚本权限设置:
chmod +x script.sh
- 示例:
交叉编译相关命令(Makefile 环境)
| 命令/工具 |
说明 |
make |
使用 Makefile 构建 |
arm-linux-gcc |
使用交叉编译器编译 |
file a.out |
查看可执行文件平台架构 |
🔹 Linux 驱动开发模型
📌 驱动分层模型
- 总线(bus):如 platform、i2c、spi 总线
- 设备(device):描述具体外设
- 驱动(driver):实现对设备的控制逻辑
📌 字符设备驱动框架
📌 平台驱动开发流程
- 定义
platform_device
- 编写并注册
platform_driver
- 通过
of_match_table 匹配设备树节点
- 实现
probe/remove 等接口
🔹 根文件系统构建
📌 常见文件系统类型
- ext3/ext4:标准 Linux 文件系统
- squashfs:只读压缩文件系统,适合嵌入式
- initramfs:内存文件系统
📌 文件系统布局(典型)
📌 构建方式
- BusyBox + 自制文件结构
- Buildroot:快速构建定制系统
- Yocto:更灵活、工业级构建方案
🔹 工具链与调试手段
📌 交叉编译工具链
- gcc-arm-linux-gnueabi
- arm-none-eabi-gcc
- 使用环境变量指定:
📌 GDB 调试
- GDB Server + Remote Debug
📌 常用调试工具
| 工具 |
用途 |
| GDB |
程序级调试 |
| strace |
跟踪系统调用 |
| dmesg |
内核日志查看 |
| ldd |
查看依赖的库文件 |
| top / htop |
查看系统资源使用情况 |
| lsmod/insmod |
加载/查看内核模块 |
🔹 常见开发平台
| 平台 |
特点 |
| Raspberry Pi |
社区活跃,支持 Linux 全栈 |
| Allwinner / Rockchip |
国产主控,适配良好 |
| BeagleBone |
支持 PRU、实时协处理器 |
| STM32MP1 |
支持 Linux + Cortex-M 协同 |
🔚 小结
嵌入式 Linux 是从单片机迈向高性能系统开发的核心门槛,掌握其启动流程、设备树结构与驱动框架是后续学习内核裁剪、系统移植与 IoT 平台开发的基础。