Skip to content

Latest commit

 

History

History
920 lines (695 loc) · 21.9 KB

File metadata and controls

920 lines (695 loc) · 21.9 KB

W2 (1/28-2/2) 启动周详细任务列表

周期: 2026-01-28 至 2026-02-02
目标: PTP 300 LOC + TSN 360 LOC + Hardware PCB 50% + QA 框架完成
发布日期: 2026-01-20
作为: M2.1 Alpha 的第一个开发周


📅 周时间线概览

周一 (1/28)   周二 (1/29)   周三 (1/30)   周四 (1/31)   周五 (2/1)   周六 (2/2)
├─ 启动会议    ├─ ANNOUNCE   ├─ SYNC       ├─ BMC       ├─ API 完善   ├─ 总结
├─ 环境验证    │  消息完成    │  消息完成    │  算法完成   │  + 伺服完成 │ 周报告
├─ 工具配置    │  驱动开始    │  驱动继续    │  接口完成   │  性能验证   │ 质量评估
└─ 计划确认    └─ HW 原理图   └─ 集成开始   └─ PCB 规划   └─ 最终集成   └─ 冻结

🚀 周一 (1/28) - 启动日

09:00-09:30 全体启动会议

参与者: All Team Leads + PM + 核心开发者
地点: 线上/线下会议室
议程:

1. M2.1 Alpha 目标确认 (5min)
   ├─ PTP: 5 大功能, 300 LOC
   ├─ TSN: 4 大功能, 360 LOC  
   ├─ HW: 参考设计原理图 50%
   └─ QA: 测试框架完整

2. 周度任务分配 (10min)
   ├─ 每个团队的优先级排序
   ├─ 依赖关系确认
   └─ 日程冲突解决

3. 工具链与环境检查 (5min)
   ├─ Git 工作流演示
   ├─ CI/CD 流水线展示
   └─ 问题收集

4. 风险识别与缓解 (5min)
   ├─ 高风险项评估
   ├─ 备选方案讨论
   └─ 应急预案确认

5. 沟通计划确认 (5min)
   ├─ 每日站立会议时间: 09:00-09:15
   ├─ 下午检查时间: 16:00-16:15
   └─ 周报时间: 周五 16:00

需要准备的材料:

  • M2.1_EXECUTION_PLAN.md (电子版)
  • M2_PROGRESS_TRACKING.md (电子版)
  • 环境检查清单

会议输出:

  • 任务分配表确认
  • 日程冲突解决
  • 风险登记簿建立
  • 团队确认启动

10:00-12:00 各团队独立环境准备

PTP Team 环境准备

任务列表:
─────────────────────────────────────────
□ 验证 GCC 8.2+ 安装
  $ gcc --version

□ 验证 CMake 3.20+ 安装
  $ cmake --version

□ 验证 Google Test 框架
  $ cd ptp-stack
  $ mkdir -p build
  $ cd build
  $ cmake ..
  $ make

□ 验证代码编辑器配置
  ├─ VS Code C/C++ 扩展配置
  ├─ IntelliSense 启用
  └─ clang-format 规则加载

□ 创建首个 feature 分支
  $ git checkout -b feature/announce-impl
  $ git push -u origin feature/announce-impl

□ 验证 CI/CD 流水线触发
  └─ 提交空 commit 触发 GitHub Actions

预计完成: 11:00
验收标准: ✅ 编译通过, ✅ 测试框架可运行

TSN Team 环境准备

任务列表:
─────────────────────────────────────────
□ 验证 Python 3.8+ 安装
  $ python --version

□ 验证虚拟环境配置
  $ python -m venv tsn-env
  $ source tsn-env/bin/activate

□ 安装依赖包
  $ cd tsn-scheduler
  $ pip install -e ".[dev]"

□ 验证 pytest 框架
  $ pytest tests/ -v

□ 验证 Linux 6.6+ 虚拟机
  $ uname -a
  $ ethtool --version

□ 创建首个 feature 分支
  $ git checkout -b feature/scheduler-core

□ 验证 CI/CD 流水线
  └─ 提交空 commit 触发 GitHub Actions

