@@ -1,4 +1,4 | |||||
1 |
header/lfr_common_headers = https://hephaistos.lpp.polytechnique.fr/rhodecode/HG_REPOSITORIES/LPP/INSTRUMENTATION/ |
|
1 | header/lfr_common_headers = https://hephaistos.lpp.polytechnique.fr/rhodecode/HG_REPOSITORIES/LPP/INSTRUMENTATION/USERS/JEANDET/lfr_common_headers | |
2 |
|
2 | |||
3 | LFR_basic-parameters = https://hephaistos.lpp.polytechnique.fr/rhodecode/HG_REPOSITORIES/LPP/INSTRUMENTATION/USERS/CHUST/LFR_basic-parameters |
|
3 | LFR_basic-parameters = https://hephaistos.lpp.polytechnique.fr/rhodecode/HG_REPOSITORIES/LPP/INSTRUMENTATION/USERS/CHUST/LFR_basic-parameters | |
4 |
|
4 |
@@ -1,2 +1,2 | |||||
1 | 3081d1f9bb20b2b64a192585337a292a9804e0c5 LFR_basic-parameters |
|
1 | 3081d1f9bb20b2b64a192585337a292a9804e0c5 LFR_basic-parameters | |
2 |
|
|
2 | db74b38fe91cd826fa49fa4eb6f93d626637ceb9 header/lfr_common_headers |
@@ -136,6 +136,7 rtems_task load_task( rtems_task_argumen | |||||
136 | rtems_task hous_task( rtems_task_argument argument ); |
|
136 | rtems_task hous_task( rtems_task_argument argument ); | |
137 | rtems_task avgv_task( rtems_task_argument argument ); |
|
137 | rtems_task avgv_task( rtems_task_argument argument ); | |
138 | rtems_task dumb_task( rtems_task_argument unused ); |
|
138 | rtems_task dumb_task( rtems_task_argument unused ); | |
|
139 | rtems_task scrubbing_task( rtems_task_argument unused ); | |||
139 |
|
140 | |||
140 | void init_housekeeping_parameters( void ); |
|
141 | void init_housekeeping_parameters( void ); | |
141 | void increment_seq_counter(unsigned short *packetSequenceControl); |
|
142 | void increment_seq_counter(unsigned short *packetSequenceControl); |
@@ -15,6 +15,7 | |||||
15 |
|
15 | |||
16 | #include <rtems.h> |
|
16 | #include <rtems.h> | |
17 |
|
17 | |||
|
18 | ||||
18 | /* configuration information */ |
|
19 | /* configuration information */ | |
19 |
|
20 | |||
20 | #define CONFIGURE_INIT |
|
21 | #define CONFIGURE_INIT | |
@@ -26,7 +27,7 | |||||
26 | #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
|
27 | #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER | |
27 | #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
|
28 | #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER | |
28 |
|
29 | |||
29 |
#define CONFIGURE_MAXIMUM_TASKS 2 |
|
30 | #define CONFIGURE_MAXIMUM_TASKS 22 // number of tasks concurrently active including INIT | |
30 | #define CONFIGURE_RTEMS_INIT_TASKS_TABLE |
|
31 | #define CONFIGURE_RTEMS_INIT_TASKS_TABLE | |
31 | #define CONFIGURE_EXTRA_TASK_STACKS (3 * RTEMS_MINIMUM_STACK_SIZE) |
|
32 | #define CONFIGURE_EXTRA_TASK_STACKS (3 * RTEMS_MINIMUM_STACK_SIZE) | |
32 | #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 32 |
|
33 | #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 32 | |
@@ -376,6 +377,7 void create_names( void ) // create all | |||||
376 | Task_name[TASKID_PRC1] = rtems_build_name( 'P', 'R', 'C', '1' ); |
|
377 | Task_name[TASKID_PRC1] = rtems_build_name( 'P', 'R', 'C', '1' ); | |
377 | Task_name[TASKID_AVF2] = rtems_build_name( 'A', 'V', 'F', '2' ); |
|
378 | Task_name[TASKID_AVF2] = rtems_build_name( 'A', 'V', 'F', '2' ); | |
378 | Task_name[TASKID_PRC2] = rtems_build_name( 'P', 'R', 'C', '2' ); |
|
379 | Task_name[TASKID_PRC2] = rtems_build_name( 'P', 'R', 'C', '2' ); | |
|
380 | Task_name[TASKID_SCRB] = rtems_build_name( 'S', 'C', 'R', 'B' ); | |||
379 |
|
381 | |||
380 | // rate monotonic period names |
|
382 | // rate monotonic period names | |
381 | name_hk_rate_monotonic = rtems_build_name( 'H', 'O', 'U', 'S' ); |
|
383 | name_hk_rate_monotonic = rtems_build_name( 'H', 'O', 'U', 'S' ); | |
@@ -561,6 +563,14 int create_all_tasks( void ) // create a | |||||
561 | RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_DUMB] |
|
563 | RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_DUMB] | |
562 | ); |
|
564 | ); | |
563 | } |
|
565 | } | |
|
566 | if (status == RTEMS_SUCCESSFUL) // SCRUBBING TASK | |||
|
567 | { | |||
|
568 | status = rtems_task_create( | |||
|
569 | Task_name[TASKID_SCRB], TASK_PRIORITY_SCRB, RTEMS_MINIMUM_STACK_SIZE, | |||
|
570 | RTEMS_DEFAULT_MODES, | |||
|
571 | RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_SCRB] | |||
|
572 | ); | |||
|
573 | } | |||
564 | if (status == RTEMS_SUCCESSFUL) // HOUS |
|
574 | if (status == RTEMS_SUCCESSFUL) // HOUS | |
565 | { |
|
575 | { | |
566 | status = rtems_task_create( |
|
576 | status = rtems_task_create( | |
@@ -746,6 +756,13 int start_all_tasks( void ) // start all | |||||
746 | BOOT_PRINTF("in INIT *** Error starting TASK_DUMB\n") |
|
756 | BOOT_PRINTF("in INIT *** Error starting TASK_DUMB\n") | |
747 | } |
|
757 | } | |
748 | } |
|
758 | } | |
|
759 | if (status == RTEMS_SUCCESSFUL) // SCRUBBING | |||
|
760 | { | |||
|
761 | status = rtems_task_start( Task_id[TASKID_SCRB], scrubbing_task, 1 ); | |||
|
762 | if (status!=RTEMS_SUCCESSFUL) { | |||
|
763 | BOOT_PRINTF("in INIT *** Error starting TASK_DUMB\n") | |||
|
764 | } | |||
|
765 | } | |||
749 | if (status == RTEMS_SUCCESSFUL) // LOAD |
|
766 | if (status == RTEMS_SUCCESSFUL) // LOAD | |
750 | { |
|
767 | { | |
751 | status = rtems_task_start( Task_id[TASKID_LOAD], load_task, 1 ); |
|
768 | status = rtems_task_start( Task_id[TASKID_LOAD], load_task, 1 ); |
@@ -521,6 +521,26 rtems_task dumb_task( rtems_task_argumen | |||||
521 | } |
|
521 | } | |
522 | } |
|
522 | } | |
523 |
|
523 | |||
|
524 | rtems_task scrubbing_task( rtems_task_argument unused ) | |||
|
525 | { | |||
|
526 | /** This RTEMS taks is to avoid entering IDLE task and also scrub memory to increase scubbing frequency. | |||
|
527 | * | |||
|
528 | * @param unused is the starting argument of the RTEMS task | |||
|
529 | * | |||
|
530 | * The scrubbing reads continuously memory when no other tasks are ready. | |||
|
531 | * | |||
|
532 | */ | |||
|
533 | ||||
|
534 | BOOT_PRINTF("in SCRUBBING *** \n"); | |||
|
535 | volatile int i=0; | |||
|
536 | volatile uint32_t* RAM=(uint32_t*)0x40000000; | |||
|
537 | volatile uint32_t value; | |||
|
538 | while(1){ | |||
|
539 | i=(i+1)%(1024*1024); | |||
|
540 | value += RAM[i]; | |||
|
541 | } | |||
|
542 | } | |||
|
543 | ||||
524 | //***************************** |
|
544 | //***************************** | |
525 | // init housekeeping parameters |
|
545 | // init housekeeping parameters | |
526 |
|
546 |
General Comments 0
You need to be logged in to leave comments.
Login now