init
This commit is contained in:
230
System Design/SRS/Annex_C_Budgets.md
Normal file
230
System Design/SRS/Annex_C_Budgets.md
Normal file
@@ -0,0 +1,230 @@
|
||||
# Annex C: Timing and Resource Budgets
|
||||
|
||||
**Document:** SRS Annex C
|
||||
**Version:** 1.0
|
||||
**Date:** 2025-01-19
|
||||
|
||||
## Purpose
|
||||
|
||||
This annex defines timing budgets, resource allocation limits, and performance constraints for the Sensor Hub software.
|
||||
|
||||
## 1. Timing Budgets
|
||||
|
||||
### 1.1 Sensor Acquisition Timing
|
||||
|
||||
| Operation | Maximum Duration | Justification |
|
||||
|-----------|------------------|---------------|
|
||||
| Single sensor sample (I2C) | 10ms | I2C transaction time |
|
||||
| Single sensor sample (SPI) | 5ms | SPI transaction time |
|
||||
| Single sensor sample (UART) | 20ms | UART transaction time |
|
||||
| Single sensor sample (Analog/ADC) | 1ms | ADC conversion time |
|
||||
| Filtering (10 samples) | 5ms | Local filtering computation |
|
||||
| Timestamp generation | 1ms | System time access |
|
||||
| Complete acquisition cycle (per sensor) | 100ms | Total per sensor (worst case) |
|
||||
| Complete acquisition cycle (all sensors) | 500ms | 5 sensors × 100ms (with overlap) |
|
||||
|
||||
### 1.2 State Transition Timing
|
||||
|
||||
| Transition | Maximum Duration | Justification |
|
||||
|------------|------------------|---------------|
|
||||
| `[*]` → `INIT` | 100ms | Power-on initialization |
|
||||
| `INIT` → `RUNNING` | 5s | Hardware init, secure boot, MC load |
|
||||
| `INIT` → `BOOT_FAILURE` | 2s | Secure boot verification |
|
||||
| `RUNNING` → `WARNING` | 50ms | Fault detection and state change |
|
||||
| `RUNNING` → `FAULT` | 50ms | Critical fault detection |
|
||||
| `RUNNING` → `OTA_PREP` | 100ms | OTA request processing |
|
||||
| `OTA_PREP` → `TEARDOWN` | 2s | Readiness validation |
|
||||
| `TEARDOWN` → `OTA_UPDATE` | 500ms | Data flush and resource release |
|
||||
| `TEARDOWN` → `INIT` | 500ms | Data flush and reset |
|
||||
| `OTA_UPDATE` → `RUNNING` | 10 minutes | Firmware transfer and flashing |
|
||||
| `RUNNING` → `SERVICE` | 100ms | Debug session establishment |
|
||||
| `SERVICE` → `RUNNING` | 50ms | Debug session closure |
|
||||
| `RUNNING` → `SD_DEGRADED` | 200ms | SD failure detection |
|
||||
|
||||
### 1.3 Communication Timing
|
||||
|
||||
| Operation | Maximum Duration | Justification |
|
||||
|------------|------------------|---------------|
|
||||
| Main Hub request processing | 100ms | Data retrieval and response |
|
||||
| Main Hub message transmission | 50ms | Network transmission (local) |
|
||||
| Main Hub message reception | 50ms | Network reception (local) |
|
||||
| Communication link failure detection | 30s | Heartbeat timeout |
|
||||
| OTA firmware chunk reception | 1s | Network transfer per chunk |
|
||||
| Peer Sensor Hub ping | 100ms | Connectivity check |
|
||||
|
||||
### 1.4 Persistence Timing
|
||||
|
||||
| Operation | Maximum Duration | Justification |
|
||||
|------------|------------------|---------------|
|
||||
| Sensor data write (SD card) | 50ms | File write operation |
|
||||
| Diagnostic event write (SD card) | 20ms | Log append operation |
|
||||
| Machine constants write (NVM) | 10ms | NVS write operation |
|
||||
| Data flush (all pending) | 200ms | Complete flush operation |
|
||||
| SD card failure detection | 500ms | File system check |
|
||||
|
||||
### 1.5 OTA Timing
|
||||
|
||||
| Operation | Maximum Duration | Justification |
|
||||
|------------|------------------|---------------|
|
||||
| OTA readiness validation | 2s | System state and resource check |
|
||||
| Firmware chunk reception | 1s | Network transfer per chunk |
|
||||
| Firmware integrity validation | 5s | Cryptographic verification |
|
||||
| Firmware flashing | 2 minutes | Flash write operation |
|
||||
| Complete OTA operation | 10 minutes | End-to-end OTA process |
|
||||
|
||||
### 1.6 Diagnostic Timing
|
||||
|
||||
| Operation | Maximum Duration | Justification |
|
||||
|------------|------------------|---------------|
|
||||
| Diagnostic event generation | 1ms | Event creation and classification |
|
||||
| Diagnostic event persistence | 20ms | Log write operation |
|
||||
| Diagnostic query processing | 50ms | Log read and filtering |
|
||||
| Fault escalation | 50ms | Severity check and state transition |
|
||||
|
||||
## 2. Resource Budgets
|
||||
|
||||
### 2.1 Memory (RAM) Budget
|
||||
|
||||
| Component | Allocation | Peak Usage | Monitoring Required |
|
||||
|-----------|------------|------------|---------------------|
|
||||
| System (RTOS, ESP-IDF) | 80KB | 100KB | Yes |
|
||||
| Sensor Manager | 20KB | 25KB | Yes |
|
||||
| Event System | 10KB | 15KB | Yes |
|
||||
| Data Pool | 15KB | 20KB | Yes |
|
||||
| Communication Stack | 30KB | 40KB | Yes |
|
||||
| Diagnostics | 10KB | 15KB | Yes |
|
||||
| Persistence | 15KB | 20KB | Yes |
|
||||
| OTA Manager | 20KB | 30KB | Yes |
|
||||
| Security | 10KB | 15KB | Yes |
|
||||
| System Management | 10KB | 15KB | Yes |
|
||||
| HMI | 5KB | 8KB | Yes |
|
||||
| **Total Allocated** | **225KB** | **283KB** | |
|
||||
| **Available (ESP32-S3)** | **512KB** | **512KB** | |
|
||||
| **Utilization** | **44%** | **55%** | |
|
||||
| **Safety Margin** | **56%** | **45%** | |
|
||||
|
||||
**Note:** Peak usage includes worst-case stack usage and temporary buffers. Actual runtime usage SHALL be monitored and maintained below 60% (307KB).
|
||||
|
||||
### 2.2 Flash (Program Memory) Budget
|
||||
|
||||
| Component | Allocation | Notes |
|
||||
|-----------|------------|-------|
|
||||
| Bootloader | 32KB | ESP-IDF bootloader |
|
||||
| Application Code | 1.5MB | Main application firmware |
|
||||
| OTA Partition 0 | 1.5MB | Primary firmware partition |
|
||||
| OTA Partition 1 | 1.5MB | Secondary firmware partition (for updates) |
|
||||
| NVS (Non-Volatile Storage) | 20KB | Configuration and MC storage |
|
||||
| SPIFFS/LittleFS | 500KB | File system (if used) |
|
||||
| **Total Used** | **5.052MB** | |
|
||||
| **Available (8MB Flash)** | **8MB** | |
|
||||
| **Utilization** | **63%** | |
|
||||
| **Safety Margin** | **37%** | |
|
||||
|
||||
### 2.3 CPU Utilization Budget
|
||||
|
||||
| Task | Priority | CPU Usage (Normal) | CPU Usage (Peak) | Notes |
|
||||
|------|----------|-------------------|------------------|-------|
|
||||
| Sensor Acquisition | High | 15% | 25% | Time-critical |
|
||||
| Communication | Medium | 10% | 20% | Network I/O |
|
||||
| Diagnostics | Low | 5% | 10% | Background |
|
||||
| Persistence | Medium | 5% | 15% | Storage I/O |
|
||||
| System Management | High | 5% | 10% | State management |
|
||||
| HMI | Low | 2% | 5% | Display updates |
|
||||
| Idle | - | 58% | 15% | System idle |
|
||||
| **Total** | - | **100%** | **100%** | |
|
||||
|
||||
**Requirement:** CPU utilization SHALL NOT exceed 80% during normal operation (SWR-PERF-005).
|
||||
|
||||
### 2.4 Storage (SD Card) Budget
|
||||
|
||||
| Data Type | Daily Write Volume | Retention Policy | Notes |
|
||||
|-----------|-------------------|------------------|-------|
|
||||
| Sensor Data | 50MB | 7 days (rolling) | 5 sensors × 1 sample/min × 24h |
|
||||
| Diagnostic Log | 5MB | 30 days (circular) | Bounded log with overwrite |
|
||||
| Machine Constants | 1KB | Permanent | Updated only on configuration change |
|
||||
| OTA Firmware | 2MB | Temporary | Deleted after successful update |
|
||||
| **Total Daily Writes** | **57MB** | | |
|
||||
| **SD Card Capacity** | **32GB** (typical) | | |
|
||||
| **Wear Level** | **Low** | | With wear-leveling |
|
||||
|
||||
**Requirement:** SD card writes SHALL be wear-aware to prevent premature failure (SWR-DATA-013).
|
||||
|
||||
### 2.5 Network Bandwidth Budget
|
||||
|
||||
| Operation | Bandwidth | Frequency | Daily Volume |
|
||||
|-----------|-----------|-----------|--------------|
|
||||
| Sensor Data Transmission | 1KB/packet | 1 packet/min | 1.44MB/day |
|
||||
| Diagnostic Reporting | 500B/packet | On-demand | Variable |
|
||||
| Status Updates | 200B/packet | 1 packet/5min | 57.6KB/day |
|
||||
| OTA Firmware Transfer | 2MB | On-demand | Variable |
|
||||
| **Total (Normal Operation)** | - | - | **~1.5MB/day** | |
|
||||
|
||||
**Note:** OTA transfers are infrequent and excluded from daily normal operation budget.
|
||||
|
||||
## 3. Performance Constraints
|
||||
|
||||
### 3.1 Real-Time Constraints
|
||||
|
||||
| Constraint | Requirement | Verification Method |
|
||||
|------------|-------------|---------------------|
|
||||
| Sensor acquisition determinism | ≤ 100ms per sensor | Timing measurement |
|
||||
| State transition determinism | ≤ 50ms (except INIT, TEARDOWN) | Timing measurement |
|
||||
| Communication response time | ≤ 100ms | End-to-end timing |
|
||||
| Data persistence latency | ≤ 200ms | Write operation timing |
|
||||
|
||||
### 3.2 Resource Constraints
|
||||
|
||||
| Resource | Limit | Monitoring | Action on Exceed |
|
||||
|----------|-------|------------|------------------|
|
||||
| RAM Usage | 60% (307KB) | Runtime monitoring | Enter WARNING state, reduce buffers |
|
||||
| CPU Usage | 80% | Runtime monitoring | Reduce task priorities, throttle operations |
|
||||
| SD Card Space | 10% free | File system check | Trigger data retention policy |
|
||||
| Flash Usage | 70% (5.6MB) | Build-time check | Optimize code size |
|
||||
|
||||
### 3.3 Quality Constraints
|
||||
|
||||
| Constraint | Requirement | Verification Method |
|
||||
|------------|-------------|---------------------|
|
||||
| Power loss recovery | < 1 second | Power interruption test |
|
||||
| SD card failure handling | Graceful degradation | SD card removal test |
|
||||
| OTA failure recovery | Rollback capability | OTA failure injection test |
|
||||
| Secure boot failure | BOOT_FAILURE state | Secure boot verification test |
|
||||
|
||||
## 4. Worst-Case Execution Time (WCET) Analysis
|
||||
|
||||
### 4.1 Critical Paths
|
||||
|
||||
**Sensor Acquisition Path:**
|
||||
```
|
||||
Sensor Read (10ms) × 10 samples = 100ms
|
||||
+ Filtering (5ms) = 105ms
|
||||
+ Timestamp (1ms) = 106ms
|
||||
WCET = 110ms (with 4ms margin)
|
||||
```
|
||||
|
||||
**State Transition Path:**
|
||||
```
|
||||
State validation (5ms)
|
||||
+ Component notification (10ms)
|
||||
+ State update (1ms)
|
||||
WCET = 20ms (with 30ms margin for 50ms requirement)
|
||||
```
|
||||
|
||||
**Data Persistence Path:**
|
||||
```
|
||||
Data serialization (10ms)
|
||||
+ File write (50ms)
|
||||
+ Verification (10ms)
|
||||
WCET = 80ms (with 120ms margin for 200ms requirement)
|
||||
```
|
||||
|
||||
## 5. Traceability
|
||||
|
||||
- **SWR-PERF-001:** Sensor acquisition cycle timing
|
||||
- **SWR-PERF-002:** State transition timing
|
||||
- **SWR-PERF-003:** Data persistence timing
|
||||
- **SWR-PERF-004:** OTA operation duration
|
||||
- **SWR-PERF-005:** CPU utilization limit
|
||||
- **SWR-PERF-006:** RAM usage limit
|
||||
- **SWR-PERF-007:** Main Hub response time
|
||||
- **SWR-PERF-008:** Communication link failure detection
|
||||
Reference in New Issue
Block a user