1 /*
2 * Copyright (c) 2009-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 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
11 * See the Mulan PSL v2 for more details.
12 * Create: 2009-12-22
13 * Description: UniProton raspi4 demo
14 */
15 #include <stdio.h>
16 #include <stdlib.h>
17 #include <string.h>
18 #include <stdarg.h>
19 #include "securec.h"
20 #include "prt_config.h"
21 #include "prt_config_internal.h"
22 #include "prt_task.h"
23 #include "test.h"
24
25 TskHandle g_testTskHandle;
26 U8 g_memRegion00[OS_MEM_FSC_PT_SIZE];
27
28 #if defined(OS_OPTION_OPENAMP)
TestOpenamp()29 int TestOpenamp()
30 {
31 int ret;
32
33 ret = rpmsg_service_init();
34 if (ret) {
35 return ret;
36 }
37
38 return OS_OK;
39 }
40 #endif
41
TestTaskEntry()42 void TestTaskEntry()
43 {
44 #if defined(OS_OPTION_OPENAMP)
45 TestOpenamp();
46 #endif
47 }
48
OsTestInit(void)49 U32 OsTestInit(void)
50 {
51 U32 ret;
52 U8 ptNo = OS_MEM_DEFAULT_FSC_PT;
53 struct TskInitParam param = {0};
54
55 param.stackAddr = (U32)PRT_MemAllocAlign(0, ptNo, 0x2000, MEM_ADDR_ALIGN_016);
56 param.taskEntry = (TskEntryFunc)TestTaskEntry;
57 param.taskPrio = 25;
58 param.name = "TestTask";
59 param.stackSize = 0x2000;
60
61 ret = PRT_TaskCreate(&g_testTskHandle, ¶m);
62 if (ret) {
63 return ret;
64 }
65
66 ret = PRT_TaskResume(g_testTskHandle);
67 if (ret) {
68 return ret;
69 }
70
71 return OS_OK;
72 }
73
PRT_AppInit(void)74 U32 PRT_AppInit(void)
75 {
76 U32 ret;
77
78 ret = OsTestInit();
79 if (ret) {
80 return ret;
81 }
82
83 ret = TestClkStart();
84 if (ret) {
85 return ret;
86 }
87
88 return OS_OK;
89 }
90
PRT_HardDrvInit(void)91 U32 PRT_HardDrvInit(void)
92 {
93 U32 ret;
94
95 ret = OsHwiInit();
96 if (ret) {
97 return ret;
98 }
99
100 return OS_OK;
101 }
102
PRT_HardBootInit(void)103 void PRT_HardBootInit(void)
104 {
105 }
106
main(void)107 S32 main(void)
108 {
109 return OsConfigStart();
110 }
111
__wrap_memset(void * dest,int set,U32 len)112 extern void *__wrap_memset(void *dest, int set, U32 len)
113 {
114 if (dest == NULL || len == 0) {
115 return NULL;
116 }
117
118 char *ret = (char *)dest;
119 for (int i = 0; i < len; ++i) {
120 ret[i] = set;
121 }
122 return ret;
123 }
124
__wrap_memcpy(void * dest,const void * src,size_t size)125 extern void *__wrap_memcpy(void *dest, const void *src, size_t size)
126 {
127 for (size_t i = 0; i < size; ++i) {
128 *(char *)(dest + i) = *(char *)(src + i);
129 }
130 }
131
132