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 */
97HI_EXTERN hi_u32 g_halSectorsRamSize;
98/* The start address of RAM */
99HI_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