Skip to content

Commit 7157171

Browse files
committed
1 parent 308676d commit 7157171

File tree

8 files changed

+421
-40
lines changed

8 files changed

+421
-40
lines changed

Diff for: system/Middlewares/OpenAMP/mw_if/app_if/openamp_template.c

+122-8
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,30 @@
2121
#include "rsc_table.h"
2222
#include "metal/sys.h"
2323
#include "metal/device.h"
24+
25+
/* Private includes ----------------------------------------------------------*/
26+
/* USER CODE BEGIN Includes */
27+
28+
/* USER CODE END Includes */
29+
30+
2431
/* Private define ------------------------------------------------------------*/
32+
/* USER CODE BEGIN Define */
33+
34+
/* USER CODE END Define */
2535

2636
#define SHM_DEVICE_NAME "STM32_SHM"
2737

28-
/* Globals */
38+
/* Private macro -------------------------------------------------------------*/
39+
/* USER CODE BEGIN PM */
40+
41+
/* USER CODE END PM */
42+
43+
44+
/* Private variables ---------------------------------------------------------*/
45+
/* USER CODE BEGIN PV */
46+
47+
/* USER CODE END PV */
2948

3049
static struct metal_io_region *shm_io;
3150
static struct metal_io_region *rsc_io;
@@ -48,14 +67,23 @@ struct metal_device shm_device = {
4867
.irq_info = NULL
4968
};
5069

70+
/* Private functions ---------------------------------------------------------*/
71+
/* USER CODE BEGIN PFP */
72+
73+
/* USER CODE END PFP */
74+
5175
static int OPENAMP_shmem_init(int RPMsgRole)
5276
{
5377
int status = 0;
54-
struct metal_device *device;
78+
struct metal_device *device = NULL;
5579
struct metal_init_params metal_params = METAL_INIT_DEFAULTS;
56-
void* rsc_tab_addr;
57-
int rsc_size;
80+
void* rsc_tab_addr = NULL;
81+
int rsc_size = 0;
5882

83+
84+
/* USER CODE BEGIN PRE_LIB_METAL_INIT */
85+
86+
/* USER CODE END PRE_LIB_METAL_INIT */
5987
metal_init(&metal_params);
6088

6189
status = metal_register_generic_device(&shm_device);
@@ -72,11 +100,18 @@ static int OPENAMP_shmem_init(int RPMsgRole)
72100
metal_io_init(&device->regions[0], (void *)SHM_START_ADDRESS, &shm_physmap,
73101
SHM_SIZE, -1, 0, NULL);
74102

103+
/* USER CODE BEGIN PRE_SHM_IO_INIT */
104+
105+
/* USER CODE END PRE_SHM_IO_INIT */
75106
shm_io = metal_device_io_region(device, 0);
76107
if (shm_io == NULL) {
77108
return -1;
78109
}
79110

111+
/* USER CODE BEGIN POST_SHM_IO_INIT */
112+
113+
/* USER CODE END POST_SHM_IO_INIT */
114+
80115
/* Initialize resources table variables */
81116
resource_table_init(RPMsgRole, &rsc_tab_addr, &rsc_size);
82117
rsc_table = (struct shared_resource_table *)rsc_tab_addr;
@@ -85,23 +120,38 @@ static int OPENAMP_shmem_init(int RPMsgRole)
85120
return -1;
86121
}
87122

123+
/* USER CODE BEGIN POST_RSC_TABLE_INIT */
124+
125+
/* USER CODE END POST_RSC_TABLE_INIT */
126+
88127
metal_io_init(&device->regions[1], rsc_table,
89128
(metal_phys_addr_t *)rsc_table, rsc_size, -1U, 0, NULL);
90129

130+
/* USER CODE BEGIN POST_METAL_IO_INIT */
131+
132+
/* USER CODE END POST_METAL_IO_INIT */
91133
rsc_io = metal_device_io_region(device, 1);
92134
if (rsc_io == NULL) {
93135
return -1;
94136
}
95137