预计完成: 11:00
验收标准: ✅ 虚拟环境可用, ✅ 测试框架可运行

Hardware Team 环境准备

任务列表:
─────────────────────────────────────────
□ 验证 KiCad 7.0+ 安装
  $ kicad --version

□ 创建参考设计项目
  $ cd zone-controller/hardware/kicad
  $ kicad zone-controller.pro &

□ 导入库文件
  ├─ 标准符号库 (KiCad 官方)
  ├─ 封装库 (KiCad 官方)
  └─ 3D 模型库 (可选)

□ 创建原理图模板
  └─ 页面配置, 标题栏, 版本控制

□ 下载芯片数据手册
  ├─ STM32H7 参考手册 (PDF)
  ├─ 网络 PHY 芯片手册
  └─ 其他关键器件手册

□ 创建首个功能分支
  $ git checkout -b feature/hw-design-schematics

预计完成: 11:00
验收标准: ✅ KiCad 可运行, ✅ 原理图模板就绪

QA Team 环境准备

任务列表:
─────────────────────────────────────────
□ 配置测试运行环境
  ├─ Python + pytest 安装
  ├─ C/C++ 编译环境
  └─ 性能测试工具 (perf, etc)

□ 学习 GitHub Actions
  ├─ 阅读 ci-ptp.yml 和 ci-tsn.yml
  ├─ 理解工作流触发条件
  └─ 学习发布流程

□ 准备性能基准测试工具
  ├─ Latency measurement 工具
  ├─ CPU/Memory profiler
  └─ 数据收集脚本

□ 创建测试用例模板
  ├─ pytest 单元测试模板
  ├─ C/C++ 集成测试模板
  └─ 性能测试模板

□ 创建功能分支
  $ git checkout -b feature/qa-testing-framework

预计完成: 11:00
验收标准: ✅ 测试工具就绪, ✅ 模板完整

14:00-15:00 PM 全体协调会

参与者: PM + 所有 Team Leads
议程:

1. 环境准备情况汇报 (10min)
   ├─ PTP: 完成状态 ✅ / ❌
   ├─ TSN: 完成状态 ✅ / ❌
   ├─ HW: 完成状态 ✅ / ❌
   └─ QA: 完成状态 ✅ / ❌

2. 依赖关系最终确认 (10min)
   ├─ PTP ← QA: 测试框架
   ├─ TSN ← Linux: 驱动可用性
   ├─ HW ← 供应商: 交期确认
   └─ 交叉依赖: PTP ↔ TSN

3. 日程冲突解决 (5min)
   ├─ 团队会议时间
   ├─ 技术同步时间
   └─ 用人冲突解决

4. 明日计划确认 (5min)
   ├─ PTP 明日目标: ANNOUNCE 消息
   ├─ TSN 明日目标: 调度器核心
   ├─ HW 明日目标: 原理图设计
   └─ QA 明日目标: 框架完善

5. 潜在风险预警 (10min)

15:00-17:00 各团队内部规划

PTP Team 内部规划

任务清单:
─────────────────────────────────────────
□ Lead 与 Senior 同步设计
  └─ ANNOUNCE 消息的结构定义, 字段顺序

□ 代码架构讨论
  ├─ 文件组织 (include/, src/)
  ├─ 命名规范 (ptp_announce_*)
  └─ 头文件设计

□ 编码标准确认
  ├─ 风格: LLVM clang-format
  ├─ 注释: Doxygen 格式
  └─ 错误处理: 返回错误码

□ 测试计划
  ├─ 单元测试用例设计 (至少 8 个)
  ├─ Mock 对象准备
  └─ 性能测试基准

□ 明日编码启动
  └─ Senior: announce.h 头文件
     Junior: announce.c 实现框架

预计完成: 17:00
输出物: 设计文档 + 代码框架

TSN Team 内部规划

任务清单:
─────────────────────────────────────────
□ Lead 与 Senior 同步
  └─ 调度器核心算法选择 (Hamilton vs FIFO)

□ 架构讨论
  ├─ 模块划分 (scheduler, queue, interface)
  ├─ 类设计 (Dataclass vs 传统类)
  └─ API 设计

