diff --git a/doc/design.md b/doc/design.md
index c175b9a0..4e0b7527 100644
--- a/doc/design.md
+++ b/doc/design.md
@@ -114,9 +114,9 @@ hal
基于芯片大小核架构的启动设计。
-#### 1.4.2.1. 红外触发状态启动(正常工作快启)
+#### 1.4.2.1. 白/黑切换状态启动
- 红外触发启动作为产品正常工作时最经常最重要的启动状态。启动后快速抓拍/录像,快速关机。
+ 由外置单片机检测光敏adc,判断由白天切换到黑夜或者黑夜切换到白天时,主动给主控上电,主控上电后会校验并保存新的环境参数,以下次正常PIR启动时,可以避免ircut耗时快速收敛第一帧,最大程度实现快启功能。
**启动时序图**
@@ -125,18 +125,93 @@ sequenceDiagram
participant MCU
participant 小核
participant 大核
-MCU ->> MCU:待机
-opt PIR信号触发
- alt 主控未开机
+loop 光敏检测
+ MCU ->> MCU:定时唤醒(定时时间待定)
+ opt 光敏>>>黑夜状态
+ note over MCU:由外置单片机点亮红外补光灯
+ MCU ->> MCU:点亮红外灯
+ end
+ opt 光敏>>>黑/白切换
MCU ->> 小核:上电
activate 小核
+ note over 小核:根据上次启动的ircut切换条件初始化ircut IO
本次启动上次的切换条件是异常的
+ 小核 ->> 小核:ircut切换-消耗0ms
小核 ->> 小核:Sensor初始化
小核 --> 大核:Sensor初始化完成-100ms
activate 大核
大核 ->> 大核:内核快启抓拍(1P/3P)-200ms
大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms
大核 ->> 大核:启动脚本启动APP-?ms
- 大核 ->> 大核:保存到sd卡-?ms
+ 大核 ->> +MCU:获取启动模式
+ note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
+ MCU -->> -大核:回复启动模式
+ opt 黑/白切换状态
+ 大核 ->> +MCU:获取黑/白状态
+ note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
+ MCU -->> -大核:回复黑或者白
+ opt 黑/白状态不符合抓拍的初始化参数
+ 大核 ->> 大核:ircut重新切换
+ 大核 ->> 大核:重新初始化sensor参数
+ end
+ 大核 ->> MCU:关机
+ MCU ->> 大核:断电
+ end
+ deactivate 小核
+ deactivate 大核
+ end
+end
+```
+
+#### 1.4.2.2. 红外触发状态启动(正常工作快启)
+
+ 红外触发启动作为产品正常工作时最经常最重要的启动状态。启动后快速抓拍/录像,快速关机。
+
+1. 为保证快启速度,IRCUT需要业务设计进行提前切换;
+2. 每次启动抓拍/录像完,需要校验IRCUT状态,保证sensor初始化参数和环境相匹配;
+3. 如果发生sensor初始化参数和光照环境不匹配,需要重新初始化sesor并补拍;
+
+**启动时序图**
+
+```mermaid
+sequenceDiagram
+participant MCU
+participant 小核
+participant 大核
+MCU ->> MCU:PIR中断唤醒
+opt 光敏>>>黑夜状态
+note over MCU:由外置单片机点亮红外补光灯
+ MCU ->> MCU:点亮红外灯
+end
+opt PIR信号触发
+ alt 主控未开机
+ MCU ->> 小核:上电
+ activate 小核
+ note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好
+ 小核 ->> 小核:ircut切换-消耗0ms
+ 小核 ->> 小核:Sensor初始化
+ 小核 --> 大核:Sensor初始化完成-100ms
+ activate 大核
+ 大核 ->> 大核:内核快启抓拍(1P/3P)-200ms
+ 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms
+ 大核 ->> 大核:启动脚本启动APP-?ms
+ 大核 ->> +MCU:获取启动模式
+ note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
+ MCU -->> -大核:回复启动模式
+ opt PIR触发状态
+ 大核 ->> +MCU:获取黑/白状态
+ note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
+ MCU -->> -大核:回复黑或者白
+ alt sensor初始化参数和环境参数匹配
+ note over 大核:环境参数未发生变化时,可直接保存快启的抓拍
+ 大核 ->> 大核:保存到sd卡-?ms
+ else sensor初始化参数和环境参数不匹配
+ note over 大核:环境参数发生变化时,需要重新初始化sensor并补拍
+ 大核 ->> 大核:ircut重新切换
+ 大核 ->> 大核:重新初始化sensor参数
+ 大核 ->> 大核:重新抓拍/录像
+ 大核 ->> 大核:保存到sd卡-?ms
+ end
+ end
alt TEST拨键-OFF
大核 ->> MCU:关机
MCU ->> 小核:断电
@@ -161,7 +236,7 @@ opt PIR信号触发
end
```
-#### 1.4.2.2. 定时触发状态启动
+#### 1.4.2.3. 定时触发状态启动
**定时触发状态启动时序图**
@@ -170,17 +245,41 @@ sequenceDiagram
participant MCU
participant 小核
participant 大核
-MCU ->> MCU:待机
+MCU ->> MCU:定时中断唤醒
+opt 光敏>>>黑夜状态
+note over MCU:由外置单片机点亮红外补光灯
+ MCU ->> MCU:点亮红外灯
+end
opt 根据定时参数上电
MCU ->> 小核:上电
activate 小核
+ note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好
+ 小核 ->> 小核:ircut切换-消耗0ms
小核 ->> 小核:Sensor初始化
小核 --> 大核:Sensor初始化完成-100ms
activate 大核
大核 ->> 大核:内核快启抓拍(1P/3P)-200ms
大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms
大核 ->> 大核:启动脚本启动APP-?ms
- 大核 ->> 大核:保存到sd卡-?ms
+ 大核 ->> +MCU:获取启动模式
+ note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
+ MCU -->> -大核:回复启动模式
+ opt 定时启动状态
+ 大核 ->> +MCU:获取黑/白状态
+ note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
+ MCU -->> -大核:回复黑或者白
+ alt sensor初始化参数和环境参数匹配
+ note over 大核:环境参数未发生变化时,可直接保存快启的抓拍
+ 大核 ->> 大核:保存到sd卡-?ms
+ else sensor初始化参数和环境参数不匹配
+ note over 大核:环境参数发生变化时,需要重新初始化sensor并补拍
+ 大核 ->> 大核:ircut重新切换
+ 大核 ->> 大核:重新初始化sensor参数
+ 大核 ->> 大核:重新抓拍/录像
+ 大核 ->> 大核:保存到sd卡-?ms
+ end
+ end
+ note over 大核:定时状态启动抓拍完直接关机
大核 ->> MCU:关机
MCU ->> 小核:断电
MCU ->> 大核:断电
@@ -189,7 +288,7 @@ opt 根据定时参数上电
end
```
-#### 1.4.2.3. 设置/调试状态启动
+#### 1.4.2.4. 设置/调试状态启动
特殊的启动状态,可以较长时间通电完成其它功能,期间可供用户完成相关调试和参数设置,此时功耗较高。超时进入工作模式。
@@ -203,22 +302,41 @@ participant MCU
participant 小核
participant 大核
MCU ->> MCU:待机
+opt 光敏>>>黑夜状态
+note over MCU:由外置单片机点亮红外补光灯
+ MCU ->> MCU:点亮红外灯
+end
opt TEST拨键-ON
MCU ->> 小核:上电
activate 小核
MCU ->> 大核:上电
activate 大核
+ note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好
+ 小核 ->> 小核:ircut切换-消耗0ms
小核 ->> 小核:Sensor初始化
小核 --> 大核:Sensor初始化完成-100ms
大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms
大核 ->> 大核:启动脚本启动APP-?ms
- alt WiFi链接
- 大核 ->> 大核:常通电待机
- else 无WiFi连接/无操作
- opt 超时
- 大核 ->> MCU:关机
- MCU ->> 小核:断电
- MCU ->> 大核:断电
+ 大核 ->> +MCU:获取启动模式
+ note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
+ MCU -->> -大核:回复启动模式
+ opt TEST状态
+ 大核 ->> +MCU:获取黑/白状态
+ note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
+ MCU -->> -大核:回复黑或者白
+ opt sensor初始化参数和环境参数不匹配
+ note over 大核:环境参数发生变化时,需要重新初始化sensor并补拍
+ 大核 ->> 大核:ircut重新切换
+ 大核 ->> 大核:重新初始化sensor参数
+ end
+ alt WiFi链接
+ 大核 ->> 大核:常通电待机
+ else 无WiFi连接/无操作
+ opt 超时
+ 大核 ->> MCU:关机
+ MCU ->> 小核:断电
+ MCU ->> 大核:断电
+ end
end
end
deactivate 小核
@@ -226,7 +344,7 @@ opt TEST拨键-ON
end
```
-#### 1.4.2.4. 厂测状态启动
+#### 1.4.2.5. 厂测状态启动
生产测试状态触发:使用tf card配置文件触发生产测试状态;