138+
/* USER CODE BEGIN POST_RSC_IO_INIT */
139+
140+
/* USER CODE END POST_RSC_IO_INIT */
96141
return 0;
97142
}
98143

99144
int MX_OPENAMP_Init(int RPMsgRole, rpmsg_ns_bind_cb ns_bind_cb)
100145
{
101-
struct fw_rsc_vdev_vring *vring_rsc;
102-
struct virtio_device *vdev;
146+
struct fw_rsc_vdev_vring *vring_rsc = NULL;
147+
struct virtio_device *vdev = NULL;
103148
int status = 0;
104149

150+
151+
/* USER CODE BEGIN MAILBOX_Init */
152+
153+
/* USER CODE END MAIL_BOX_Init */
154+
105155
MAILBOX_Init();
106156

107157
/* Libmetal Initilalization */
@@ -111,14 +161,22 @@ int MX_OPENAMP_Init(int RPMsgRole, rpmsg_ns_bind_cb ns_bind_cb)
111161
return status;
112162
}
113163

164+
/* USER CODE BEGIN PRE_VIRTIO_INIT */
165+
166+
/* USER CODE END PRE_VIRTIO_INIT */
114167
vdev = rproc_virtio_create_vdev(RPMsgRole, VDEV_ID, &rsc_table->vdev,
115168
rsc_io, NULL, MAILBOX_Notify, NULL);
116169
if (vdev == NULL)
117170
{
118171
return -1;
119172
}
120173

174+
121175
rproc_virtio_wait_remote_ready(vdev);
176+
177+
/* USER CODE BEGIN POST_VIRTIO_INIT */
178+
179+
/* USER CODE END POST_VIRTIO_INIT */
122180
vring_rsc = &rsc_table->vring0;
123181
status = rproc_virtio_init_vring(vdev, 0, vring_rsc->notifyid,
124182
(void *)vring_rsc->da, shm_io,
@@ -127,6 +185,11 @@ int MX_OPENAMP_Init(int RPMsgRole, rpmsg_ns_bind_cb ns_bind_cb)
127185
{
128186
return status;
129187
}
188+
189+
190+
/* USER CODE BEGIN POST_VRING0_INIT */
191+
192+
/* USER CODE END POST_VRING0_INIT */
130193
vring_rsc = &rsc_table->vring1;
131194
status = rproc_virtio_init_vring(vdev, 1, vring_rsc->notifyid,
132195
(void *)vring_rsc->da, shm_io,
@@ -136,42 +199,93 @@ int MX_OPENAMP_Init(int RPMsgRole, rpmsg_ns_bind_cb ns_bind_cb)
136199
return status;
137200
}
138201

202+
/* USER CODE BEGIN POST_VRING1_INIT */
203+
204+
/* USER CODE END POST_VRING1_INIT */
205+
139206
rpmsg_virtio_init_shm_pool(&shpool, (void *)VRING_BUFF_ADDRESS,
140207
(size_t)SHM_SIZE);
141208
rpmsg_init_vdev(&rvdev, vdev, ns_bind_cb, shm_io, &shpool);
142209

210+
/* USER CODE BEGIN POST_RPMSG_INIT */
211+
212+
/* USER CODE END POST_RPMSG_INIT */
213+
143214
return 0;
144215
}
145216

146217
void OPENAMP_DeInit()
147218
{
219+
220+
/* USER CODE BEGIN PRE_OPENAMP_DEINIT */
221+
222+
/* USER CODE END PRE_OPENAMP_DEINIT */
223+
148224
rpmsg_deinit_vdev(&rvdev);
149225

150226
metal_finish();
227+
228+
/* USER CODE BEGIN POST_OPENAMP_DEINIT */
229+
230+
/* USER CODE END POST_OPENAMP_DEINIT */
151231
}
152232

