# 04-应用层与中间件开发 > 资料源: TL3568-EVM\[3-用户手册](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/)\ (2-2/2-4/2-8/2-10/2-15/2-16/2-17) + `Demo\*` --- ## 一、CAN 通信开发(你的核心需求) ### 1.1 资料位置 | 内容 | 路径 | |------|------| | **应用开发手册中的CAN章节** | [2-2-Linux应用开发手册.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-2-Linux应用开发手册.pdf) | | **Rockchip CAN 驱动文档** | [6-开发参考资料\Rockchip官方参考文档\Common\CAN\](../TL3568-EVM(Buildroot-2018.02)_V1.8/6-开发参考资料/Rockchip官方参考文档/Common/CAN/) (2 PDF) | | **CAN Demo (Linux)** | [4-软件资料\Demo\base-demos\can_echo\](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-软件资料/Demo/base-demos/can_echo/) | | **CAN Demo (AMP)** | [4-软件资料\Demo\amp-demos\can_echo\](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-软件资料/Demo/amp-demos/can_echo/) | ### 1.2 API 速查 ```c // socket int s = socket(PF_CAN, SOCK_RAW, CAN_RAW); // 绑定到 can0 struct sockaddr_can addr = { .can_family = AF_CAN }; addr.can_ifindex = if_nametoindex("can0"); bind(s, (struct sockaddr*)&addr, sizeof(addr)); // 接收 (阻塞) struct can_frame frame; read(s, &frame, sizeof(frame)); // 发送 frame.can_id = 0x123; frame.can_dlc = 8; frame.data[0] = 0xAA; // ... fill write(s, &frame, sizeof(frame)); // 硬件过滤 struct can_filter f = { .can_id = 0x100, .can_mask = 0x700 }; setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, &f, sizeof(f)); ``` ### 1.3 你的 CAN 协议栈与 Demo 的对接 创龙的 `can_echo` demo 提供了 **原始 SocketCAN 收发骨架**。你可以直接在此基础上替换为你设计的 XML 配置驱动协议栈: ``` can_echo 原有代码: while(1) { recv(); send_echo(); } 改造后: while(1) { recv() → rx_msg 分发 → 写 signal addr timer → tx_poll → 从 signal addr 读 → 组装 CAN 帧 → send() mutation → tx_trigger → send() } ``` --- ## 二、EtherCAT 主站开发 ### 2.1 资料位置 | 内容 | 路径 | |------|------| | **Acontis EtherCAT** | [2-15-1-Acontis EtherCAT主站开发案例.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-15-1-Acontis%20EtherCAT主站开发案例.pdf) | | **IgH EtherCAT** | [2-15-2-IgH EtherCAT主站开发案例.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-15-2-IgH%20EtherCAT主站开发案例.pdf) | | **IgH Demo** | [Demo\base-demos\igh_ethercat_dc_motor\](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-软件资料/Demo/base-demos/igh_ethercat_dc_motor/) | | **Acontis Demo** | [Demo\base-demos\EcMasterDemoDcMotor\](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-软件资料/Demo/base-demos/EcMasterDemoDcMotor/) | ### 2.2 选型对比 | | IgH EtherCAT | Acontis EC-Master | |:---|:---|:---| | 协议栈 | 开源 GPL | 商业授权(创龙板随附试用许可) | | 实时性 | 依赖 Preempt-RT 内核 | 专业实时层优化 | | 学习曲线 | 陡(需读源码) | 中(文档齐全) | | 适合 | 学习、个人项目 | 商业项目 | **学习建议**:先用 IgH 跑通一个伺服电机,理解 EtherCAT 主站的 SII/PDO/SDO/DC (分布式时钟) 概念。IgH 的命令行工具 `ethercat` 是很好的调试入口: ```bash ethercat slaves # 扫描从站 ethercat cstruct # 查看 PDO 映射 ethercat upload -p0 0x1000 0x00 # 读 SDO ``` --- ## 三、网络与物联网(TCP/UDP / MQTT) ### 3.1 资料位置 | 内容 | 路径 | |------|------| | **TCP/UDP 基础** | [Demo\base-demos\tcp_udp\](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-软件资料/Demo/base-demos/tcp_udp/) | | **MQTT 协议** | [Demo\mqtt-demos\mqtt_client\](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-软件资料/Demo/mqtt-demos/mqtt_client/) + [mqtt_sinewave_pub\](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-软件资料/Demo/mqtt-demos/mqtt_sinewave_pub/) | | **MQTT 手册** | [2-16-MQTT通信协议案例.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-16-MQTT通信协议案例.pdf) | ### 3.2 你的 CAN 协议栈 + MQTT 一个常见的工业物联网架构: ``` RK3568 CAN → 协议栈解析 → 数据转为 JSON → MQTT 发布到云端 ← 云端 MQTT 下发命令 ← CAN 发送到 ECU ``` MQTT Demo 中的 `mqtt_sinewave_pub` 就是一个"定时采集数据→MQTT发布"的模板。 --- ## 四、Qt 图形界面 / 多媒体 | 内容 | 路径 | |------|------| | **Qt 开发手册** | [2-4-Qt工程编译说明、GPU核心使用说明.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-4-Qt工程编译说明、GPU核心使用说明.pdf) | | **Qt Demo** | [Demo\qt-demos\](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-软件资料/Demo/qt-demos/) (LED控制、图片显示、多屏) | | **视频开发** | [2-8-视频开发案例.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-8-视频开发案例.pdf) | | **视频 Demo** | [Demo\platform-demos\](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-软件资料/Demo/platform-demos/) (GStreamer、V4L2、RTSP) | | **三屏异显** | [2-7-三屏同显、异屏方案演示.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-7-三屏同显、异屏方案演示.pdf) | --- ## 五、其他中间件 | 技术 | 资料 | 适用场景 | |------|------|------| | **Docker** | [2-10-Docker容器部署方法说明.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-10-Docker容器部署方法说明.pdf) + [Linux\Filesystem\docker\](../TL3568-EVM(Buildroot-2018.02)_V1.8/Linux/Filesystem/docker/) | 用容器隔离 CAN 协议栈和 Web 界面 | | **PTP 时钟同步** | [2-17-基于PTP的时钟同步测试手册.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-17-基于PTP的时钟同步测试手册.pdf) | 多节点 CAN 数据时间戳对齐 | | **5G 通信** | [2-6-PCIe 5G通信测试手册.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-6-PCIe%205G通信测试手册.pdf) | CAN 数据上5G | | **SQLite** | [2-2-Linux应用开发手册.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-2-Linux应用开发手册.pdf) (SQLite章) | CAN 报文本地存储、离线分析 | | **GDB 调试** | [2-18-GDB程序调试方法说明.pdf](../TL3568-EVM(Buildroot-2018.02)_V1.8/3-用户手册/2-18-GDB程序调试方法说明.pdf) | 远程 GDB Server 调试 | --- ## 六、你的 CAN 协议栈推荐集成的关键依赖 ``` ┌──────────────────────────────────────────┐ │ tinyxml2 (已定) → XML 配置解析 │ │ libsocketcan → SocketCAN C API │ │ libpthread → 多线程(收发分离) │ │ libsqlite3 (可选) → 本地报文记录 │ │ libmosquitto (可选) → MQTT 上报 │ └──────────────────────────────────────────┘ ```