□ 编码标准确认
  ├─ 风格: Black formatter
  ├─ 类型提示: Python typing
  └─ 单元测试框架

□ Linux 驱动集成计划
  ├─ ethtool 接口学习
  ├─ taprio 驱动调用
  └─ 错误处理

□ 明日编码启动
  └─ Senior: 调度器核心算法
     Junior: 测试框架扩展

预计完成: 17:00
输出物: API 设计文档 + 代码框架

Hardware Team 内部规划

任务清单:
─────────────────────────────────────────
□ Lead 与 Designer 同步
  └─ 参考设计的网络接口部分设计

□ 原理图设计规范
  ├─ 电路图结构 (按功能模块)
  ├─ 标准化的符号用法
  ├─ 网络命名规范 (CLK_100M, etc)
  └─ 注释规范

□ BOM 管理
  ├─ 元器件库建立
  ├─ 供应商选择 (国内优先)
  └─ 成本追踪表

□ 版本控制策略
  ├─ KiCad 文件版本管理
  └─ Git 忽略规则 (.kicad_pcb~, etc)

□ 明日设计启动
  └─ 网络接口原理图框架

预计完成: 17:00
输出物: 原理图模板 + BOM 模板

QA Team 内部规划

任务清单:
─────────────────────────────────────────
□ Lead 与 Test Engineer 同步
  └─ W2 测试覆盖计划

□ 测试框架规划
  ├─ 单元测试组织 (按团队)
  ├─ 集成测试场景
  └─ 性能基准测试

□ 工具与脚本准备
  ├─ 性能测试脚本
  ├─ 日志收集脚本
  └─ 报告生成脚本

□ CI/CD 流水线学习
  ├─ GitHub Actions 工作流理解
  ├─ 如何调试流水线
  └─ 发布流程

□ 明日启动
  └─ 准备支持 PTP/TSN/HW 团队的测试

预计完成: 17:00
输出物: 测试计划 + 工具脚本

💻 周二 (1/29) - ANNOUNCE 消息完成日

09:00-09:15 站立会议

参与者: 所有团队负责人
内容:

PTP Team:
  Q: ANNOUNCE 消息头文件定义完成了吗?
  └─ ✅ 预期: 是 (lead 昨晚完成设计)
  Q: 编码开始了吗?
  └─ 预期: Senior 已开始 announce.c, Junior 编写 announce.h 头文件

TSN Team:
  Q: 调度器核心算法确定了吗?
  └─ 预期: 是 (Lead 已做决策)
  Q: Python 环境就绪了吗?
  └─ 预期: 是 (所有依赖已安装)

Hardware Team:
  Q: KiCad 项目建立了吗?
  └─ 预期: 是 (模板已创建)
  Q: CPU 电路原理图完成度如何?
  └─ 预期: 95% (基于上周完成)

QA Team:
  Q: 测试框架配置完成了吗?
  └─ 预期: 部分 (pytest 就绪, C++ 还在学习)

10:00-12:00 团队专注编码时间

PTP Team 目标: ANNOUNCE 消息 40 LOC

Senior 工程师:

任务: 实现 announce.c 消息序列化与解析

1. 打开文件: ptp-stack/src/master/announce.c
   
2. 实现序列化函数 (12 LOC)
   int ptp_announce_pack(struct ptp_announce_msg *msg, uint8_t *buf, int buf_len)
   {
     // 将消息字段写入缓冲区
     // 网络字节序转换
     // 返回写入的字节数
   }

3. 实现解析函数 (12 LOC)
   int ptp_announce_unpack(const uint8_t *buf, int buf_len, struct ptp_announce_msg *msg)
   {
     // 从缓冲区读取消息字段
     // 网络字节序转换
     // 返回读取的字节数
   }

4. 编译与基本验证
   $ cd ptp-stack/build
   $ make
   $ (检查编译结果)

预期完成时间: 11:30
验收标准: ✅ 编译无警告, ✅ 消息往返无数据丢失

Junior 工程师:

任务: 编写单元测试 (16 LOC)

1. 打开文件: tests/unit/test_announce.c (新建)

