1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <sys/stat.h>
17 #include "stdlib.h"
18 #include "ohos_mem_pool.h"
19 #include "hiview_log.h"
20 #include "los_debug.h"
21 #if (LOSCFG_SUPPORT_FATFS == 1)
22 #include "fatfs.h"
23 #endif /* LOSCFG_SUPPORT_FATFS == 1 */
24 #if (LOSCFG_SUPPORT_LITTLEFS == 1)
25 #include "lfs.h"
26 #endif /* LOSCFG_SUPPORT_LITTLEFS == 1 */
27
28 /**
29 * @brief implement for hilog_lite featured/mini
30 * @notice hilog_lite mini converts '%s' to '%p'
31 */
HilogProc_Impl(const HiLogContent *hilogContent, uint32 len)32 boolean HilogProc_Impl(const HiLogContent *hilogContent, uint32 len)
33 {
34 char tempOutStr[LOG_FMT_MAX_LEN] = {0};
35 if (LogContentFmt(tempOutStr, sizeof(tempOutStr), hilogContent) > 0) {
36 printf(tempOutStr);
37 }
38 return TRUE;
39 }
40
41 #if (LOSCFG_SUPPORT_FATFS == 1)
SetupDefaultVolToPartTable(void)42 void SetupDefaultVolToPartTable(void)
43 {
44 int i = 0;
45 PARTITION defaultVToP[FF_VOLUMES] = {
46 {0, 1, 1}, /* "0:" ==> Physical drive 1, 1st partition */
47 {1, 1, 2}, /* "1:" ==> Physical drive 1, 2nd partition */
48 {2, 1, 3}, /* "2:" ==> Physical drive 1, 3rd partition */
49 {3, 1, 4} /* "3:" ==> Physical drive 1, 4th partition */
50 };
51
52 for (i = 0; i < FF_VOLUMES; i++) {
53 SetupVolToPartTable(i, defaultVToP[i], GetCfiBlkOps());
54 }
55 }
56 #endif /* LOSCFG_SUPPORT_FATFS == 1 */
57
_init(void)58 void _init(void) {}
_fini(void)59 void _fini(void) {}
60 extern void __libc_fini_array (void);
61
SystemAdapterInit(void)62 void SystemAdapterInit(void)
63 {
64 UINT32 ret = 0;
65
66 /* _start in crt0.S have been replaced by los_start.S in riscv32_virt,
67 * so call this functions here for initialization and destruction of c++ global var
68 */
69 if (atexit(__libc_fini_array) != 0) {
70 PRINT_ERR("register exit proc error!\n");
71 };
72 __libc_init_array();
73
74 #if (LOSCFG_SUPPORT_LITTLEFS == 1)
75 if (LittlefsDriverInit(1) == 0) {
76 struct lfs_config *littlefsConfig = GetCfiLfsCfg();
77 ret = mount(NULL, "/data", "littlefs", 0, littlefsConfig);
78 if (ret != LOS_OK) {
79 PRINT_ERR("Mount Littlefs error:0x%x\n", ret);
80 }
81 }
82 #elif (LOSCFG_SUPPORT_FATFS == 1)
83 SetupDefaultVolToPartTable();
84 /* mount fs in fat.img,for font.ttf used by graphic */
85 if (ret = mount("p0", "/data", "vfat", 0, NULL)) {
86 PRINT_ERR("Mount Fatfs error:0x%x\n", ret);
87 }
88 #endif /* LOSCFG_SUPPORT_FATFS == 1 */
89
90 /* bootstrap init */
91 OHOS_SystemInit();
92
93 /* register hilog output func for mini */
94 HiviewRegisterHilogProc(HilogProc_Impl);
95 }
96
97 /**
98 * @brief implement for ohos_mem_pool.h
99 */
OhosMalloc(MemType type, uint32 size)100 void *OhosMalloc(MemType type, uint32 size)
101 {
102 if (size == 0) {
103 return NULL;
104 }
105 return malloc(size);
106 }
107
OhosFree(void *ptr)108 void OhosFree(void *ptr)
109 {
110 free(ptr);
111 }
112
113 /* implementation for js_app_host.h: LP_TaskBegin */
LP_TaskBegin(void)114 void LP_TaskBegin(void)
115 {
116 }
117
118 /* implementation for js_app_host.h: LP_TaskEnd */
LP_TaskEnd(void)119 void LP_TaskEnd(void)
120 {
121 }
122
123 /**
124 * @brief adapter for js_ability.cpp
125 * #ifdef OHOS_ACELITE_PRODUCT_WATCH
126 */
RestoreSystemWrapper(const char *crashMessage)127 void RestoreSystemWrapper(const char *crashMessage)
128 {
129 printf("%s\n", crashMessage);
130 }
131