• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file hi_reset.h
3  *
4  * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 /** @defgroup iot_sys  Active Reset
19  * @ingroup system
20  */
21 
22 #ifndef __HI_RESET_H__
23 #define __HI_RESET_H__
24 #include <hi_types.h>
25 #include <hi_mdm_types.h>
26 #include <hi_ft_nv.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 #define HI_SYS_REBOOT_CAUSE_USR_BEGIN   0x8000
33 #define HI_SYS_REBOOT_CAUSE_USR_END     63 /* 8bit: 0 - 63 */
34 
35 /**
36 * @ingroup  iot_sys
37 *
38 * Cause for active restart. CNcomment:主动重启原因CNend
39 */
40 typedef enum {
41     HI_SYS_REBOOT_CAUSE_UNKNOWN = 0,
42     HI_SYS_REBOOT_CAUSE_CMD,        /**< system reset begin. */
43     HI_SYS_REBOOT_CAUSE_UPG,        /**< upgrade reset begin. */
44     HI_SYS_REBOOT_CAUSE_UPG_B,      /**< upgrade backup image reset. */
45     HI_SYS_REBOOT_CAUSE_WIFI_MODE,  /**< wifi module reset begin. */
46     HI_SYS_REBOOT_CAUSE_USR_NORMAL_REBOOT, /**< user reset begin. */
47     HI_SYS_REBOOT_CAUSE_USR0,
48     HI_SYS_REBOOT_CAUSE_USR1,
49     HI_SYS_REBOOT_CAUSE_AT_BUSY,
50     HI_SYS_REBOOT_CAUSE_MAX = HI_SYS_REBOOT_CAUSE_USR_END + 1,
51 } hi_sys_reboot_cause;
52 
53 /**
54 * @ingroup  iot_sys
55 * @brief  System hard reboot. CNcomment:系统硬重启。CNend
56 *
57 * @par 描述:
58 *          System Hard reboot:reset whole chip. CNcomment:硬重启 :整芯片复位。CNend
59 *
60 * @attention  None
61 *
62 * @param  cause         [IN] type #hi_sys_reboot_cause , reboot cause, see hi_sys_reboot_cause.
63 CNcomment:重启原因,取值参见hi_sys_reboot_cause。CNend
64 *
65 *
66 * @retval None.
67 *
68 * @par 依赖:
69 *            @li hi_reset.h: Describes the APIs for obtaining system information.
70 CNcomment:文件用于描述系统复位相关接口。CNend
71 * @see None
72 */
73 hi_void hi_hard_reboot(hi_sys_reboot_cause cause);
74 
75 /**
76 * @ingroup  iot_sys
77 * @brief  System soft reboot. CNcomment:系统软重启。CNend
78 *
79 * @par 描述:
80 *          System Soft reboot:part of peripheral won't reset(such as GPIO/PWM).
81 CNcomment:软重启:部分外设不复位,如GPIO/PWM。CNend
82 * @attention
83 *           @li only GPIO is the default peripheral that won't reset when soft reboot.
84 PWM should config in menuconfig. other peripheras need another setting.
85 CNcomment:仅GPIO在软重启时默认不复位,PWM需要在menuconfig中配置,
86 其余外设需要额外配置。CNend
87 *
88 * @param  cause         [IN] type #hi_sys_reboot_cause ,  reboot cause, see hi_sys_reboot_cause.
89 CNcomment:重启原因,取值参见hi_sys_reboot_cause。CNend
90 *
91 *
92 * @retval None.
93 *
94 * @par 依赖:
95 *            @li hi_reset.h: Describes the APIs for obtaining system information.
96 CNcomment:文件用于描述系统复位相关接口。CNend
97 * @see None
98 */
99 hi_void hi_soft_reboot(hi_sys_reboot_cause cause);
100 
101 /**
102 * @ingroup  iot_sys
103 * @brief  Enables or disables the function of recording the reset times.
104 CNcomment:使能(去使能)记录复位次数功能。CNend
105 *
106 * @par 描述:
107 *     @li Enables or disables the function of recording the reset times. When the function of recording the reset times
108 *         is enabled, in order to avoid the issue that fast flash life exhaustion caused by writing NV when the system
109 *         is frequently powered on and off, NV will be written 30 seconds after the system is started.
110 CNcomment:使能(去使能)记录复位次数功能。使能复位次数记录功能后,
111 为避免系统经常频繁上下电时写NV导致flash寿命快速耗尽问题,每次启动时会在上电后30秒时写NV,正常计数复位次数。CNend
112 *     @li When the number of reset times is updated, the flash memory needs to be written. Generally, when the system
113 *         frequently powers on and off and power-on NV write greatly hurts the flash service life, set enable to
114 *         HI_FALSE and check whether the service function is affected.
115 CNcomment:复位次数更新需要执行写Flash操作,通常在系统经常频繁上下电,
116 不能接受上电写NV导致flash寿命快速耗尽的场景时,将enable设置为HI_FALSE,
117 同时要考虑是否对业务功能造成影响。CNend
118 *     @li Set enable takes effect after the next reset, and set disable takes effect when write NV next time.
119 CNcomment:配置开启是在下次复位后生效,配置关闭是在下次写NV时生效。CNend
120 *
121 * @attention
122 *   @li This feature should be disable by default. CNcomment:该功能默认不使能。CNend
123 *   @li It should be called in the initialization function of the app layer.
124 CNcomment:应该在应用层初始化函数中调用。CNend
125 *   @li Disabling this function may result in some influences. You are advised to disable it in scenarios where the
126 *       system is frequently powered on and off.CNcomment:关闭该功能需要考虑对使用复位次数业务功能
127 的影响,建议在系统经常频繁上下电的场景关闭该功能,其他场景打开该功能。CNend
128 *
129 * @param enable [IN] type #hi_bool Enable/Disable. CNcomment:是否使能计数功能。CNend
130 *
131 * @retval #0               Success.
132 * @retval #Other           Failure. For details, see hi_errno.h.
133 *
134 * @par 依赖:
135 *            @li hi_reset.h: Describes the APIs for obtaining system information.
136 CNcomment:文件用于描述系统复位相关接口。CNend
137 * @see None
138 */
139 hi_u32 hi_enable_reset_times_save(hi_bool enable);
140 
141 /**
142 * @ingroup  iot_sys
143 * @brief  Obtains reset times recorded in NV. CNcomment:获取NV中记录的系统复位次数。CNend
144 *
145 * @par 描述:
146 *          Obtains reset times recorded in NV. CNcomment:获取NV中记录的系统复位次数。CNend
147 *
148 * @attention  None
149 *
150 * @param None
151 *
152 * @retval #HI_ERR_FAILURE  Read NV Failure.
153 * @retval #Other           Reboot times number. CNcomment:系统复位次数。CNend
154 *
155 * @par 依赖:
156 *            @li hi_reset.h: Describes the APIs for obtaining system information.
157 CNcomment:文件用于描述系统复位相关接口。CNend
158 * @see None
159 */
160 hi_u32 hi_get_reset_times(hi_void);
161 
162 #ifdef __cplusplus
163 }
164 #endif
165 
166 #endif /* __HI_RESET_H__ */
167 
168