2. 编写测试用例
   □ test_announce_init: 初始化消息
   □ test_announce_pack: 序列化正确性
   □ test_announce_unpack: 解析正确性
   □ test_announce_roundtrip: 往返一致性
   □ test_announce_invalid_buf: 缓冲区太小处理
   □ test_announce_zero_values: 零值处理

3. 编译并运行
   $ cd ptp-stack/build
   $ make
   $ ctest --output-on-failure

预期完成时间: 11:30
验收标准: ✅ 所有测试通过, ✅ 100% 代码覆盖

TSN Team 目标: 调度器核心 120 LOC

Senior 工程师:

任务: 实现 scheduler.py 调度算法 (60 LOC)

1. 打开文件: tsn-scheduler/src/tsn/core/scheduler.py

2. 实现调度算法
   class TSNScheduler:
       def __init__(self, cycle_time=1000.0):
           # 初始化调度器
           self.flows = {}
           self.gate_states = [255] * 8  # 8 个优先级门
       
       def schedule(self, flow):
           # 计算流的时间窗口
           # 分配至对应优先级队列
           # 返回调度结果
       
       def get_gate_states(self, time):
           # 返回给定时间的门控状态
       
       def update(self, delta_time):
           # 周期更新 (1ms 一次)

3. 测试
   $ cd tsn-scheduler
   $ pytest src/tsn/core/scheduler.py -v

预期完成时间: 11:30
验收标准: ✅ 测试通过, ✅ 算法正确

Junior 工程师:

任务: 编写测试用例与集成 (60 LOC)

1. 编写测试用例
   □ test_scheduler_init
   □ test_schedule_single_flow
   □ test_schedule_multiple_flows
   □ test_gate_state_transitions
   □ test_cycle_management
   □ test_invalid_priority

2. 性能基准测试
   $ pytest tests/unit/test_scheduler.py --benchmark

预期完成时间: 11:30
验收标准: ✅ 100+ 行测试代码, ✅ >80% 覆盖

Hardware Team 目标: 网络接口原理图框架

PCB Designer:

任务: 设计网络接口原理图框架 (50% 完成)

1. 打开 KiCad 项目
   $ cd zone-controller/hardware/kicad
   $ kicad zone-controller.pro

2. 检查已完成的部分
   ├─ CPU (STM32H7) 电路 ✅
   ├─ 电源管理 ✅
   └─ 晶振与复位 ✅

3. 开始网络接口设计
   ├─ 网络 PHY 芯片选择 (例: YT8512C)
   ├─ RJ45 连接器位置规划
   ├─ 变压器与隔离设计
   └─ LED 指示灯电路

4. 创建 BOM 初稿
   └─ PHY 芯片, 连接器, 变压器, 电阻电容等

预期完成时间: 11:30
验收标准: ✅ 网络接口框架完整, ✅ BOM 初稿完成

QA Team 目标: 测试框架编写

Test Engineer:

任务: 编写测试框架与支持脚本

1. 准备 PTP 团队的 announce 消息测试支持
   └─ 编写数据包生成脚本

2. 准备 TSN 团队的调度器测试支持
   └─ 编写性能测试辅助工具

3. 编写 GitHub Actions 流水线调试脚本
   └─ 本地测试脚本与 CI 一致

4. 学习 valgrind 和 AddressSanitizer
   └─ 为明天的测试准备

预期完成时间: 11:30
验收标准: ✅ 支持脚本可用, ✅ 测试数据生成

14:00-15:00 代码审查与集成测试

PTP Team - ANNOUNCE 消息审查

审查清单:
─────────────────────────────────
□ 代码风格
  └─ clang-format 检查: ✅ / ❌
  
□ 功能正确性
  ├─ 序列化结果是否符合 PTP 标准?
  ├─ 网络字节序正确?
  └─ 缓冲区边界检查?

□ 错误处理
  ├─ 缓冲区溢出防护?
  ├─ 无效参数检查?
  └─ 返回值有意义?

□ 测试覆盖
  ├─ 所有分支都有测试?
  ├─ 边界情况覆盖?
  └─ 覆盖率 ≥80%?