153233
void OPENAMP_init_ept(struct rpmsg_endpoint *ept)
154234
{
235+
/* USER CODE BEGIN PRE_EP_INIT */
236+
237+
/* USER CODE END PRE_EP_INIT */
238+
155239
rpmsg_init_ept(ept, "", RPMSG_ADDR_ANY, RPMSG_ADDR_ANY, NULL, NULL);
240+
241+
/* USER CODE BEGIN POST_EP_INIT */
242+
243+
/* USER CODE END POST_EP_INIT */
156244
}
157245

158246
int OPENAMP_create_endpoint(struct rpmsg_endpoint *ept, const char *name,
159247
uint32_t dest, rpmsg_ept_cb cb,
160248
rpmsg_ns_unbind_cb unbind_cb)
161249
{
162-
return rpmsg_create_ept(ept, &rvdev.rdev, name, RPMSG_ADDR_ANY, dest, cb,
250+
int ret = 0;
251+
/* USER CODE BEGIN PRE_EP_CREATE */
252+
253+
/* USER CODE END PRE_EP_CREATE */
254+
255+
ret = rpmsg_create_ept(ept, &rvdev.rdev, name, RPMSG_ADDR_ANY, dest, cb,
163256
unbind_cb);
257+
258+
/* USER CODE BEGIN POST_EP_CREATE */
259+
260+
/* USER CODE END POST_EP_CREATE */
261+
return ret;
164262
}
165263

166264
void OPENAMP_check_for_message(void)
167265
{
266+
/* USER CODE BEGIN MSG_CHECK */
267+
268+
/* USER CODE END MSG_CHECK */
168269
MAILBOX_Poll(rvdev.vdev);
169270
}
170271

171272
void OPENAMP_Wait_EndPointready(struct rpmsg_endpoint *rp_ept)
172273
{
274+
/* USER CODE BEGIN EP_READY */
275+
276+
/* USER CODE END EP_READY */
277+
173278
while(!is_rpmsg_ept_ready(rp_ept))
174-
MAILBOX_Poll(rvdev.vdev);
279+
{
280+
/* USER CODE BEGIN 0 */
281+
282+
/* USER CODE END 0 */
283+
MAILBOX_Poll(rvdev.vdev);
284+
285+
/* USER CODE BEGIN 1 */
286+
287+
/* USER CODE END 1 */
288+
}
175289
}
176290

177291
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

Diff for: system/Middlewares/OpenAMP/mw_if/app_if/openamp_template.h

+31
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,41 @@
2727
#include "openamp/open_amp.h"
2828
#include "openamp_conf.h"
2929

30+
/* Private includes ----------------------------------------------------------*/
31+
/* USER CODE BEGIN Includes */
32+
33+
/* USER CODE END Includes */
34+
35+
36+
/* Exported types ------------------------------------------------------------*/
37+
/* USER CODE BEGIN ET */
38+
39+
/* USER CODE END ET */
40+
41+
/* Exported constants --------------------------------------------------------*/
42+
/* USER CODE BEGIN EC */
43+
44+
/* USER CODE END EC */
45+
46+
/* Private defines -----------------------------------------------------------*/
47+
/* USER CODE BEGIN Private defines */
48+
49+
/* USER CODE END Private defines */
3050

3151
#define OPENAMP_send rpmsg_send
3252
#define OPENAMP_destroy_ept rpmsg_destroy_ept
3353

54+
/* Exported macro ------------------------------------------------------------*/
55+
/* USER CODE BEGIN EM */
56+
57+
/* USER CODE END EM */
58+
59+
/* Exported functions prototypes ---------------------------------------------*/
60+
/* USER CODE BEGIN EFP */
61+
62+
/* USER CODE END EFP */
63+
64+
3465
/* Initialize the openamp framework*/
3566
int MX_OPENAMP_Init(int RPMsgRole, rpmsg_ns_bind_cb ns_bind_cb);
3667

0 commit comments

Comments
 (0)