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配置文件触发生产测试状态;