□ 文档注释
  ├─ Doxygen 格式完整?
  ├─ 参数描述清晰?
  └─ 返回值说明?

审查流程:
1. Senior/Junior 在本地完成自审
2. Lead 进行代码审查 (使用 GitHub)
3. 至少 1 名审查者批准
4. CI/CD 全部通过后合并

预期完成时间: 14:30

TSN Team - 调度器审查

审查清单:
─────────────────────────────────
□ 代码风格
  └─ Black 格式检查
  
□ 算法正确性
  ├─ 调度逻辑是否正确?
  ├─ 优先级处理?
  └─ 时间计算精度?

□ 错误处理
  ├─ 异常捕获?
  ├─ 输入验证?
  └─ 日志记录?

□ 类型提示
  ├─ 所有函数参数都有类型提示?
  └─ 返回值类型标注?

□ 单元测试
  └─ 覆盖率检查

审查流程:
1. Python 代码自审
2. Lead 进行代码审查
3. CI/CD 通过后合并

预期完成时间: 14:30

16:00-16:15 下午检查与同步

参与者: 所有团队负责人

检查内容:
─────────────────────────────────
1. PTP Team
   Q: ANNOUNCE 消息代码完成度?
   └─ 目标: 100% 完成 (40 LOC)
   
   Q: 测试通过率?
   └─ 目标: 100% 通过
   
   Q: 明天开始 SYNC 消息吗?
   └─ 答: 是

2. TSN Team
   Q: 调度器核心代码完成度?
   └─ 目标: 100% 完成 (120 LOC)
   
   Q: 是否准备好进行驱动集成?
   └─ 答: 是, 但需要 Linux 环境验证

3. Hardware Team
   Q: 网络接口原理图进度?
   └─ 目标: 框架完成 (50%)
   
   Q: BOM 初稿完成吗?
   └─ 答: 初稿完成, 待精化

4. QA Team
   Q: 测试框架支持各团队吗?
   └─ 答: 是, 脚本已准备

问题列表:
─────────────────────────────────
□ 问题 1: _________________ (优先级: P1/P2/P3)
   所有者: _____________ 完成时间: _____________

□ 问题 2: _________________ (优先级: P1/P2/P3)
   所有者: _____________ 完成时间: _____________

17:00-18:00 周二总结与周三规划

周二总结:
─────────────────────────────────
✅ 完成:
  □ PTP: ANNOUNCE 消息 40 LOC ✅
  □ TSN: 调度器核心 120 LOC ✅
  □ HW: 网络接口框架 ✅
  □ QA: 测试支持完成 ✅

⚠️ 延期/问题:
  □ _________________ (解决方案: _____________)

🔴 阻碍:
  □ _________________ (缓解措施: _____________)

周三预期:
─────────────────────────────────
PTP Team:
  └─ 目标: SYNC 消息 50 LOC + 驱动集成开始

TSN Team:
  └─ 目标: Linux 驱动集成 100 LOC

Hardware Team:
  └─ 目标: 网络接口原理图 75% 完成

QA Team:
  └─ 目标: 集成测试框架启动

🎯 关键代码示例

PTP Team - announce.h 头文件框架

#ifndef __PTP_ANNOUNCE_H__
#define __PTP_ANNOUNCE_H__

#include "types.h"

// ANNOUNCE 消息结构体
struct ptp_announce_msg {
    uint64_t origin_timestamp;        // originTimestamp (64 bit)
    uint16_t current_utc_offset;      // currentUtcOffset (16 bit)
    uint8_t grand_master_priority1;   // grandmasterPriority1
    uint8_t grand_master_class;       // grandmasterClockClass
    uint16_t grand_master_accuracy;   // grandmasterClockAccuracy
    uint32_t grand_master_variance;   // grandmasterClockVariance
    uint8_t grand_master_priority2;   // grandmasterPriority2
    uint8_t steps_removed;            // stepsRemoved
    uint8_t time_source;              // timeSource
};

// 函数声明
int ptp_announce_init(struct ptp_announce_msg *msg);
int ptp_announce_pack(struct ptp_announce_msg *msg, uint8_t *buf, int buf_len);
int ptp_announce_unpack(const uint8_t *buf, int buf_len, struct ptp_announce_msg *msg);

