周期: 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 规划 └─ 最终集成 └─ 冻结
参与者: 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 (电子版)
- 环境检查清单
会议输出:
- 任务分配表确认
- 日程冲突解决
- 风险登记簿建立
- 团队确认启动
任务列表:
─────────────────────────────────────────
□ 验证 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
验收标准: ✅ 编译通过, ✅ 测试框架可运行
任务列表:
─────────────────────────────────────────
□ 验证 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
验收标准: ✅ 虚拟环境可用, ✅ 测试框架可运行
任务列表:
─────────────────────────────────────────
□ 验证 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 可运行, ✅ 原理图模板就绪
任务列表:
─────────────────────────────────────────
□ 配置测试运行环境
├─ 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
验收标准: ✅ 测试工具就绪, ✅ 模板完整
参与者: 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)
任务清单:
─────────────────────────────────────────
□ Lead 与 Senior 同步设计
└─ ANNOUNCE 消息的结构定义, 字段顺序
□ 代码架构讨论
├─ 文件组织 (include/, src/)
├─ 命名规范 (ptp_announce_*)
└─ 头文件设计
□ 编码标准确认
├─ 风格: LLVM clang-format
├─ 注释: Doxygen 格式
└─ 错误处理: 返回错误码
□ 测试计划
├─ 单元测试用例设计 (至少 8 个)
├─ Mock 对象准备
└─ 性能测试基准
□ 明日编码启动
└─ Senior: announce.h 头文件
Junior: announce.c 实现框架
预计完成: 17:00
输出物: 设计文档 + 代码框架
任务清单:
─────────────────────────────────────────
□ Lead 与 Senior 同步
└─ 调度器核心算法选择 (Hamilton vs FIFO)
□ 架构讨论
├─ 模块划分 (scheduler, queue, interface)
├─ 类设计 (Dataclass vs 传统类)
└─ API 设计
□ 编码标准确认
├─ 风格: Black formatter
├─ 类型提示: Python typing
└─ 单元测试框架
□ Linux 驱动集成计划
├─ ethtool 接口学习
├─ taprio 驱动调用
└─ 错误处理
□ 明日编码启动
└─ Senior: 调度器核心算法
Junior: 测试框架扩展
预计完成: 17:00
输出物: API 设计文档 + 代码框架
任务清单:
─────────────────────────────────────────
□ Lead 与 Designer 同步
└─ 参考设计的网络接口部分设计
□ 原理图设计规范
├─ 电路图结构 (按功能模块)
├─ 标准化的符号用法
├─ 网络命名规范 (CLK_100M, etc)
└─ 注释规范
□ BOM 管理
├─ 元器件库建立
├─ 供应商选择 (国内优先)
└─ 成本追踪表
□ 版本控制策略
├─ KiCad 文件版本管理
└─ Git 忽略规则 (.kicad_pcb~, etc)
□ 明日设计启动
└─ 网络接口原理图框架
预计完成: 17:00
输出物: 原理图模板 + BOM 模板
任务清单:
─────────────────────────────────────────
□ Lead 与 Test Engineer 同步
└─ W2 测试覆盖计划
□ 测试框架规划
├─ 单元测试组织 (按团队)
├─ 集成测试场景
└─ 性能基准测试
□ 工具与脚本准备
├─ 性能测试脚本
├─ 日志收集脚本
└─ 报告生成脚本
□ CI/CD 流水线学习
├─ GitHub Actions 工作流理解
├─ 如何调试流水线
└─ 发布流程
□ 明日启动
└─ 准备支持 PTP/TSN/HW 团队的测试
预计完成: 17:00
输出物: 测试计划 + 工具脚本
参与者: 所有团队负责人
内容:
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++ 还在学习)
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% 代码覆盖
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% 覆盖
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 初稿完成
Test Engineer:
任务: 编写测试框架与支持脚本
1. 准备 PTP 团队的 announce 消息测试支持
└─ 编写数据包生成脚本
2. 准备 TSN 团队的调度器测试支持
└─ 编写性能测试辅助工具
3. 编写 GitHub Actions 流水线调试脚本
└─ 本地测试脚本与 CI 一致
4. 学习 valgrind 和 AddressSanitizer
└─ 为明天的测试准备
预期完成时间: 11:30
验收标准: ✅ 支持脚本可用, ✅ 测试数据生成
审查清单:
─────────────────────────────────
□ 代码风格
└─ clang-format 检查: ✅ / ❌
□ 功能正确性
├─ 序列化结果是否符合 PTP 标准?
├─ 网络字节序正确?
└─ 缓冲区边界检查?
□ 错误处理
├─ 缓冲区溢出防护?
├─ 无效参数检查?
└─ 返回值有意义?
□ 测试覆盖
├─ 所有分支都有测试?
├─ 边界情况覆盖?
└─ 覆盖率 ≥80%?
□ 文档注释
├─ Doxygen 格式完整?
├─ 参数描述清晰?
└─ 返回值说明?
审查流程:
1. Senior/Junior 在本地完成自审
2. Lead 进行代码审查 (使用 GitHub)
3. 至少 1 名审查者批准
4. CI/CD 全部通过后合并
预期完成时间: 14:30
审查清单:
─────────────────────────────────
□ 代码风格
└─ Black 格式检查
□ 算法正确性
├─ 调度逻辑是否正确?
├─ 优先级处理?
└─ 时间计算精度?
□ 错误处理
├─ 异常捕获?
├─ 输入验证?
└─ 日志记录?
□ 类型提示
├─ 所有函数参数都有类型提示?
└─ 返回值类型标注?
□ 单元测试
└─ 覆盖率检查
审查流程:
1. Python 代码自审
2. Lead 进行代码审查
3. CI/CD 通过后合并
预期完成时间: 14:30
参与者: 所有团队负责人
检查内容:
─────────────────────────────────
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)
所有者: _____________ 完成时间: _____________
周二总结:
─────────────────────────────────
✅ 完成:
□ PTP: ANNOUNCE 消息 40 LOC ✅
□ TSN: 调度器核心 120 LOC ✅
□ HW: 网络接口框架 ✅
□ QA: 测试支持完成 ✅
⚠️ 延期/问题:
□ _________________ (解决方案: _____________)
🔴 阻碍:
□ _________________ (缓解措施: _____________)
周三预期:
─────────────────────────────────
PTP Team:
└─ 目标: SYNC 消息 50 LOC + 驱动集成开始
TSN Team:
└─ 目标: Linux 驱动集成 100 LOC
Hardware Team:
└─ 目标: 网络接口原理图 75% 完成
QA Team:
└─ 目标: 集成测试框架启动
#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__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完成度: 40/40 LOC (100%)
昨日完成:
✅ ANNOUNCE 消息 announce.c 实现 (30 LOC)
✅ 单元测试编写 (10 LOC)
✅ Code Review 通过
✅ CI/CD 全部通过
今日计划:
□ SYNC 消息设计确认
□ SYNC 消息实现开始 (预计 20 LOC)
问题/阻碍:
□ 无
风险:
□ 无
预期完成度:
W2 EOW: 100% (300 LOC)
完成度: 120/360 LOC (33%)
昨日完成:
✅ 调度器核心算法实现 (60 LOC)
✅ 单元测试编写 (60 LOC)
✅ Code Review 通过
✅ 基本功能验证
今日计划:
□ Linux 驱动集成开始 (预计 40 LOC)
问题/阻碍:
□ Linux 6.6 ethtool 接口需要进一步学习
风险:
⚠️ 驱动集成难度可能高于预期
预期完成度:
W2 EOW: 100% (360 LOC)
完成度: 50%
昨日完成:
✅ 网络接口原理图框架完成
✅ PHY 芯片选择确认 (YT8512C)
✅ BOM 初稿完成
今日计划:
□ 网络接口原理图细化 (75%)
□ PCB 尺寸规划
问题/阻碍:
□ 无
风险:
□ 无
预期完成度:
W2 EOW: 50% (继续至 W3)
完成度: 25%
昨日完成:
✅ 测试框架支持脚本编写
✅ GitHub Actions 学习完成
✅ Valgrind 安装与配置
今日计划:
□ ANNOUNCE 消息测试数据生成
□ 调度器性能测试脚本
问题/阻碍:
□ C/C++ 测试工具链学习陡峭
风险:
⚠️ 可能需要周三晚些时间才能完整支持性能测试
预期完成度:
W2 EOW: 80% (框架完整, 部分测试待补充)
- PTP ANNOUNCE 消息完成 (40 LOC)
- TSN 调度器核心完成 (120 LOC)
- 所有代码 Code Review 通过
- 所有 CI/CD 通过
- 问题登记与解决
- SYNC 消息设计确认
- Linux 驱动集成方案确认
- 任何 Code Review 反馈的处理
- 是否有延期风险?
- 是否需要调整计划?
- 是否需要增加资源?
详见:
- M2_EXECUTION_PLAN.md - 全部 8 周计划
- M2_PROGRESS_TRACKING.md - 进度追踪表
- CONTRIBUTING.md - 代码提交标准
- PROJECT_MANAGEMENT.md - 项目管理流程