1/*
2 * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
3 * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice, this list of
9 *    conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
12 *    of conditions and the following disclaimer in the documentation and/or other materials
13 *    provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its contributors may be used
16 *    to endorse or promote products derived from this software without specific prior written
17 *    permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32/**@defgroup los_config System configuration items
33 * @ingroup kernel
34 */
35
36#include "soc.h"
37#include "stdbool.h"
38
39#ifndef _TARGET_CONFIG_H
40#define _TARGET_CONFIG_H
41
42/*=============================================================================
43                                        System clock module configuration
44=============================================================================*/
45#define OS_SYS_CLOCK                                        SYSCLK_FREQ
46#define LOSCFG_BASE_CORE_TICK_PER_SECOND                    (100UL)
47#define LOSCFG_BASE_CORE_TICK_HW_TIME                       0
48#define LOSCFG_BASE_CORE_TICK_WTIMER                        0
49#define LOSCFG_BASE_CORE_TICK_RESPONSE_MAX                  0xFFFFFFUL
50
51/*=============================================================================
52                                        Hardware interrupt module configuration
53=============================================================================*/
54#define LOSCFG_PLATFORM_HWI                                 1
55#define LOSCFG_USE_SYSTEM_DEFINED_INTERRUPT                 1
56#define LOSCFG_PLATFORM_HWI_LIMIT                           128
57/*=============================================================================
58                                       Task module configuration
59=============================================================================*/
60#define LOSCFG_BASE_CORE_TSK_LIMIT                          24
61#define LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE                (0x500U)
62#define LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE             (0x1000U)
63#define LOSCFG_BASE_CORE_TSK_MIN_STACK_SIZE                 (0x130U)
64#define LOSCFG_BASE_CORE_TIMESLICE                          1
65#define LOSCFG_BASE_CORE_TIMESLICE_TIMEOUT                  20000
66#define LOSCFG_BASE_CORE_TSK_MONITOR                        1
67#define LOSCFG_BASE_CORE_EXC_TSK_SWITCH                     1
68
69/*=============================================================================
70                                       Semaphore module configuration
71=============================================================================*/
72#define LOSCFG_BASE_IPC_SEM                                 1
73#define LOSCFG_BASE_IPC_SEM_LIMIT                           48
74/*=============================================================================
75                                       Mutex module configuration
76=============================================================================*/
77#define LOSCFG_BASE_IPC_MUX                                 1
78#define LOSCFG_BASE_IPC_MUX_LIMIT                           24
79/*=============================================================================
80                                       Queue module configuration
81=============================================================================*/
82#define LOSCFG_BASE_IPC_QUEUE                               1
83#define LOSCFG_BASE_IPC_QUEUE_LIMIT                         24
84/*=============================================================================
85                                       Software timer module configuration
86=============================================================================*/
87#define LOSCFG_BASE_CORE_SWTMR                              1
88#define LOSCFG_BASE_CORE_SWTMR_ALIGN                        1
89#define LOSCFG_BASE_CORE_SWTMR_LIMIT                        48
90/*=============================================================================
91                                       Memory module configuration
92=============================================================================*/
93extern unsigned int __heap_start;
94extern unsigned int __heap_size;
95#define LOSCFG_SYS_EXTERNAL_HEAP                            1
96#define LOSCFG_SYS_HEAP_ADDR                                (void *)&__heap_start
97#define LOSCFG_SYS_HEAP_SIZE                                (unsigned int)&__heap_size
98#define LOSCFG_MEM_MUL_POOL                                 1
99#define OS_SYS_MEM_NUM                                      20
100#define LOSCFG_MEM_FREE_BY_TASKID                           1
101#define LOSCFG_MEMORY_BESTFIT                               1
102
103/* =============================================================================
104                                       printf module configuration
105============================================================================= */
106#define LOSCFG_KERNEL_PRINTF                                1
107
108#define LOS_KERNEL_TEST_NOT_SMOKE                           0
109
110/*=============================================================================
111                                       shell module configuration
112=============================================================================*/
113#define LOSCFG_USE_SHELL                                    1
114#define LOSCFG_SHELL_PRIO                                   3
115
116#endif /* _TARGET_CONFIG_H */
117