1 /** 2 * @file hi_config.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 #ifndef __HI_CONFIG_H__ 19 #define __HI_CONFIG_H__ 20 /*****************************************************************************/ 21 #include <hi_types_base.h> 22 23 /* 24 * Global module/submodule ID setting.CNcomment:全局模块/子模块ID设置 25 * Note that HI_MOD_MAX_NUM needs to be increased or decreased after the number of modules is increased or decreased. 26 * CNcomment:注意增减模块个数后,需要增减 HI_MOD_MAX_NUM 27 * SAL : [200, 300) 28 * BSP : [300, 400) -- [12c, 190) 29 * MAC : [500, 600) -- [1F4, 258) 30 * APP : [800, 900) -- [320, 384) 31 */ 32 #ifndef PRODUCT_CFG_DIAG_MODULE_ID_MAX_NUM 33 #define PRODUCT_CFG_DIAG_MODULE_ID_MAX_NUM 60 34 #endif 35 #define HI_MOD_MAX_NUM (PRODUCT_CFG_DIAG_MODULE_ID_MAX_NUM) /* Number of Modules */ 36 37 /* SAL: [200, 300) */ 38 #define HI_MOD_ID_SAL_SYS 201 39 #define HI_MOD_ID_SAL_NVM 203 40 #define HI_MOD_ID_SAL_DIAG 204 41 #define HI_MOD_ID_SAL_DFX 205 42 #define HI_MOD_ID_CPUP_DFX 210 43 #define HI_MOD_ID_CIPHER 211 44 45 /* BSP: [300, 400) */ 46 #define HI_MOD_ID_DRV 300 /* 0x12C */ 47 #define HI_MOD_ID_DRV_SPI 307 /* 0x133 */ 48 #define HI_MOD_ID_DRV_DMA 316 /* 0x13c */ 49 #define HI_MOD_ID_UPG 317 50 #define HI_MOD_ID_CRYPTO 318 51 #define HI_MOD_ID_I2S 319 52 #define HI_MOD_ID_UART 320 53 #define HI_MOD_ID_WIFI_DRV 400 /* 0x190 */ 54 55 /* APP : [800, 900) */ 56 #define HI_MOD_ID_APP_COMMON 812 /* 32C */ 57 #define HI_MOD_ID_APP_AT 813 /* 32C */ 58 59 /* Module name size in bytes */ 60 #define HI_SYS_MOD_NAME_LEN 16 61 #ifdef __NEW_FILE_ID__ 62 #define HI_DIAG_LOG_MSG_MOD_ID __NEW_MOD_ID__ 63 #define HI_DIAG_LOG_MSG_FILE_ID __NEW_FILE_ID__ 64 #else 65 #define HI_DIAG_LOG_MSG_MOD_ID 0 66 #define HI_DIAG_LOG_MSG_FILE_ID 0 67 #endif 68 69 /* Maximum size of a single DIAG packet buffer.CNcomment:DIAG包缓存单包最大大小设置 */ 70 #define HI_DIAG_BUFFERING_MSG_MAX_LEN 100 71 #define HI_DIAG_BUFFERING_CMD_MAX_LEN 100 72 73 /* Sets the buffer queue size in a DAIG channel. CNcomment:DAIG 通道中缓存队列大小设置 */ 74 /* Messages,if the memory usage is greater than the threshold, the memory is dynamically allocated. 75 CNcomment:消息 大于该门限则动态分配内存 */ 76 #define HI_DIAG_BUFFERING_MSG_NUM 5 77 /* Command,if the memory usage is greater than the threshold, the memory is dynamically allocated. 78 CNcomment:命令 大于该门限则动态分配内存 */ 79 #define HI_DIAG_BUFFERING_CMD_NUM 2 80 81 82 /***************************************************************************** 83 Global Static Settings 84 *****************************************************************************/ 85 #define HI_MAC_ADDR_LEN 6 86 87 /* Maximum size of the received DIAG packet, including the channel frame header and payload. 88 CNcomment:接收DIAG包最大大小,包括通道帧头和payload */ 89 #define HI_DIAG_PACKET_REQ_CACHE_MAX_SIZE 320 90 #define HI_DIAG_PACKET_ACK_MAX_SIZE 1024 91 #define HI_DIAG_PACKET_REQ_DATA_MAX_SIZE 320 92 93 /* Task waiting exception. */ 94 #define HI_SYS_TASK_WAIT_EXCEPTION_TIME_OUT 10000 95 96 /* The total size of the RAM */ 97 HI_EXTERN hi_u32 g_halSectorsRamSize; 98 /* The start address of RAM */ 99 HI_EXTERN hi_void *g_halSectorsRamStart; 100 101 #define hi_is_valid_ram_addr(_x) (((hi_u32)(_x) >= (hi_u32)(uintptr_t)g_halSectorsRamStart) && \ 102 ((hi_u32)(_x) < ((hi_u32)(uintptr_t)g_halSectorsRamStart + (uintptr_t)g_halSectorsRamSize))) 103 #define hi_is_valid_code_addr(_x) (_x) 104 105 106 /******************************************************************************* 107 NV range 108 *****************************************************************************/ 109 /** 110 * @ingroup iot_nv 111 * 112 * Factory NV area start ID (including this ID).CNcomment:工厂NV区起始ID(包含此ID)。CNend 113 */ 114 #define HI_NV_FACTORY_ID_START 0x0 115 116 /** 117 * @ingroup iot_nv 118 * 119 * Factory NV area end ID (not included).CNcomment:工厂NV区结束ID(不包含此ID)。CNend 120 */ 121 #define HI_NV_FACTORY_ID_END 0x16 122 123 /** 124 * @ingroup iot_nv 125 * 126 * Factory NV user area start ID (including this ID).CNcomment:工厂NV区用户区起始ID(包含此ID)。CNend 127 */ 128 #define HI_NV_FACTORY_USR_ID_START HI_NV_FACTORY_ID_END 129 130 /** 131 * @ingroup iot_nv 132 * 133 * Factory NV user area end ID (not included).CNcomment:工厂NV区用户区结束ID(不包含此ID)。CNend 134 */ 135 #define HI_NV_FACTORY_USR_ID_END 0x20 136 137 /** 138 * @ingroup iot_nv 139 * 140 * Non factory NV area start ID (including this ID).CNcomment:非工厂NV区起始ID(包含此ID)。CNend 141 */ 142 #define HI_NV_NORMAL_ID_START HI_NV_FACTORY_USR_ID_END 143 144 /** 145 * @ingroup iot_nv 146 * 147 * Non factory NV user area end ID (not included).CNcomment:非工厂NV区结束ID(不包含此ID)。CNend 148 */ 149 #define HI_NV_NORMAL_ID_END 0x80 150 151 /** 152 * @ingroup iot_nv 153 * 154 * Non factory NV Upgrade Reserved area start ID (including this ID).CNcomment:非工厂NV升级保留区起始ID(包含此ID)。CNend 155 */ 156 #define HI_NV_STABLE_ID_START HI_NV_NORMAL_ID_END 157 158 /** 159 * @ingroup iot_nv 160 * 161 * Non factory NV Upgrade Reserved area end ID (not included).CNcomment:非工厂NV升级保留区结束ID(不包含此ID)。CNend 162 */ 163 #define HI_NV_STABLE_ID_END 0x98 164 165 /** 166 * @ingroup hct_nv 167 * 168 * Non factory NV user Upgrade Reserved area start ID (including this ID). 169 CNcomment:非工厂NV升级保留区用户区起始ID(包含此ID)。CNend 170 */ 171 #define HI_NV_STABLE_USR_ID_START HI_NV_STABLE_ID_END 172 173 /** 174 * @ingroup iot_nv 175 * 176 * Non factory NV user Upgrade Reserved area end ID (not included). 177 CNcomment:非工厂NV升级保留区用户区结束ID(不包含此ID)。CNend 178 */ 179 #define HI_NV_STABLE_USR_ID_END 0xA0 180 181 /** 182 * @ingroup iot_nv 183 * 184 * Non factory NV user Reserved area start ID (including this ID).CNcomment:非工厂NV区用户预留区起始ID(包含此ID)。CNend 185 */ 186 #define HI_NV_NORMAL_USR_ID_START HI_NV_STABLE_USR_ID_END 187 188 /** 189 * @ingroup hct_nv 190 * 191 * Non factory NV user Reserved area end ID (including this ID).CNcomment:非工厂NV区用户预留区结束ID(包含此ID)。CNend 192 */ 193 #define HI_NV_NORMAL_USR_ID_END 0xFF 194 195 /***************************************************************************** 196 Channel Settings 197 *****************************************************************************/ 198 /* UART port number supported by the DIAG channel. The value must be smaller than the value of 199 HI_DMS_CHL_UART_PORT_NUM_MAX. CNcomment:DIAG通道支持的UART端口号, 必须小于 HI_DMS_CHL_UART_PORT_NUM_MAX */ 200 #define HI_DMS_CHL_UART_PORT_DIAG 1 /* */ 201 #define HI_DMS_CHL_PORT_ANY 0xFFF0 202 203 #define HI_DIAG_CHL_UART_BLOCK_WRITE_TIMEOUT 10 /* ms block write timeout */ 204 #define HI_DMS_CHL_UART_BLOCK_WRITE_TIMEOUT 10 /* ms block write timeout */ 205 #define HI_DMS_CHL_EXCEPTION_POLLING_WAIT 5000 /* ms task read dev task waiting exception Sleep */ 206 #define HI_DMS_CHL_FLASH_BLOCK_WRITE_TIMEOUT 10 /* ms block write timeout */ 207 #define HI_DMS_UART_EXCEPTION_POLLING_WAIT 1000 /* ms UART waiting exception Sleep */ 208 #define HI_DMS_CHL_CONNECT_DETECT_NUM 3 /* Number of client detection failures in heartbeat 209 mode after the channel is connected */ 210 #define HI_DMS_CHL_REPORT_PACKET_TIMEOUT 10 /* Batch report delay */ 211 #define HI_DIAG_MODULE_SYS 5 /* MSG SYS numbers of configurable categories */ 212 #define HI_DIAG_MODULE_DEV 30 /* MSG DEV numbers of configurable Module */ 213 #define HI_DIAG_MODULE_USR 5 /* MSG USR numbers of configurable categories */ 214 215 #ifndef PRODUCT_CFG_DIAG_MSG_CFG_MAX_NUM 216 #define PRODUCT_CFG_DIAG_MSG_CFG_MAX_NUM 10 217 #endif 218 #define HI_DIAG_MSG_ID_NUM (PRODUCT_CFG_DIAG_MSG_CFG_MAX_NUM) /* Number of configuration messages */ 219 220 #define HI_DIAG_WAIT_MESSAGE_TIMEOUT 50 /* ms */ 221 #define HI_DIAG_WAI_DIAG_MESSAGE_TIMEOUT 100 /* Minimum interval for reporting DIAG packets. ms */ 222 223 /* Definition range of system diagnosis IDs.CNcomment:系统诊断ID定义范围 */ 224 #define HI_DFX_STAT_ID_BASE_SYS 0xA000 /* SYS STAT的包ID范围: [0xA000, 0xF000) */ 225 #define HI_DFX_STAT_ID_MAX_SYS 0xF000 226 227 /* MSG SYS USR Subcategory Definition(16bit) */ 228 #define HI_MSG_SYS_L0 0xff10 // MSG SYS Level0 229 #define HI_MSG_SYS_L1 0xff20 // MSG SYS Level1 230 #define HI_MSG_SYS_L2 0xff01 // MSG SYS Level2 231 232 #define HI_MSG_USR_L0 0xf3e8 // MSG USR Level0 233 #define HI_MSG_USR_L1 0xf3e9 // MSG USR Level1 234 #define HI_MSG_USR_L2 0xf3ea // MSG USR Level2 235 #define HI_MSG_USR_L3 0xf3eb // MSG USR Level3 236 #define HI_MSG_USR_L4 0xf3ec // MSG USR Level4 237 238 #define DIAG_PROC_TASK_STACK_SIZE 2048 239 #define DIAG_UART_TASK_STACK_SIZE 1536 240 #define FLASH_PROTECT_TASK_STACK_SIZE 1024 241 #define DATA_COLLECT_TASK_STACK_SIZE 2048 /* this statck will destroy after dc finish */ 242 243 #ifdef HI_BOARD_ASIC 244 #define DIAG_QUEUE_MSG_NUM 48 245 #else 246 #define DIAG_QUEUE_MSG_NUM 100 247 #endif 248 #define DIAG_PROC_TASK_PRIO 25 249 #define DIAG_UART_TASK_PRIO 20 250 #define FLASH_PROTECT_TASK_PRIO 1 251 #define DATA_COLLECT_TASK_PRIO 21 252 253 #define HI_MILLISECOND_PER_TICK 10 254 255 #define PRODUCT_CFG_FLASH_BLOCK_SIZE 0x1000 256 #define PRODUCT_CFG_AUTO_WDG_RESET_SYSTEM_TIMEOUT 30000 257 258 #if (PRODUCT_CFG_AUTO_WDG_RESET_SYSTEM_TIMEOUT < 6500) 259 #error "watchdog timeout value must be more than 6500ms!" 260 #endif 261 262 #define PRODUCT_CFG_DEEP_SLEEP_DEFAULT_MAX_MS (0xFFFFFFFF / 64) 263 264 #endif /* __HI_CONFIG_H__ */ 265 266