linux_learn/docs/04-应用层与中间件开发.md

6.8 KiB
Raw Blame History

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
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 速查

// 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
IgH EtherCAT 2-15-2-IgH EtherCAT主站开发案例.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 是很好的调试入口:

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

3.2 你的 CAN 协议栈 + MQTT

一个常见的工业物联网架构:

RK3568 CAN → 协议栈解析 → 数据转为 JSON → MQTT 发布到云端
                         ← 云端 MQTT 下发命令 ← CAN 发送到 ECU

MQTT Demo 中的 mqtt_sinewave_pub 就是一个"定时采集数据→MQTT发布"的模板。


四、Qt 图形界面 / 多媒体

内容 路径
Qt 开发手册 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
视频 Demo [Demo\platform-demos](../TL3568-EVM(Buildroot-2018.02)_V1.8/4-软件资料/Demo/platform-demos/) (GStreamer、V4L2、RTSP)
三屏异显 2-7-三屏同显、异屏方案演示.pdf

五、其他中间件

技术 资料 适用场景
Docker 2-10-Docker容器部署方法说明.pdf + [Linux\Filesystem\docker](../TL3568-EVM(Buildroot-2018.02)_V1.8/Linux/Filesystem/docker/) 用容器隔离 CAN 协议栈和 Web 界面
PTP 时钟同步 2-17-基于PTP的时钟同步测试手册.pdf 多节点 CAN 数据时间戳对齐
5G 通信 2-6-PCIe 5G通信测试手册.pdf CAN 数据上5G
SQLite 2-2-Linux应用开发手册.pdf (SQLite章) CAN 报文本地存储、离线分析
GDB 调试 2-18-GDB程序调试方法说明.pdf 远程 GDB Server 调试

六、你的 CAN 协议栈推荐集成的关键依赖

┌──────────────────────────────────────────┐
│  tinyxml2 (已定)     → XML 配置解析       │
│  libsocketcan         → SocketCAN C API   │
│  libpthread           → 多线程(收发分离)   │
│  libsqlite3 (可选)    → 本地报文记录       │
│  libmosquitto (可选)  → MQTT 上报         │
└──────────────────────────────────────────┘