4
4
#include "systick_count.h"
5
5
#include "test_schedule.h"
6
6
7
- unsigned int loop_num = 0 ;
8
-
9
-
10
-
11
7
void test_schedule_init (void )
12
8
{
13
9
@@ -17,42 +13,42 @@ void test_schedule_init(void)
17
13
if (IPC_Control == RT_NULL )
18
14
{
19
15
rt_kprintf ("create IPC_Control failed\n" );
20
- }
21
-
22
- Mutex_Control = rt_sem_create ("Mutex_Control" , 0 , RT_TEST_IPC_TYPE );
23
- if (Mutex_Control == RT_NULL )
24
- {
25
- rt_kprintf ("create Mutex_Control failed\n" );
16
+ return ;
26
17
}
27
18
28
19
sem_test = rt_sem_create ("sem_test" , 0 , RT_TEST_IPC_TYPE );
29
20
if (sem_test == RT_NULL )
30
21
{
31
22
rt_kprintf ("create sem_test failed\n" );
23
+ return ;
32
24
}
33
25
34
26
mutex_test = rt_mutex_create ("mutex_test" , RT_TEST_IPC_TYPE );
35
27
if (mutex_test == RT_NULL )
36
28
{
37
29
rt_kprintf ("create mutex_test failed\n" );
30
+ return ;
38
31
}
39
32
40
33
event_test = rt_event_create ("event_test" , RT_TEST_IPC_TYPE );
41
34
if (event_test == RT_NULL )
42
35
{
43
36
rt_kprintf ("create event_test failed\n" );
37
+ return ;
44
38
}
45
39
46
40
mailbox_test = rt_mb_create ("mailbox_test" , RT_TEST_IPC_SIZE , RT_TEST_IPC_TYPE );
47
41
if (mailbox_test == RT_NULL )
48
42
{
49
43
rt_kprintf ("create mailbox_test failed\n" );
44
+ return ;
50
45
}
51
46
52
47
mq_test = rt_mq_create ("mq_test" ,RT_TEST_SINGLE_IPC_SIZE ,RT_TEST_IPC_SIZE , RT_TEST_IPC_TYPE );
53
48
if (mq_test == RT_NULL )
54
49
{
55
50
rt_kprintf ("create mq_test failed\n" );
51
+ return ;
56
52
}
57
53
58
54
// //add for Thread_IPC
@@ -65,8 +61,6 @@ void test_schedule_init(void)
65
61
// rt_thread_startup(thread_IPC_TCB);
66
62
#endif
67
63
68
-
69
-
70
64
#ifdef RT_TEST_NEED_THREAD_A
71
65
//add for Thread_A
72
66
@@ -102,7 +96,6 @@ void test_schedule_init(void)
102
96
103
97
104
98
#ifdef RT_TEST_DUMMY_THREAD
105
-
106
99
{
107
100
int index ;
108
101
int priority = 5 ;
@@ -183,42 +176,30 @@ void thread_A_entry(void* parameter)
183
176
}
184
177
rt_kprintf ("sem test Done\n" );
185
178
rt_thread_delay (100 );//等待删除退出的线程
186
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
187
- //for mutex
188
- rt_sem_init (Mutex_Control , "Mutex_Control" ,0 , RT_TEST_IPC_TYPE );
189
- rt_sem_release (Mutex_Control );
190
179
rt_kprintf ("\n" );
191
180
192
181
//for Mutex
193
- /* 首先创建2个mutex线程 */
194
- mutex_Tx_TCB = rt_thread_create ("mutex_Tx_TCB" ,
195
- thread_mutex_TX_entry , RT_NULL ,
196
- 512 , THREAD_IPC_RX_PRIORITY , THREAD_IPC_TX_TIME_SLICE );
197
- mutex_Rx_TCB = rt_thread_create ("mutex_Rx_TCB" ,
182
+ mutex_Rx_TCB = rt_thread_create ("mRx" ,
198
183
thread_mutex_RX_entry , RT_NULL ,
199
- 512 , THREAD_IPC_TX_PRIORITY , THREAD_IPC_RX_TIME_SLICE );
200
- //对于mutex ,先启动Tx,占用资源
201
- if (mutex_Tx_TCB != RT_NULL )
202
- {
203
- rt_thread_startup (mutex_Tx_TCB );
204
- }
184
+ 512 , THREAD_IPC_RX_PRIORITY , THREAD_IPC_RX_TIME_SLICE );
185
+
186
+ rt_mutex_take (mutex_test , RT_WAITING_FOREVER );
205
187
206
188
if (mutex_Rx_TCB != RT_NULL )
207
189
{
208
190
rt_thread_startup (mutex_Rx_TCB );
209
191
}
210
192
211
- {
212
- rt_sem_take (IPC_Control , RT_WAITING_FOREVER );
213
- rt_sem_take (IPC_Control , RT_WAITING_FOREVER );
214
- }
193
+ start_count ();
194
+ rt_mutex_release (mutex_test );
195
+ rt_kprintf ("mutex test Done\n" );
215
196
197
+ rt_sem_take (IPC_Control , RT_WAITING_FOREVER );
216
198
rt_kprintf ("mutex test Done\n" );
217
199
rt_thread_delay (100 );//等待删除退出的线程
200
+
218
201
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
219
202
//for event
220
- rt_sem_init (Mutex_Control , "Mutex_Control" ,0 , RT_TEST_IPC_TYPE );
221
- rt_sem_release (Mutex_Control );
222
203
rt_kprintf ("\n" );
223
204
224
205
/* 首先创建2个event线程 */
@@ -229,18 +210,14 @@ void thread_A_entry(void* parameter)
229
210
thread_event_RX_entry , RT_NULL ,
230
211
512 , THREAD_IPC_RX_PRIORITY , THREAD_IPC_RX_TIME_SLICE );
231
212
232
-
233
-
234
-
235
-
236
- if (event_Tx_TCB != RT_NULL )
213
+ if (event_Rx_TCB != RT_NULL )
237
214
{
238
- rt_thread_startup (event_Tx_TCB );
215
+ rt_thread_startup (event_Rx_TCB );
239
216
}
240
217
241
- if (event_Rx_TCB != RT_NULL )
218
+ if (event_Tx_TCB != RT_NULL )
242
219
{
243
- rt_thread_startup (event_Rx_TCB );
220
+ rt_thread_startup (event_Tx_TCB );
244
221
}
245
222
246
223
{
@@ -283,8 +260,6 @@ void thread_A_entry(void* parameter)
283
260
284
261
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
285
262
286
- rt_sem_init (Mutex_Control , "Mutex_Control" ,0 , RT_TEST_IPC_TYPE );
287
- rt_sem_release (Mutex_Control );
288
263
rt_kprintf ("\n" );
289
264
290
265
/* 首先创建2个mailbox线程 */
@@ -295,16 +270,14 @@ void thread_A_entry(void* parameter)
295
270
thread_mb_RX_entry , RT_NULL ,
296
271
512 , THREAD_IPC_RX_PRIORITY , THREAD_IPC_RX_TIME_SLICE );
297
272
298
- rt_kprintf ("\n" );
299
-
300
- if (mb_Tx_TCB != RT_NULL )
273
+ if (mb_Rx_TCB != RT_NULL )
301
274
{
302
- rt_thread_startup (mb_Tx_TCB );
275
+ rt_thread_startup (mb_Rx_TCB );
303
276
}
304
277
305
- if (mb_Rx_TCB != RT_NULL )
278
+ if (mb_Tx_TCB != RT_NULL )
306
279
{
307
- rt_thread_startup (mb_Rx_TCB );
280
+ rt_thread_startup (mb_Tx_TCB );
308
281
}
309
282
310
283
{
@@ -392,71 +365,33 @@ void thread_sem_TX_entry(void* parameter)
392
365
void thread_sem_RX_entry (void * parameter )
393
366
{
394
367
unsigned int loop_num = IPC_REPEAT_TIME ;
395
- //while(1)
396
- {
397
- {
398
- while (loop_num -- )
399
- {
400
- rt_sem_take (sem_test , RT_WAITING_FOREVER );
401
- stop_count ();
402
- calc_count ();
403
- }
404
- }
405
-
406
- rt_sem_release (IPC_Control );//跑完放出control信号量
407
- //rt_thread_suspend(rt_thread_self());
408
- }
409
- }
410
-
411
- void thread_mutex_TX_entry (void * parameter )
412
- {
413
- unsigned int loop_num = IPC_REPEAT_TIME ;
414
-
415
- //need to take the mutex first to ensure that Rx Thread can not get it
416
- rt_mutex_take (mutex_test , RT_WAITING_FOREVER );
417
368
418
369
while (loop_num -- )
419
370
{
420
- //wait receive is done
421
- rt_sem_take (Mutex_Control , RT_WAITING_FOREVER );
422
-
423
- start_count ();
424
- rt_mutex_release (mutex_test );
371
+ rt_sem_take (sem_test , RT_WAITING_FOREVER );
372
+ stop_count ();
373
+ calc_count ();
425
374
}
426
375
427
376
rt_sem_release (IPC_Control );//跑完放出control信号量
428
377
}
429
378
430
379
void thread_mutex_RX_entry (void * parameter )
431
380
{
432
- unsigned int loop_num = IPC_REPEAT_TIME ;
433
-
434
- while (loop_num -- )
435
- {
436
- rt_mutex_take (mutex_test , RT_WAITING_FOREVER );
437
- stop_count ();
438
- calc_count ();
439
-
440
- //we should start schedule to Thread TX
441
- //list_thread();
442
- rt_sem_release (Mutex_Control );
443
- }
381
+ rt_mutex_take (mutex_test , RT_WAITING_FOREVER );
382
+ stop_count ();
383
+ calc_count ();
444
384
445
385
rt_sem_release (IPC_Control );//跑完放出control信号量
446
386
}
447
387
448
388
449
-
450
389
void thread_event_TX_entry (void * parameter )
451
390
{
452
391
unsigned int loop_num = IPC_REPEAT_TIME ;
453
392
454
393
while (loop_num -- )
455
394
{
456
- //等待接收完成
457
- rt_sem_take (Mutex_Control , RT_WAITING_FOREVER );
458
-
459
-
460
395
start_count ();
461
396
rt_event_send (event_test , IPC_EVENT );
462
397
}
@@ -472,15 +407,12 @@ void thread_event_RX_entry(void* parameter)
472
407
while (loop_num -- )
473
408
{
474
409
475
- if (rt_event_recv (event_test , IPC_EVENT ,RT_EVENT_FLAG_OR \
476
- | RT_EVENT_FLAG_CLEAR ,RT_WAITING_FOREVER , & e ) == RT_EOK )
410
+ if (rt_event_recv (event_test , IPC_EVENT ,
411
+ RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR ,
412
+ RT_WAITING_FOREVER , & e ) == RT_EOK )
477
413
{
478
414
stop_count ();
479
415
calc_count ();
480
- //rt_kprintf("thread1: AND recv event 0x%x\n", e);
481
-
482
- rt_sem_release (Mutex_Control );
483
-
484
416
}
485
417
}
486
418
@@ -493,8 +425,6 @@ void thread_mb_TX_entry(void* parameter)
493
425
494
426
while (loop_num -- )
495
427
{
496
- rt_sem_take (Mutex_Control , RT_WAITING_FOREVER );
497
-
498
428
start_count ();
499
429
rt_mb_send (mailbox_test ,(rt_uint32_t )& mb_str [0 ]);
500
430
}
@@ -509,22 +439,17 @@ void thread_mb_RX_entry(void* parameter)
509
439
510
440
while (loop_num -- )
511
441
{
512
- if ( rt_mb_recv (mailbox_test , (rt_uint32_t * )& str , RT_WAITING_FOREVER )== RT_EOK )
442
+ if (rt_mb_recv (mailbox_test ,
443
+ (rt_uint32_t * )& str ,
444
+ RT_WAITING_FOREVER ) == RT_EOK )
513
445
{
514
446
stop_count ();
515
447
calc_count ();
516
- //rt_kprintf("thread1: get a mail, the content:%s\n", str);
517
-
518
- rt_sem_release (Mutex_Control );
519
448
}
520
449
}
521
450
522
451
rt_sem_release (IPC_Control );//跑完放出control信号量
523
452
}
524
453
525
-
526
-
527
-
528
-
529
454
#endif
530
455
0 commit comments