linux_learn/docs/01-Linux内核与驱动开发.md

149 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 01-Linux内核与驱动开发
> 资料源: [TL3568-EVM\6-开发参考资料\Rockchip官方参考文档](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/)
---
## 一、可学习的内容
RK3568 是 Rockchip 的 SoC官方提供了完整的驱动参考文档。以下按外设模块列出资料位置和可学习的方向。
### 1.1 常规外设驱动GPIO / SPI / UART / I2C / PWM / CAN
| 模块 | 文档位置 | 可学内容 |
|------|----------|----------|
| **CAN** | [Common/CAN/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/CAN/) (2 份 PDF) | RK3568 CAN 控制器寄存器配置、`ip link` 对应的底层 `ioctl` 实现、FD 模式启用 |
| **SPI** | [Common/SPI/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/SPI/) (2 份 PDF) | Rockchip SPI 主控制器架构、DMA 传输模式、设备树 `spi-max-frequency` 配置 |
| **UART** | [Common/UART/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/UART/) (3 份 PDF) | 串口 DMA 收发、流控 (RTS/CTS)、波特率自动检测 |
| **I2C** | [Common/I2C/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/I2C/) (2 份 PDF) | I2C 主机模式、时钟拉伸、设备树 `i2c-scl-rising-time-ns` |
| **PWM** | [Common/PWM/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/PWM/) (2 份 PDF) | PWM 输出、捕获输入、设备树 `pwms` 属性 |
| **Pin-Ctrl** | [Common/Pin-Ctrl/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/Pin-Ctrl/) (2 份 PDF) | GPIO 引脚复用配置 (`pinctrl`)、驱动强度、施密特触发 |
**学习路线**
1. 先读 [CAN](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/CAN/) 文档(你项目中直接用到)
2. 再读 SPI/UART/I2C嵌入式外设三大件每个驱动模式几乎一样`platform_driver → probe → 注册字符设备/cdev → file_operations → read/write/ioctl`
3. Pin-Ctrl 是理解"为什么 `ip link set can0 up` 会失败"的关键——CAN 引脚可能被其他功能占用
### 1.2 高速外设PCIe / USB / GMAC
| 模块 | 文档位置 | 可学内容 |
|------|----------|----------|
| **PCIe** | [Common/PCIe/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/PCIe/) (4 份 PDF) | PCIe RC/EP 模式、MSI 中断、DMA 数据传输 |
| **USB** | [Common/USB/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/USB/) (15 份 PDF) | USB 3.0/2.0 Host/Device 模式、Type-C 切换、OTG |
| **GMAC** | [Common/GMAC/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/GMAC/) (5 份 PDF) | 千兆以太网 MAC 控制器、RGMII 时序约束、1588 PTP |
### 1.3 多媒体与加速VPU / NPU / GPU / Camera / Display
| 模块 | 文档位置 | 可学内容 |
|------|----------|----------|
| **DISPLAY** | [Common/DISPLAY/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/DISPLAY/) (18 份 PDF) | HDMI/LVDS/MIPI DSI 输出、多屏同显/异显、图层合成 |
| **CAMERA** | [Common/CAMERA/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/CAMERA/) (3 份 PDF) | MIPI CSI/DVP 摄像头接口、ISP 图像处理流水线 |
| **NPU** | [Common/NPU/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/NPU/) (3 份 PDF) | RK3568 NPU 架构、RKNN 模型部署、YOLOv5 推理 |
### 1.4 存储与文件系统MMC / NVM / FS / DDR
| 模块 | 文档位置 | 可学内容 |
|------|----------|----------|
| **MMC** | [Common/MMC/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/MMC/) (2 份 PDF) | eMMC/SD 卡驱动、HS200/HS400 高速模式 |
| **NVM** | [Common/NVM/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/NVM/) (9 份 PDF) | NAND/NOR Flash、SFTL (闪存转换层) |
| **FS** | [Common/FS/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/FS/) (1 份 PDF) | Linux 文件系统在 Rockchip 上的适配 |
| **DDR** | [Common/DDR/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/DDR/) (11 份 PDF) | DDR 初始化/训练、频率调节、带宽监控 |
### 1.5 系统与安全CLK / PMIC / DEBUG / TRUST
| 模块 | 文档位置 | 可学内容 |
|------|----------|----------|
| **CLK** | [Common/CLK/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/CLK/) (3 份 PDF) | 时钟树、PLL 配置、`clk_summary` 解读 |
| **DVFS** | [Common/DVFS/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/DVFS/) (4 份 PDF) | 动态电压频率调节、CPU 调频策略 |
| **PMIC** | [Common/PMIC/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/PMIC/) (10 份 PDF) | RK806/RK809 电源管理 IC、上电时序 |
| **POWER** | [Common/POWER/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/POWER/) (2 份 PDF) | 系统休眠/唤醒、低功耗模式 |
| **DEBUG** | [Common/DEBUG/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/DEBUG/) (4 份 PDF) | JTAG/SWD 调试、`crash` 工具分析、看门狗 |
| **TRUST** | [Common/TRUST/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/TRUST/) (6 份 PDF) | ATF (ARM Trusted Firmware)、OPTEE 安全 OS、安全启动 |
| **UBOOT** | [Common/UBOOT/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/UBOOT/) (7 份 PDF) | U-Boot 在 RK3568 上的引导流程、FIT Image |
---
## 二、Linux 应用层文档
```
路径: [6-开发参考资料\Rockchip官方参考文档\Linux\](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/)
├── [ApplicationNote/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/ApplicationNote/) (19 份 PDF) ← 最实用!
│ → Rockchip平台Linux应用开发笔记
│ → 涵盖: 启动流程、GPIO/sysfs、LED、按键、RTC、WDT、I2C设备、SPI设备等
├── [Camera/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/Camera/) (6 份 PDF) → V4L2 摄像头框架
├── [Graphics/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/Graphics/) (4 份 PDF) → DRM/KMS 显示框架
├── [Multimedia/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/Multimedia/) (14 份 PDF) → GStreamer/FFmpeg 多媒体
├── [Profile/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/Profile/) (5 份 PDF) → 性能分析 (perf、ftrace)
├── [Recovery/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/Recovery/) (6 份 PDF) → OTA 升级、恢复出厂
├── [Security/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/Security/) (4 份 PDF) → dm-verity、SELinux
└── [Wifibt/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/Wifibt/) (6 份 PDF) → WiFi/BT 驱动
```
[ApplicationNote](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/ApplicationNote/) 是最值得读的——它就是"我该用什么 API 操作 GPIO/I2C/UART"的答案。
---
## 三、用户手册中的驱动相关文档
以下在 [TL3568-EVM\3-用户手册\](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/) 下:
| 文件名 | 内容 |
|--------|------|
| [2-2-Linux应用开发手册.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/2-2-Linux%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C.pdf) | **必读!** GPIO/LED/按键/UART/SPI/I2C/CAN 应用层编程指南 |
| [2-3-Linux-RT系统测试手册.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/2-3-Linux-RT%E7%B3%BB%E7%BB%9F%E6%B5%8B%E8%AF%95%E6%89%8B%E5%86%8C.pdf) | Preempt-RT 内核编译 + Cyclictest 延迟测试 |
| [2-9-1-基于Linux + RT-Thread、Baremetal的AMP开发案例.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/2-9-1-%E5%9F%BA%E4%BA%8ELinux%20%2B%20RT-Thread%E3%80%81Baremetal%E7%9A%84AMP%E5%BC%80%E5%8F%91%E6%A1%88%E4%BE%8B.pdf) | AMP 多核异构详解 |
| [2-10-Docker容器部署方法说明.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/2-10-Docker%E5%AE%B9%E5%99%A8%E9%83%A8%E7%BD%B2%E6%96%B9%E6%B3%95%E8%AF%B4%E6%98%8E.pdf) | 在 RK3568 上跑 Docker |
| [2-12-ISP图像处理开发案例.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/2-12-ISP%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86%E5%BC%80%E5%8F%91%E6%A1%88%E4%BE%8B.pdf) | ISP 图像调试 |
| [2-13-NPU开发案例.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/2-13-NPU%E5%BC%80%E5%8F%91%E6%A1%88%E4%BE%8B.pdf) | NPU 模型部署 |
| [2-18-GDB程序调试方法说明.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/2-18-GDB%E7%A8%8B%E5%BA%8F%E8%B0%83%E8%AF%95%E6%96%B9%E6%B3%95%E8%AF%B4%E6%98%8E.pdf) | GDB/GDB Server 远程调试 |
---
## 四、驱动开发学习建议
### 如果你要写一个 Linux 新驱动
**标准流程**(以写一个 I2C 温度传感器驱动为例):
```
1. 读 [Common/I2C/](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Common/I2C/) 文档 → 了解 RK3568 I2C 控制器的硬件特性
2. 读 [ApplicationNote](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/Rockchip%E5%AE%98%E6%96%B9%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3/Linux/ApplicationNote/) → 了解 Linux 用户态怎么用 /dev/i2c-* 或 sysfs
3. 写 DTS 节点 → 在设备树中描述传感器挂在哪条 I2C 总线、地址多少
4. 写 platform_driver → probe() 中 i2c_new_client_device() 注册设备
5. 注册到 hwmon/sysfs → 温度值暴露到 /sys/class/hwmon/
6. 编译 -> insmod -> dmesg 验证
```
**关键工具链**
- `dmesg | grep <name>` — 看 probe 是否成功
- `cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep <function>` — 检查引脚复用
- `cat /sys/kernel/debug/clk/clk_summary` — 检查时钟是否正确
- `devmem <addr>` — 直接读寄存器(最后手段)
---
## 五、可直接使用的 Demo 代码
```
路径: [4-软件资料\Demo\](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/)
base-demos/
├── [can_echo/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/base-demos/can_echo/) ← CAN 收发回环示例
├── [led_flash/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/base-demos/led_flash/) ← GPIO 控制
├── [key_demo/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/base-demos/key_demo/) ← 按键中断
├── [spi_rw/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/base-demos/spi_rw/) ← SPI 读写
├── [uart_rw/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/base-demos/uart_rw/) ← UART 收发
├── [devmem_rw/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/base-demos/devmem_rw/) ← 物理内存读写
├── [lcd_demo/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/base-demos/lcd_demo/) ← LCD 显示
├── [tcp_udp/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/base-demos/tcp_udp/) ← 网络编程
├── [igh_ethercat_dc_motor/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/base-demos/igh_ethercat_dc_motor/) ← IgH EtherCAT 主站 + 电机控制
└── [EcMasterDemoDcMotor/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/base-demos/EcMasterDemoDcMotor/) ← Acontis EtherCAT 主站
linux-rt-demos/
├── [Cyclictest/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/linux-rt-demos/Cyclictest/) ← 实时延迟测试
├── [rt_gpio_ctrl/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/linux-rt-demos/rt_gpio_ctrl/) ← 实时 GPIO 控制 (SCHED_FIFO)
├── [rt_input/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/linux-rt-demos/rt_input/) ← 实时输入处理
└── [rt_spi_rw/](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-%E8%BD%AF%E4%BB%B6%E8%B5%84%E6%96%99/Demo/linux-rt-demos/rt_spi_rw/) ← 实时 SPI 读写
```