#endif // __PTP_ANNOUNCE_H__

TSN Team - scheduler.py 框架

from dataclasses import dataclass
from typing import Dict, List, Optional

@dataclass
class Flow:
    """Time-sensitive network flow definition"""
    flow_id: int
    priority: int  # 0-7 (IEEE 802.1Q)
    deadline: float  # milliseconds
    period: float  # milliseconds
    payload_size: int  # bytes

class TSNScheduler:
    """TSN Scheduler implementing 802.1Qbv Time-Aware Shaping"""
    
    def __init__(self, cycle_time: float = 1000.0):
        """Initialize scheduler
        
        Args:
            cycle_time: Schedule cycle time in milliseconds
        """
        self.cycle_time = cycle_time
        self.flows: Dict[int, Flow] = {}
        self.gate_states = [0xFF] * 8  # All gates open initially
    
    def schedule(self, flow: Flow) -> bool:
        """Schedule a new flow
        
        Args:
            flow: Flow to schedule
            
        Returns:
            True if successfully scheduled, False otherwise
        """
        # TODO: Implement scheduling algorithm
        pass
    
    def get_gate_states(self, time: float) -> List[int]:
        """Get gate control list states at given time"""
        # TODO: Implement gate state calculation
        pass

📊 W2 日报模板

日期: 2026-01-29 (周二)

PTP Team 日报

完成度: 40/40 LOC (100%)

昨日完成:
  ✅ ANNOUNCE 消息 announce.c 实现 (30 LOC)
  ✅ 单元测试编写 (10 LOC)
  ✅ Code Review 通过
  ✅ CI/CD 全部通过

今日计划:
  □ SYNC 消息设计确认
  □ SYNC 消息实现开始 (预计 20 LOC)

问题/阻碍:
  □ 无

风险:
  □ 无

预期完成度:
  W2 EOW: 100% (300 LOC)

TSN Team 日报

完成度: 120/360 LOC (33%)

昨日完成:
  ✅ 调度器核心算法实现 (60 LOC)
  ✅ 单元测试编写 (60 LOC)
  ✅ Code Review 通过
  ✅ 基本功能验证

今日计划:
  □ Linux 驱动集成开始 (预计 40 LOC)

问题/阻碍:
  □ Linux 6.6 ethtool 接口需要进一步学习

风险:
  ⚠️ 驱动集成难度可能高于预期

预期完成度:
  W2 EOW: 100% (360 LOC)

Hardware Team 日报

完成度: 50%

昨日完成:
  ✅ 网络接口原理图框架完成
  ✅ PHY 芯片选择确认 (YT8512C)
  ✅ BOM 初稿完成

今日计划:
  □ 网络接口原理图细化 (75%)
  □ PCB 尺寸规划

问题/阻碍:
  □ 无

风险:
  □ 无

预期完成度:
  W2 EOW: 50% (继续至 W3)

QA Team 日报

完成度: 25%

昨日完成:
  ✅ 测试框架支持脚本编写
  ✅ GitHub Actions 学习完成
  ✅ Valgrind 安装与配置

今日计划:
  □ ANNOUNCE 消息测试数据生成
  □ 调度器性能测试脚本

问题/阻碍:
  □ C/C++ 测试工具链学习陡峭

风险:
  ⚠️ 可能需要周三晚些时间才能完整支持性能测试

预期完成度:
  W2 EOW: 80% (框架完整, 部分测试待补充)

✅ 周二 (1/29) 关键决策与检查点

必须完成的任务

  • PTP ANNOUNCE 消息完成 (40 LOC)
  • TSN 调度器核心完成 (120 LOC)
  • 所有代码 Code Review 通过
  • 所有 CI/CD 通过
  • 问题登记与解决

需要做出的决策

  • SYNC 消息设计确认
  • Linux 驱动集成方案确认
  • 任何 Code Review 反馈的处理

风险评估

  • 是否有延期风险?
  • 是否需要调整计划?
  • 是否需要增加资源?

更多详细信息

详见: