系统架构文档(SAD)
← 开发流程规范 | ← 主页
来源:Stage4 01 系统架构文档 System Architecture Document(SAD)
| 字段 | 内容 |
|---|
| 项目/产品 | 受限网络工况下的生命体征监控智能手表(内部代号:EC‑Watch) |
| 架构范围 | 系统级架构(含腕端设备、手机 App 交互、可选后台;重点在腕端) |
| 硬件平台 | STM32F411CEU6 + nRF52840(BLE 5.x / Mesh) |
| 软件平台 | STM32:FreeRTOS(可 Tickless)/ 裸机可裁剪;nRF:Nordic SDK(SoftDevice/Zephyr 视实现) |
| 版本 | V1.0(重构版) |
| 发布日期 | 2025-12-28 |
| 编写 | 课程文档组 |
| 审核 | 架构评审组 |
| 保密等级 | 内部资料 |
文档变更记录
| 版本 | 修订日期 | 修订内容 | 修订人 | 审核人 |
|---|
| V1.0 | 2025-12-28 | 按大厂 SAD 规范重构:补齐架构驱动、视图、接口、机制与可追溯性 | 课程文档组 | 架构评审组 |
参考资料
- Stage1-01 干系人需求文档(Stakeholder Needs Document)
- Stage1-02 用户需求文档(User Needs Document)
- Stage2-03 业务需求文档(BRD)
- Stage3-01 系统需求文档(SyRS / SRSys)
- Stage4-03 架构决策记录(ADR,单独文档维护)
- 硬件原理图/接口定义(SchDoc / PinMap)
1. 文档目的与适用范围
- 给研发、测试、产品与项目管理提供一致的系统级架构蓝图,用于评审、分工、实施与验证。
- 明确:系统边界、关键模块、接口、数据流、部署与非功能策略(低功耗/可靠性/安全/可维护)。
- 本 SAD 聚焦 Stage4(System Architecture / Allocation)产物:描述“做成什么架构”,不替代详细设计(SDD)。
2. 术语与缩写
| 缩写 | 英文 | 中文 |
|---|
| SN | Stakeholder Needs | 干系人需求 |
| UN/UND | User Needs (Document) | 用户需求(文档) |
| BR/BRD | Business Requirements (Document) | 业务需求(文档) |
| SyRS/SRSys | System Requirements Specification | 系统需求规格说明(系统级) |
| SAD | System Architecture Document | 系统架构文档 |
| RAM | Requirement Allocation Matrix | 需求分配矩阵 |
| ADR | Architecture Decision Record | 架构决策记录 |
| SID | System Interface Definition | 系统接口定义 |
| SSRD | Software System Requirements Definition | 软件系统需求定义(软件侧 HLR) |
| SRS | Software Requirements Specification | 软件需求规格说明(软件侧详细需求) |
3. 背景与问题定义
3.1 场景概述
- 目标用户:矿井、钢厂、码头、海上作业平台等高风险一线人员;网络信号弱/不稳定,且现场管理需要实时与可追溯。
- 核心诉求:生命体征持续采集与异常告警;离线可用;可在本地组网/通过手机作为网关进行数据汇聚与上报。
- 约束变化:NFC 已移除;定位能力通过 BLE 与手机侧融合(手机提供位置源)。
3.2 系统边界
- 系统内:腕端设备(传感/显示/告警/存储/无线)、手机 App(配对绑定/数据同步/定位/转发)、可选后台平台(统计/告警推送/设备管理)。
- 系统外:企业现场管理制度、人员调度流程、第三方网络/蜂窝覆盖、手机系统能力(定位/通知权限)。
图 3‑1 系统上下文(离线优先 + 手机网关 + 可选后台)
4. 架构驱动因素(Architecture Drivers)
4.1 架构目标(从业务到工程约束)
- 离线优先:在断网/断连情况下仍能完成采集、判定、告警与本地留痕;恢复连接后再补传。
- 可扩展:传感器/业务能力可按产品线裁剪与组合;支持后续型号迭代(平台化)。
- 低功耗:以“可解释的功耗预算”为设计目标,支持多档运行模式与测量策略。
- 可靠与可验证:关键告警链路可测、可回放;日志可追踪;支持量产测试与现场排障。
- 安全:腕端与手机绑定/鉴权;升级链路与存储数据具备基本的完整性保护。
4.2 关键约束(Constraints)
- 硬件:主控 STM32F411(资源有限,外设复用复杂);无线采用 nRF52840 作为 BLE 协处理/子系统。
- 通信:受限网络工况;优先 BLE(含 Mesh)本地通信;后台连接属于“可选增强”。
- 定位:腕端不做独立 GPS,依赖手机定位;腕端只维护“与手机的关联与同步”。
- 交付:需要可教学、可面试表达的工程链路(需求→架构→实现→验证→版本基线)。
4.3 架构级关键需求(ASR,摘自 SyRS)
| SyRS ID | 需求摘要(架构相关) | 优先级 | 验证方式 |
|---|
| SR-C-001 | 系统面向“受限/无公网网络覆盖”的作业现场(如矿井、山区、海上平台等),核心通信链路以 BLE(手机网关/本地组网)为主;系统不依赖腕端蜂窝通信能力。 | P0 | 评审/检查 |
| SR-C-002 | 系统不包含 NFC 功能;与身份绑定/入场校验相关能力通过二维码/APP账号与后台权限体系实现。 | P0 | 评审/检查 |
| SR-C-003 | 系统定位信息由手机端获取(GPS/北斗等由手机OS提供),腕端通过 BLE 接收定位并展示/上报;腕端不内置 GNSS 模块。 | P0 | 评审/检查 |
| SR-C-004 | 系统应支持腕端离线独立工作:在与手机/网关断连时仍可完成生命体征采集、告警与本地记录。 | P0 | 测试/演示 |
| SR-IF-001 | 腕端应通过 BLE 与手机 App 建立连接,并支持:绑定/鉴权、数据同步、参数下发、固件升级(OTA)等交互。 | P0 | 测试 |
| SR-IF-002 | 腕端应支持 BLE Mesh(或等效本地组网机制)进行本地告警广播/中继,在无公网时实现人员间的告警联动。 | P0 | 测试 |
| SR-F-003 | 系统应提供“一键紧急求助”入口(实体按键或长按触控),触发后在 1s 内进入告警态并开始本地广播与记录。 | P0 | 测试 |
| SR-F-010 | 系统应支持心率采集与展示:采样周期 ≤1s(TBD),并支持异常心率阈值告警。 | P0 | 测试 |
| SR-F-015 | 系统应支持多通道告警:振动(必选)+ 屏幕弹窗(必选)+ 蜂鸣/提示音(可选),并支持不同等级告警不同提示策略。 | P0 | 测试/演示 |
| SR-F-016 | 系统应支持告警确认(Acknowledge)与解除(Clear)流程:告警产生后需记录确认人/确认时间(通过App或腕端操作)。 | P0 | 测试 |
| SR-F-018 | 系统在与手机/网关断连时,应持续采集并本地存储关键数据与告警事件;恢复连接后应自动补传,保证数据不丢失。 | P0 | 测试 |
| SR-F-020 | 系统应在紧急告警触发后 2s 内通过本地组网广播“告警事件”(包含设备ID、人员ID、告警类型、时间戳等)。 | P0 | 测试 |
5. 架构总览(Overview)
5.1 总体架构策略
- 双 MCU 分工:STM32 负责采集/算法/界面/存储/电源管理;nRF 负责 BLE 协议栈(可含 Mesh)与对外无线交互。
- 离线优先的数据管线:传感器数据 → 本地算法/阈值判定 → 事件化(Event) → 本地存储 → 连接恢复后增量同步。
- 告警优先的链路:告警(震动/蜂鸣/屏显)必须在腕端闭环;无线用于扩大告警覆盖与通知管理端。
5.2 关键模块分解
| 模块 | 职责 |
|---|
| 腕端-采集子系统 | 多传感器采集、校准、采样调度、健康数据预处理 |
| 腕端-告警子系统 | 阈值/状态机、声光震动、Mesh 广播、SOS 快捷触发 |
| 腕端-交互子系统 | LCD/触控、UI 状态机、关键参数展示 |
| 腕端-存储与日志 | 健康数据、事件、操作日志、故障日志;导出与回放 |
| 腕端-电源管理 | 模式管理、外设电源门控、低功耗进入/唤醒、续航估算 |
| 无线通信子系统 | STM32↔nRF 协议;nRF↔手机 GATT;可选 Mesh 中继 |
| 手机 App 网关 | 绑定/权限、位置源、数据同步、上传/推送(可选) |
6. 架构视图(Views)
6.1 功能视图(Functional View)
- 生命体征:心率/体温/(可选血氧)采集、滤波、趋势与异常检测。
- 安全告警:异常阈值告警、SOS 一键求助、电子围栏(手机侧定位)、Mesh 广播/中继。
- 数据管理:本地存储、滚动覆盖策略、导出/同步、审计留痕。
- 设备管理:绑定/解绑、参数配置、固件升级、产测与自检。
6.2 逻辑视图(Logical View)
腕端软件逻辑分层(STM32)
| 层级 | 内容 |
|---|
| Bootloader | 启动校验/回滚策略、升级入口、基础安全策略 |
| OS/Kernel | FreeRTOS 调度、时间基准、同步原语、Tickless/低功耗适配 |
| BSP/Drivers | GPIO/I2C/SPI/UART/DMA/ADC/RTC、LCD/TP、传感器驱动、Flash/EEPROM |
| Services | 采样调度、数据管线、告警引擎、存储管理、设备管理、日志系统 |
| Application | 场景策略(矿井/钢厂等参数集)、UI 业务、联动策略、演示/教学脚本 |
无线子系统(nRF52840)逻辑分层
- BLE 协议栈:GAP/GATT、连接参数、绑定/加密、DFU(若采用 Nordic DFU)。
- 可选 Mesh:告警广播/中继,降低手机直连依赖(场景可配)。
- Host Interface:与 STM32 的 UART/(可选 SPI)命令与数据通道(版本化协议)。
6.3 进程/任务视图(Process View)
STM32 侧建议任务划分(可随裁剪合并)
| 任务 | 职责 | 优先级建议 |
|---|
| SensorTask | 采样调度、I2C/SPI 读数、时间戳 | 高 |
| AlgoTask | 滤波/阈值/趋势、事件生成 | 中 |
| AlarmTask | 告警状态机、声光震动控制、Mesh 告警触发 | 高 |
| UiTask | LVGL 刷新、交互事件处理 | 中 |
| StorageTask | Flash 写入、磨损均衡(若有)、导出 | 低 |
| BleHostTask | 与 nRF 协议、缓存与重传、同步窗口管理 | 中 |
| PowerMgrTask | 模式切换、外设门控、Tickless/Stop 管理 | 高 |
| LogTask | 运行日志聚合、故障码、上传/导出 | 低 |
6.4 数据视图(Data View)
- 原始采样:传感器原始值(带时间戳、采样率、校准信息)。
- 健康记录:按分钟/按事件聚合的记录(心率、体温、可选血氧、活动量)。
- 事件(Event):告警、SOS、电子围栏触发、连接变化、低电量等。
- 日志:运行日志(Info)、故障日志(Warn/Error)、升级与配置变更审计。
存储建议(示例)
| 分区 | 结构 | 容量/策略 |
|---|
| 健康数据分区 | 环形缓冲/按天文件 | ≥7 天(可配置) |
| 事件分区 | 索引 + 事件体 | ≥1000 条(可配置) |
| 日志分区 | 分级日志 + 崩溃转储 | ≥256KB(可配置) |
| 配置分区 | 版本化 KV(含校准/阈值/绑定信息) | 双备份/CRC |
6.5 部署视图(Deployment View)
硬件连接与职责映射(来自原理图/接口设计)
图 6‑1 关键外设连接(示意)
图 6‑2 双 MCU 系统架构与数据通路(示意)
7. 系统接口(Interfaces)
7.1 外部接口(对手机/平台)
- BLE GATT:健康数据服务、告警服务、设备信息服务、电池服务、配置服务、DFU/OTA 服务(按方案选型)。
- 手机定位接口:App 获取手机位置(GPS/Wi‑Fi/基站)并以“位置快照”同步给腕端,用于事件关联与电子围栏判定。
- 后台接口(可选):App 作为网关调用 HTTPS/MQTT 上传;断网缓存与补传策略由 App 负责。
7.2 内部接口(STM32 ↔ nRF)
接口形态:UART(推荐)+ GPIO 唤醒/握手;必要时可升级为 SPI 以提升吞吐。
| 类别 | 内容 | 建议机制 |
|---|
| 控制类 | 配置下发/状态查询/连接控制/功耗模式 | TLV 命令,带序号与 ACK |
| 数据类 | 健康数据块/事件/日志摘要 | 分片 + CRC + 窗口重传 |
| 升级类 | 进入 DFU、镜像分片传输、结果回执 | 升级期间独占链路 |
7.3 硬件接口与产测接口
- 充电与电源:3.7V 电池 + PMIC;电量采样(ADC)用于续航估计与低电量策略。
- 调试:SWD(量产可锁/需授权);串口日志(开发态);产测模式下开放测试指令。
- 可选外设:蜂鸣器/马达/按键/触控/光照等按 SKU 裁剪。
8. 关键机制设计(Cross‑cutting Mechanisms)
8.1 离线优先与补传同步
- 腕端以事件驱动写入:采集→聚合→事件化→落盘;连接状态变化不影响落盘。
- 与手机连接窗口打开时,按“事件优先、健康数据其次”的顺序增量同步。
- 补传采用‘游标/水位’机制,避免重复与丢失;同步过程可中断可续传。
8.2 告警链路闭环
- 告警判定在腕端完成(不依赖手机/云),并立即触发声光震动。
- 告警事件同时走两条链路:①本地 Mesh 广播(扩大覆盖);②与手机连接时上报 App。
- 告警事件包含:类型、级别、时间戳、(可选)位置快照、最近 N 秒关键指标摘要。
8.3 升级与回滚
- 升级入口:App→BLE→nRF→STM32(或 nRF 独立 DFU);升级镜像需版本校验与完整性校验。
- 建议双分区或 A/B 镜像策略;最小化掉电风险:分片校验 + 断点续传 + 最终切换原子化。
- 升级过程全链路记录审计日志:版本、时间、结果、失败原因。
8.4 安全与权限(基础版)
- 绑定:设备出厂默认未绑定;首次绑定需要物理接触确认(按键长按)+ App 认证流程。
- 通信:BLE 配对加密;内部 UART 协议带 CRC 与序号;关键命令需二次确认。
- 数据:本地数据至少做完整性保护(CRC/签名可选);敏感数据(绑定信息/密钥)分区隔离。
9. 质量属性与度量(Quality Attributes)
| 属性 | 策略 | 度量/验收 |
|---|
| 低功耗 | 多档模式:正常/巡检/休眠;Tickless + 外设门控;采样率随模式调整 | 续航(小时/天)、平均电流、唤醒时延 |
| 可靠性 | 看门狗+心跳;关键链路重试;日志可回放;异常自恢复 | MTBF、告警成功率、重连时间 |
| 可维护 | 分层架构+BSP 抽象;统一日志/错误码;模块化测试用例 | 缺陷定位时间、复用比例 |
| 可扩展 | 传感器/服务可插拔;SKU 配置表驱动;nRF/STM32 协议版本化 | 新增功能改动面、兼容性 |
10. 需求到架构的可追溯性(Traceability)
| SyRS ID | 需求摘要 | 主要落点模块(一级) |
|---|
| SR-C-001 | 系统面向“受限/无公网网络覆盖”的作业现场(如矿井、山区、海上平台等),核心通信链路以 BLE(手机网关/本地组网)为主;系统不依赖腕端蜂窝通信能力。 | 无线通信子系统(nRF + 协议) |
| SR-C-002 | 系统不包含 NFC 功能;与身份绑定/入场校验相关能力通过二维码/APP账号与后台权限体系实现。 | 无线通信子系统(nRF + 协议) |
| SR-C-003 | 系统定位信息由手机端获取(GPS/北斗等由手机OS提供),腕端通过 BLE 接收定位并展示/上报;腕端不内置 GNSS 模块。 | 无线通信子系统(nRF + 协议) |
| SR-C-004 | 系统应支持腕端离线独立工作:在与手机/网关断连时仍可完成生命体征采集、告警与本地记录。 | 告警子系统 |
| SR-IF-001 | 腕端应通过 BLE 与手机 App 建立连接,并支持:绑定/鉴权、数据同步、参数下发、固件升级(OTA)等交互。 | 无线通信子系统(nRF + 协议) |
| SR-IF-002 | 腕端应支持 BLE Mesh(或等效本地组网机制)进行本地告警广播/中继,在无公网时实现人员间的告警联动。 | 无线通信子系统(nRF + 协议) |
| SR-F-003 | 系统应提供“一键紧急求助”入口(实体按键或长按触控),触发后在 1s 内进入告警态并开始本地广播与记录。 | 告警子系统 |
| SR-F-010 | 系统应支持心率采集与展示:采样周期 ≤1s(TBD),并支持异常心率阈值告警。 | 告警子系统 |
| SR-F-015 | 系统应支持多通道告警:振动(必选)+ 屏幕弹窗(必选)+ 蜂鸣/提示音(可选),并支持不同等级告警不同提示策略。 | 告警子系统 |
| SR-F-016 | 系统应支持告警确认(Acknowledge)与解除(Clear)流程:告警产生后需记录确认人/确认时间(通过App或腕端操作)。 | 告警子系统 |
| SR-F-018 | 系统在与手机/网关断连时,应持续采集并本地存储关键数据与告警事件;恢复连接后应自动补传,保证数据不丢失。 | 无线通信子系统(nRF + 协议) |
| SR-F-020 | 系统应在紧急告警触发后 2s 内通过本地组网广播“告警事件”(包含设备ID、人员ID、告警类型、时间戳等)。 | 告警子系统 |
注:完整的逐条分配矩阵见 Stage4-02《RAM》;本表仅列架构级关键需求。
附录 A. 评审清单(SAD Review Checklist)
- 系统边界是否清晰?外部依赖是否列明?
- 架构驱动(约束/ASR)是否覆盖 Stage3 SyRS 的关键条目?
- 是否给出了至少 3 个视图:逻辑/进程/部署?接口与数据是否可实现可测试?
- 关键机制(离线、告警、升级、安全、低功耗)是否有闭环策略与验证点?
- 是否能指导 Stage5 SSRD/SRS 的需求分解与 Stage7 验证计划?