1 /*
2 * Copyright (c) 2022-2022 Huawei Technologies Co., Ltd. All rights reserved.
3 *
4 * UniProton is licensed under Mulan PSL v2.
5 * You can use this software according to the terms and conditions of the Mulan PSL v2.
6 * You may obtain a copy of Mulan PSL v2 at:
7 * http://license.coscl.org.cn/MulanPSL2
8 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
9 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
10 * See the Mulan PSL v2 for more details.
11 * Create: 2022-12-05
12 * Description: openamp configuration
13 */
14 #include <stdio.h>
15 #include <stdlib.h>
16 #include <string.h>
17 #include <stdarg.h>
18 #include "securec.h"
19 #include "prt_config.h"
20 #include "prt_config_internal.h"
21 #include "prt_task.h"
22 #include "test.h"
23
24 TskHandle g_testTskHandle;
25 U8 g_memRegion00[OS_MEM_FSC_PT_SIZE];
26
27 extern U32 PRT_PrintfInit();
28
29 #if defined(OS_OPTION_OPENAMP)
TestOpenamp()30 int TestOpenamp()
31 {
32 int ret;
33
34 ret = rpmsg_service_init();
35 if (ret) {
36 return ret;
37 }
38
39 return OS_OK;
40 }
41 #endif
42
TestTaskEntry()43 void TestTaskEntry()
44 {
45 #if defined(OS_OPTION_OPENAMP)
46 TestOpenamp();
47 #endif
48 }
49
OsTestInit(void)50 U32 OsTestInit(void)
51 {
52 U32 ret;
53 U8 ptNo = OS_MEM_DEFAULT_FSC_PT;
54 struct TskInitParam param = {0};
55
56 param.stackAddr = (U32)PRT_MemAllocAlign(0, ptNo, 0x2000, MEM_ADDR_ALIGN_016);
57 param.taskEntry = (TskEntryFunc)TestTaskEntry;
58 param.taskPrio = 25;
59 param.name = "TestTask";
60 param.stackSize = 0x2000;
61
62 ret = PRT_TaskCreate(&g_testTskHandle, ¶m);
63 if (ret) {
64 return ret;
65 }
66
67 ret = PRT_TaskResume(g_testTskHandle);
68 if (ret) {
69 return ret;
70 }
71
72 return OS_OK;
73 }
74
PRT_AppInit(void)75 U32 PRT_AppInit(void)
76 {
77 U32 ret;
78
79 ret = OsTestInit();
80 if (ret) {
81 return ret;
82 }
83
84 ret = TestClkStart();
85 if (ret) {
86 return ret;
87 }
88
89 return OS_OK;
90 }
91
PRT_HardDrvInit(void)92 U32 PRT_HardDrvInit(void)
93 {
94 U32 ret;
95
96 ret = OsHwiInit();
97 if (ret) {
98 return ret;
99 }
100
101 ret = PRT_PrintfInit();
102 if (ret) {
103 return ret;
104 }
105
106 return OS_OK;
107 }
108
PRT_HardBootInit(void)109 void PRT_HardBootInit(void)
110 {
111 }
112
main(void)113 S32 main(void)
114 {
115 return OsConfigStart();
116 }
117
__wrap_memset(void * dest,int set,U32 len)118 extern void *__wrap_memset(void *dest, int set, U32 len)
119 {
120 if (dest == NULL || len == 0) {
121 return NULL;
122 }
123
124 char *ret = (char *)dest;
125 for (int i = 0; i < len; ++i) {
126 ret[i] = set;
127 }
128 return ret;
129 }
130
__wrap_memcpy(void * dest,const void * src,size_t size)131 extern void *__wrap_memcpy(void *dest, const void *src, size_t size)
132 {
133 for (size_t i = 0; i < size; ++i) {
134 *(char *)(dest + i) = *(char *)(src + i);
135 }
136 }
137
138