# labgrid_remote_ctrl **Repository Path**: Helena_lili/labgrid_remote_ctrl ## Basic Information - **Project Name**: labgrid_remote_ctrl - **Description**: labgrid 项目,实现远程控制 测试 公司cicl evb 主板 。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-23 - **Last Updated**: 2026-01-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 📋 目标架构 ┌─────────────────────────────┐ ┌─────────────────────────────┐ │ 主机A (EVB主机) │ │ 主机B (测试控制机) │ │ 192.168.21.218 │ │ │ │ │ │ │ │ ┌─────────────────┐ │ │ ┌─────────────────┐ │ │ │ EVB板 (CH347) │ │ │ │ labgrid-client │ │ │ └─────────────────┘ │ │ └─────────────────┘ │ │ │ │ │ │ │ │ ┌─────────────────┐ │ │ ┌─────────────────┐ │ │ │ clci工具 │ │ │ │ 测试脚本 │ │ │ └─────────────────┘ │ │ │ (Python) │ │ │ │ │ │ └─────────────────┘ │ │ ┌─────────────────┐ │ gRPC │ │ │ │ │ labgrid- │◄───────┼──────────┼───────────┘ │ │ │ coordinator │ │ │ │ │ └─────────────────┘ │ │ │ │ │ │ │ │ │ ┌─────────────────┐ │ │ │ │ │ labgrid- │ │ │ │ │ │ exporter │ │ │ │ │ └─────────────────┘ │ │ │ └─────────────────────────────┘ └─────────────────────────────┘ 📁 文件结构 labgrid_config/ ├── exporter.yaml # Host A: 资源导出配置 ├── environment.yaml # Host B: 测试环境配置 ├── test_clci_labgrid.py # Host B: Python测试脚本 ├── start_services_host_a.sh # Host A: 服务启动脚本 └── setup_place_host_b.sh # Host B: Place配置脚本 🚀 完整实施流程 步骤1: 在主机A上配置(EVB主机) 1.1 复制配置文件 将以下文件复制到主机A的工作目录(如 ~/labgrid_setup/): ● exporter.yaml ● start_services_host_a.sh 1.2 检查并修改配置 编辑 exporter.yaml,确保配置正确: resources: serial_port: type: RawSerialPort port: /dev/ch34x_pis0 # 确认串口设备路径 speed: 115200 remote_shell: type: NetworkCommandProtocol host: localhost 1.3 启动服务 cd ~/labgrid_setup/ chmod +x start_services_host_a.sh ./start_services_host_a.sh 预期输出: [1/4] 停止现有服务... ✓ 现有服务已停止 [2/4] 启动Coordinator... ✓ Coordinator 运行中 (PID: XXXX) [3/4] 启动Exporter... ✓ Exporter 运行中 (PID: XXXX) [4/4] 服务状态检查... ✓ Coordinator PID: XXXX ✓ Exporter PID: XXXX 服务启动完成! 步骤2: 在主机B上配置(测试控制机) 2.1 复制配置文件 将以下文件复制到主机B的工作目录(如 ~/labgrid_test/): ● environment.yaml ● setup_place_host_b.sh ● test_clci_labgrid.py 2.2 检查环境配置 编辑 environment.yaml,确保place名称正确: yaml targets: clci-evb: resources: RemotePlace: name: clci-board # 与Host A的place名称一致 drivers: CommandProtocol: {} 2.3 配置Place bash cd ~/labgrid_test/ chmod +x setup_place_host_b.sh ./setup_place_host_b.sh 预期输出: [1/6] 检查Coordinator连接... ✓ Coordinator连接成功 [2/6] 查看可用资源... cmic-ThinkPad-T14-Gen-1/resources/serial_port cmic-ThinkPad-T14-Gen-1/resources/remote_shell [3/6] 清理旧Place... ✓ 旧Place已清理 [4/6] 创建Place... ✓ Place创建成功 [5/6] 添加资源匹配... ✓ 资源匹配成功 [6/6] 获取Place... ✓ Place获取成功 Place配置完成! 步骤3: 运行CLCI测试 3.1 修改测试脚本参数 编辑 test_clci_labgrid.py,确认以下参数: python # 配置参数 COORDINATOR_ADDRESS = "192.168.21.218:20408" CLCI_PATH = "/home/cmic/Desktop/clci-test-tool_3/clci_software_kit/output/clci" SUDO_PASSWORD = "cmic" # 测试命令列表 TEST_COMMANDS = [ "-c 2 -u 0 -m 40 -s 0x21 -a 0x107c", "-c 2 -u 0 -m 40 -s 0x21 -a 0x107d", # 添加更多测试命令... ] 3.2 执行测试 bash chmod +x test_clci_labgrid.py python3 test_clci_labgrid.py 预期输出: ============================================================ Labgrid + CLCI 集成测试 ============================================================ Coordinator: 192.168.21.218:20408 CLCI路径: /home/cmic/Desktop/clci-test-tool_3/clci_software_kit/output/clci 测试命令数: 4 [1/5] 初始化Labgrid环境... ✓ 目标: clci-evb [2/5] 获取CommandProtocol驱动... ✓ 驱动类型: NetworkCommandProtocol [3/5] 测试基本连接... ✓ 当前用户: cmic ✓ 当前目录: /home/cmic [4/5] 检查CLCI工具... ✓ CLCI工具已找到 [5/5] 执行CLCI批量测试... ============================================================ 测试 1/4: -c 2 -u 0 -m 40 -s 0x21 -a 0x107c ------------------------------------------------------------ 输出: Successfully opened CH347 device: /dev/ch34x_pis0 Get slave 21 addr 107c data 23010001 ✓ 测试 1 成功 ... ============================================================ 测试结果汇总 ============================================================ 总计: 4 成功: 4 失败: 0 成功率: 100.0% 🎉 所有测试通过! 🔧 常见问题排查 问题1: Coordinator连接失败 症状: ✗ 无法连接Coordinator 解决方案: 1. 检查Host A的防火墙设置: bash # 在Host A上执行 sudo ufw allow 20408/tcp 2. 验证Coordinator进程: bash # 在Host A上执行 ps aux | grep labgrid-coordinator 3. 测试端口连接: bash # 在Host B上执行 telnet 192.168.21.218 20408 问题2: 资源匹配失败 症状: ✗ 资源匹配失败 解决方案: 1. 检查资源名称是否一致: bash # 在Host B上执行 labgrid-client -x 192.168.21.218:20408 resources 2.确认exporter.yaml中的资源名为 remote_shell 3.重启exporter服务 问题3: CLCI命令执行失败 症状: ✗ 测试失败 (退出码: 1) 解决方案: 1.检查CLCI路径是否正确 2.确认sudo密码正确 3. 检查串口设备权限: bash # 在Host A上执行 ls -la /dev/ch34x_pis0 sudo chmod 666 /dev/ch34x_pis0 4. 添加用户到dialout组: bash # 在Host A上执行 sudo usermod -a -G dialout cmic # 然后重新登录 📊 核心概念说明 1. Labgrid组件 ● Coordinator:中心服务器,管理资源和place ● Exporter:在有硬件的主机上运行,导出资源 ● Client:测试控制端,获取资源并执行测试 2. 资源类型 ● RawSerialPort:原始串口设备 ● NetworkCommandProtocol:远程命令执行协议 3. Place 逻辑资源组,代表一个测试配置。必须先获取place才能使用其资源。 4. Driver labgrid驱动,提供高级操作接口。CommandProtocol驱动用于执行shell命令。 🎯 核心优势 使用labgrid的标准方式,您获得: ✅ 资源管理:统一管理远程测试设备 ✅ 状态追踪:清晰的资源占用状态 ✅ 并发控制:防止多人同时使用同一资源 ✅ 标准API:使用Python API编写稳定的测试脚本 ✅ 可扩展性:轻松添加更多测试设备和命令 📝 总结 这个方案完全使用labgrid的标准功能: 1.不绕过labgrid,而是使用其Python API 2.通过Environment和Driver正确管理资源 3.使用CommandProtocol驱动执行远程命令 4.实现了您的初始目标:从主机B通过labgrid控制主机A上的EVB板