/
FreeRTOSProperties.html
988 lines (931 loc) · 47.6 KB
/
FreeRTOSProperties.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>
Component documentation - Properties
</title>
<STYLE type="text/css">
body{
background-color: white;
margin:0px;
font: 13px Helvetica Neue, Helvetica, Arial, sans-serif;
}
A:visited {
COLOR: #2D8AA7; TEXT-DECORATION: none
}
A:link {
COLOR: #2D8AA7; TEXT-DECORATION: none
}
A:active {
COLOR: #2D8AA7; TEXT-DECORATION: none
}
A:hover {
COLOR: #2D8AA7; TEXT-DECORATION: underline
}
.VSP {
COLOR: #2D8AA7; FONT: bold italic 14px Helvetica Neue, Helvetica, Arial, sans-serif;
}
.reflink {
FONT: 11px/18px Helvetica Neue, Helvetica, Arial, sans-serif;
COLOR: #2D8AA7;
}
.user_text {
FONT: 12px/18px Helvetica Neue, Helvetica, Arial, sans-serif;
COLOR: #000000;
}
.bluetext {
COLOR: #695F52;
}
.versionspec {
padding:5px;
background-color: RGB(243, 242, 230);
margin-top:5px;
margin-bottom:5px;
}
.versionspecdetail {
padding:5px;
background-color: RGB(243, 242, 230);
margin-top:5px;
margin-bottom:5px;
}
.versionspeclabel {
font-style: italic;
}
LI.DEF {
list-style-image: url(DefaultLI.gif) ;
}
LI.BAS {
list-style-image: url(BasicLI.gif) ;
}
LI.ADV {
list-style-image: url(AdvancedLI.gif) ;
}
LI.EXP {
list-style-image: url(ExpertLI.gif) ;
}
.titlebox {
font: bold 18px Helvetica Neue, Helvetica, Arial, sans-serif;
color: #51626F;
margin-bottom: 10px;
}
.lefttitlebox {
background-color:#C3CFD1;
}
.lefttitle {
color:#51626F;
font: bold 11px Helvetica Neue, Helvetica, Arial, sans-serif;
}
.beanname {
font: bold 14px/18px Helvetica Neue, Helvetica, Arial, sans-serif;
padding-top:6px;
padding-bottom:5px;
margin-bottom: 5px;
border-bottom-style: dotted;
border-bottom-width: 1;
}
.descrtext {
font-style: italic;
font: 14px/18px Helvetica Neue, Helvetica, Arial, sans-serif;
padding-bottom:9px;
}
.footer {
color: #b0b0b0;
font: 9px Helvetica Neue, Helvetica, Arial, sans-serif;
text-align: center;
border-top-style: solid;
border-top-color: #BOBOBO;
border-top-width: 1px;
padding-top: 5px;
margin-top: 20px;
}
.info_name {
font: 9px Helvetica Neue, Helvetica, Arial, sans-serif;
padding: 0px;
color: black;
}
.info_text {
font: 11px Helvetica Neue, Helvetica, Arial, sans-serif;
}
.text_title {
COLOR: #000000;
FONT: bold 14px Helvetica Neue, Helvetica, Arial, sans-serif;
}
.descr_line {
COLOR: gray;
FONT: 9px Helvetica Neue, Helvetica, Arial, sans-serif;
}
.code {
background-color: RGB(243, 242, 230);
padding: 10px;
white-space: pre;
font-family: Courier New, Monospace;
}
</STYLE>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" width="150" >
<table width="150" height="160" cellpadding="3" cellspacing="0" border="0">
<tbody>
<tr class="lefttitlebox">
<td width="4"></td>
<td align="center" valign="middle" height="30" width="128">
<span class="lefttitle">
<b>FreeRTOS</b>
</span>
</td>
</tr>
<tr height="700">
<td width="4"></td>
<td width="128" valign="top">
<br />
<div class="reflink">
<!---HTMLLISTBEG_SHORT DON'T CHANGE THIS LINE-->
<a href="FreeRTOS.html">General Info</a><br />
<i>Properties</i><br />
<a href="FreeRTOSMethods.html">Methods</a><br />
<a href="FreeRTOSEvents.html">Events</a><br />
<a href="FreeRTOSTypical Usage.html">Typical Usage</a><br />
<a href="FreeRTOSApplication Notes.html">Application Notes</a><br />
<!---HTMLLISTEND DON'T CHANGE THIS LINE-->
<br /><br /><br />
<a href="../../DOCs/PredefSymbols.html">Types & definitions</a><br/>
<a href="../../DOCs/BEANindex.html">Component Index</a><br/>
<a href="../../DOCs/CPUindex.html">CPU Component Index</a><br/>
<a href="../../DOCs/EmbeddedBeans.html">Embedded Components</a><br/>
<a href="../../DOCs/BeanCategories.html">Component Categories</a><br/>
<br /><br /><br />
<center>
<img src="FreeRTOS_b.gif" alt="Component icon"/>
</center>
</div>
</td>
</tr>
</tbody>
</table>
</td>
<td width="1" class="lefttitlebox" valign="top">
<table class="lefttitlebox" width="1" cellpadding="0" cellspacing="0" height="100%" border="0">
<tr class="lefttitlebox"><td width="1"></td></tr>
</table>
</td>
<td style="padding-left:15px;padding-right:10px;" valign="top" align="left" width="100%">
<!-- <table border="0" cellPadding="0" cellSpacing="0" width="100%">
<tbody>
<tr>
<td class="titlebox">-->
<div class="titlebox">
<div class="beanname">
Component
FreeRTOS
</div>
<div class="descrtext">FreeRTOS McuOnEclipse Port with FreeRTOS+Trace</div>
<div class="info_name">Component Level: <span class="info_text"><a href="../../DOCs/BeanCategoriesInfo.html#LevelAbstraction">High</a></span></div>
<div class="info_name">Category:
<span class="info_text">
<a href="../../DOCs/BeanCategoriesInfo.html">Operating Systems</a>
</span>
</div>
</div>
<!--
</td>
</tr>
<tr>
-->
<!-- <td align="left"> -->
<!-- <br /> -->
<div class="text_title">
Properties:
</div>
<div class="descr_line">
(Properties are parameters of the component. Please see the <a href="../../DOCs/EmbeddedBeans.html">Embedded Components page</a> for more information.)
</div>
<div class="user_text">
<ul>
<li>
<a name="DeviceName">
<b>Component name</b></a> - Name of the component.
</li>
<li>
<a name="FreeRTOSVersion">
<b>RTOS Version</b></a> - Identifies the RTOS version
</li>
<li>
<a name="KinetisSDK">
<b>SDK</b></a> - Link to the SDK used.
</li>
<li>
<a name="KinetisSDKGroup">
<b>Kinetis SDK</b></a> - Group used to configure the component if used with the Kinetis SDK.<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="GenerateRTOSPExMacros">
<b>Generate PEX_RTOS Macros</b></a> - If enabled, the component creates PEX_RTOS_INIT() and PEX_RTOS_START() macros in the component header file. As the Kinetis SDK does generate them, the default setting is 'no', otherwise macros will be defined twice.
</li>
<li>
<a name="GenerateOSAFunctions">
<b>Generate OSA Functions</b></a> - If enabled, the component creates OSA_Init() and OSA_Start() functions which are needed for the OS Adaption layer of the Kinetis SDK.
</li>
</ul>
</li>
<li>
<a name="CustomPortGroup">
<b>Custom Port</b></a> - Allows custom settings for FreeRTOS port. Only necessary to generate RTOS source code and then use it without Processor Expert project.
<ul>
<li>
<a name="configCOMPILER">
<b>Compiler</b></a> - Compiler to be used for code generation<br /><br />
There are 10 options:<br />
<ul>
<li><u>automatic</u>: Automatic compiler selection, based on Processor Expert CPU settings</li>
<li><u>ARM gcc</u>: ARM GNU gcc compiler</li>
<li><u>ARM IAR</u>: IAR ARM compiler</li>
<li><u>ARM Keil</u>: Keil ARM compiler</li>
<li><u>ARM FSL (legacy)</u>: depreciated, Freescale ARM compiler</li>
<li><u>S08 FSL</u>: Freescale S08 compiler</li>
<li><u>S12 FSL</u>: Freescale S12(X) compiler</li>
<li><u>ColdFire V1 FSL</u>: Freescale ColdFire V1 compiler</li>
<li><u>ColdFire V2 FSL</u>: Freescale ColdFire V2 compiler</li>
<li><u>DSC FSL</u>: Freescale DSC compiler</li>
</ul><br />
</li>
<li>
<a name="StaticSourcesEnabled">
<b>Source Folders</b></a> - Source Code Generation Option for the RTOS. With this, the source file generation can be configured so they can be easily used outside of Processor Expert.<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="RTOSSrcFolderName">
<b>Source Folder</b></a> - RTOS source files are generated into this sub folder name. The name can be empty.
</li>
<li>
<a name="RTOSHeaderFolderName">
<b>Header Folder</b></a> - RTOS header files are generated into this sub folder name. The name can be empty.
</li>
<li>
<a name="RTOSPortFolderName">
<b>Port Folder</b></a> - RTOS port depending sources files are generated into this sub folder name. The name can be empty.
</li>
<li>
<a name="RTOSMemMangFolderName">
<b>MemMang Folder</b></a> - RTOS port depending sources files are generated into this sub folder name. The name can be empty.
</li>
<li>
<a name="RTOSCommonFolderName">
<b>Common Folder</b></a> - This defines the RTOS common folder name
</li>
<li>
<a name="RTOSConfigFolderName">
<b>Config Folder</b></a> - The RTOS FreeRTOSConfig.h wilf will be generated into this sub folder name. The name can be empty.
</li>
<li>
<a name="UseManualClockValues">
<b>Manual Clock Values</b></a> - If enabled, it is using predefined clock values instead of the values from the Processor Expert Cpu.h<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="configCPU_CLOCK_HZ">
<b>configCPU_CLOCK_HZ</b></a> - Clock speed of CPU, default is CPU_CORE_CLK_HZ with Processor Expert
</li>
<li>
<a name="configBUS_CLOCK_HZ">
<b>configBUS_CLOCK_HZ</b></a> - Bus clock speed, default is CPU_BUS_CLK_HZ with Processor Expert
</li>
</ul>
</li>
</ul>
</li>
<li>
<a name="Custom_portBASE_TYPE">
<b>Custom portBASE_TYPE</b></a> - portBASE_TYPE<br />This is defined to be the most efficient, natural, type for the architecture. For example, on a 32-bit architecture portBASE_TYPE will be defined to be a 32-bit type. On a 16-bit architecture portBASE_TYPE will be defined to be a 16-bit type. If portBASE_TYPE is define to char then particular care must be taken to ensure signed chars are used for function return values that can be negative to indicate an error. <br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="portBASE_TYPE">
<b>portBASE_TYPE</b></a> - Custom portBASE_TYPE<br /><br />
There are 4 options:<br />
<ul>
<li><u>char</u>: char</li>
<li><u>short</u>: short</li>
<li><u>int</u>: int</li>
<li><u>long</u>: long</li>
</ul><br />
</li>
</ul>
</li>
</ul>
</li>
<li>
<a name="IsClassicCW">
<b>Classic CodeWarrior</b></a> - If you are using this component in classic (non-eclipse based) CodeWarrior, then this setting has to be set to 'yes'. If you want to know why: The reason is that classic CodeWarrior does not come with the common_RTOSAdaptor.prg file. As such a test has to be present in FreeRTOS.ts2.
</li>
<li>
<a name="DisabledInterruptsInStartup">
<b>Disabled Interrupts in Startup</b></a> - If set to 'yes', then interrupts will be disabled in PE_low_level_init() using the PEX_RTOS_INIT() macro.
</li>
<li>
<a name="configASSERTdefined">
<b>configASSERT</b></a> - If set to 'yes', FreeRTOSConfig.h will have the configASSERT() macro defined. lt is used in different places in the Kernel to verify proper operation. For better code density/speed you might set this option to 'no'.
</li>
<li>
<a name="UseApplicationTaskTags">
<b>Application Task Tags</b></a> - This configures configUSE_APPLICATION_TASK_TAG. If enabled, the methodsxTaskGetApplicationTaskTag(), vTaskSetApplicationTaskTag() and xTaskCallApplicationTaskHook() are enabled.
</li>
<li>
<a name="NumThreadLocalStoragePointers">
<b>Thread Local Storage Pointers</b></a> - Number of thread local storage pointers, zero to disable functionality. Defines configNUM_THREAD_LOCAL_STORAGE_POINTERS
</li>
<li>
<a name="UseTraceFacility">
<b>Use Trace Facility</b></a> - Configures configUSE_TRACE_FACILITY. Set to 1 if you wish the trace visualisation functionality to be available, or 0 if the trace functionality is not going to be used. If you use the trace functionality a trace buffer must also be provided. If using Trace Hooks, this property is automatically enabled..
</li>
<li>
<a name="DebugHelpersGrop">
<b>Debug Helpers</b></a> - Several helpers to make debugging easier. For smaller footprint, turn them off.
<ul>
<li>
<a name="EnableGDBDebugHelper">
<b>Enable GDB Debug Helper</b></a> - If enabled, a debug helper for GDB is enabled to do thread stack debugging with a special vPortPendSVHandler(). This setting configures the configGDB_HELPER macro.
</li>
<li>
<a name="EnableLTODebugHelper">
<b>Enable LinkTimeOptimizer Helper</b></a> - This setting configures the configLTO_HELPER macro. With -LTO (GNU Link Time Optimizer), certain symbols might be optimized which affect kernel aware debugging. This setting disables optimization so debugging is still possible.
</li>
<li>
<a name="uxTopUsedPriority">
<b>uxTopUsedPriority</b></a> - Configures configUSE_TOP_USED_PRIORITY. OpenOCD Thread Aware debugging needs the variable uxTopUsedPriority present.
</li>
<li>
<a name="freeRTOSMemorySchemeConstant">
<b>Heap Indication Constant</b></a> - Configures configHEAP_SCHEME_IDENTIFICATION. If enabled, a constant named 'freeRTOSMemoryScheme' is added to indicate the heap scheme used. This variable can be used by the NXP FreeRTOS Kernel Awareness plugin to identify the heap scheme used.
</li>
<li>
<a name="TaskCAdditions">
<b>Task C Additions</b></a> - Configures configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H, configUSE_TRACE_FACILITY should be enabled too. If enabled, it includes the file freertos_tasks_c_additions.h at the end of task.c. That extra information is for example used by the debugger to locate RTOS releated information.
</li>
<li>
<a name="RecordStackHighAddress">
<b>Record Stack High Address</b></a> - This configures configRECORD_STACK_HIGH_ADDRESS. If enabled, gives the FreeRTOS Kernel Awareness access to the stack high address. Disable for better code efficiency and less RAM usage.
</li>
</ul>
</li>
<li>
<a name="SeggerSystemViewerGroup">
<b>Segger System Viewer Trace</b></a> - Enables Segger System Viewer Trace. Percepio Trace has to be disabled, and 'Use Trace Facility' has to be enabled.<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="SeggerSystemViewer">
<b>Segger System Viewer</b></a> - Link to Segger System Viewer component
</li>
</ul>
</li>
<li>
<a name="UseTraceHooksGroup">
<b>Percepio Trace</b></a> - If enabled, you can condfigure trace hooks to collect information about the RTOS behaviour. Segger System Viewer has to be disabled.<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="FRTrace">
<b>Percepio FreeRTOS+Trace</b></a> - Link to Percepio Trace component. Only one trace method (Segger or Percepio) can be used.
</li>
</ul>
</li>
<li>
<a name="CollectRuntimeStatisticsGroup">
<b>Generate Runtime Statistics</b></a> - If enabled, runtime statistics are collected. This setting configures configGENERATE_RUN_TIME_STATS. A timer with at least least 10 times faster than the tick counter needs to be provided)<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="RuntimeCounterUseTickCounter">
<b>Use Tick Counter</b></a> - Configures configGENERATE_RUN_TIME_STATS_USE_TICKS. If enabled, it uses the Tick counter for the performance measurement. This is less accurate than using a timer with 10x frequency of the tick counter, but does not need an additional hardware timer.
</li>
<li>
<a name="LDDRuntimeCounterGroup">
<b>LDD</b></a> - Logical Device Driver<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="RuntimeCntrLDD">
<b>Runtime Counter LDD</b></a> - Logical Device Driver implementing the runtime counter. Counter to be used to collect run time statistics. portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE() will be created to access the counter value. The counter frequency should be about 10 times the frequency of the tick timer.
</li>
</ul>
</li>
<li>
<a name="NonLDDRuntimeCounterGroup">
<b>non-LDD</b></a> - Using a traditional (non Logical Device Driver) component<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="RuntimeCntr">
<b>Runtime Counter</b></a> - Counter to be used to collect run time statistics. portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE() will be created to access the counter value. The counter frequency should be about 10 times the frequency of the tick timer.
</li>
</ul>
</li>
</ul>
</li>
<li>
<a name="SchedulerGroup">
<b>Scheduler</b></a> - Settings for the scheduler
<ul>
<li>
<a name="ColdFireV1CPUSpecific">
<b>ColdFire V1</b></a> - This group is used to configure the RTOS for the ColdFire V1 cores<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="FreeRTOSColdFireCPU">
<b>CPU</b></a> - Specify which ColdFire CPU is used (ColdFire V1 only). This is affecting the portCF_INTC_VALUE macro in portmacro.h<br /><br />
There are 5 options:<br />
<ul>
<li><u>MCF51CN</u>: ColdFire V1 MCF51CN family</li>
<li><u>MCF51JM</u>: ColdFire V1 MCF51JM family</li>
<li><u>MCF51QE</u>: ColdFire V1 MCF51QE family</li>
<li><u>MCF51JE</u>: ColdFire V1 MCF51JE family</li>
<li><u>MCF51MM</u>: ColdFire V1 MCF51MM family</li>
</ul><br />
</li>
<li>
<a name="ColdFireSWI">
<b>SWI</b></a> - Specify which software interrupt shall be used for task switching (ColdFire only)<br /><br />
There are 7 options:<br />
<ul>
<li><u>VL1swi</u>: using VL1swi</li>
<li><u>VL2swi</u>: using VL2swi</li>
<li><u>VL3swi</u>: using VL3swi</li>
<li><u>VL4swi</u>: using VL4swi</li>
<li><u>VL5swi</u>: using VL5swi</li>
<li><u>VL6swi</u>: using VL6swi</li>
<li><u>VL7swi</u>: using VL7swi</li>
</ul><br />
</li>
</ul>
</li>
<li>
<a name="ColdFireV2CPUSpecific">
<b>ColdFire V2</b></a> - This group is used to configure the RTOS for the ColdFire V2 cores<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="FreeRTOSColdFireV2CPU">
<b>CPU</b></a> - CPU<br /><br />
There is 1 option:<br />
<ul>
<li><u>MCF5225x</u>: ColdFire V2 MCF5225x family</li>
</ul><br />
</li>
<li>
<a name="ColdFireV2LibraryLowestInterruptPriority">
<b>Library Lowest Interrupt Priority</b></a> - Used for configLIBRARY_LOWEST_INTERRUPT_PRIORITY. The RTOS will disable interrupts equal or lower than this priority. So for example if you set it to 5, then interrupts with level 6 can happen while the RTOS is running. This means as well that you shall *not* call any RTOS functions with an interrupt priority higher than this value! Keep in mind that for the ColdFire V2, the interrupts of level 7 can *not* be masked.
</li>
<li>
<a name="ColdFireV2SWInumber">
<b>SWI Number</b></a> - Software Interrupt Vector number.<br />
Mapping for number to vector for the MCF52259:<br />
0: 0x40 0x00000100 Reserved64 <br />
1: 0x41 0x00000104 INT_EPORT_EPF1<br />
2: 0x42 0x00000108 INT_EPORT_EPF2<br />
3: 0x43 0x0000010C INT_EPORT_EPF3<br />
4: 0x44 0x00000110 INT_EPORT_EPF4<br />
5: 0x45 0x00000114 INT_EPORT_EPF5<br />
6: 0x46 0x00000118 INT_EPORT_EPF6<br />
7: 0x47 0x0000011C INT_EPORT_EPF7<br />
8: 0x48 0x00000120 INT_SCM_SWTI <br />
9: 0x49 0x00000124 INT_DMA0_DONE <br />
10: 0x4A 0x00000128 INT_DMA1_DONE <br />
11: 0x4B 0x0000012C INT_DMA2_DONE <br />
12: 0x4C 0x00000130 INT_DMA3_DONE <br />
13: 0x4D 0x00000134 INT_UART0 <br />
14: 0x4E 0x00000138 INT_UART1 <br />
15: 0x4F 0x0000013C INT_UART2 <br />
16: 0x50 0x00000140 Reserved80
</li>
</ul>
</li>
<li>
<a name="KinetisCPUSpecific">
<b>ARM Cortex-M</b></a> - This group is used to configure the RTOS for the Kinetis/ARM cores<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="ARMFamilyType">
<b>ARM Family</b></a> - Specifies the ARM family used<br /><br />
There are 5 options:<br />
<ul>
<li><u>Cortex-M0+</u>: ARM Cortex-M0+ (Kinetis L family)</li>
<li><u>Cortex-M4</u>: ARM Cortex-M4 (Kinetis K family)</li>
<li><u>Cortex-M4F</u>: ARM Cortex M4 (Kinetis K family with floating point unit)</li>
<li><u>Cortex-M7</u>: ARM Cortex-M7</li>
<li><u>Cortex-M7F</u>: ARM Cortex-M7 with FPU</li>
</ul><br />
</li>
<li>
<a name="KinetisLibraryMaxInterruptPriority">
<b>Max SysCall Interrupt Priority</b></a> - Used for configMAX_SYSCALL_INTERRUPT_PRIORITY. <br />
The highest interrupt priority that can be used by any interrupt service routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER PRIORITY THAN THIS! (higher priorities are lower numeric values). configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero! See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. Note that 0 is the highest priority for Kinetis.
</li>
<li>
<a name="KinetisLibraryLowestInterruptPriority">
<b>RTOS Interrupt Priority</b></a> - Used for configLIBRARY_LOWEST_INTERRUPT_PRIORITY. The lowest interrupt priority that can be used in a call to a "set priority" function. This priority is used for the kernel port itself too. Note that 0 is the highest priority for ARM/Kinetis. Note that FreeRTOS has to run with the lowest interrupt priority!
</li>
<li>
<a name="ARMLowestInterruptPriority">
<b>Lowest Interrupt Priority</b></a> - Lowest possible interrupt priority as defined by the CPU, with zero the *highest* priority. This property is informal only.
</li>
<li>
<a name="CompilerOptimizationLevel">
<b>Compiler Optimization Level</b></a> - Not applicable for gcc. Optimization level of the compiler as in the build tools settings. Depending on the optimization level, the stack frame of the Processor Expert functions and consequently the xPortPendSVHandler() and vPortSVCHandler() functions need to be different, and the port needs to be aware about it. With the MCU10.2 compiler (after Jan 1st 2012) the compiler defines a macro (__optlevel0, etc) for the optimization level used which is checked in the generated code. If the settings do not match, then the source code will raise an #error at compilation time.<br /><br />
There are 5 options:<br />
<ul>
<li><u>0</u>: Optimization level 0</li>
<li><u>1</u>: Optimization level 1</li>
<li><u>2</u>: Optimization level 2</li>
<li><u>3</u>: Optimization level 3</li>
<li><u>4</u>: Optimization level 4</li>
</ul><br />
</li>
<li>
<a name="useMPUsupport">
<b>MPU</b></a> - Using MPU (Memory Protection Unit) support in the port.
</li>
<li>
<a name="useARMSysTickTimer">
<b>SysTick</b></a> - If enabled, the port will use the ARM SysTick timer directly and no Processor Expert Timer is used.<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="useARMSysTickUseCoreClock">
<b>Core Clock</b></a> - If set to yes, the CLK bit in the SysTick configuration register will be set (using the core clock), otherwise the bit is cleared. If the bit is cleared, the external reference clock will be used. The Kinetis K series does not implement this, so only the core clock can be used. For the Kinetis L series, a fixed prescaler of 16 is used.
</li>
</ul>
</li>
<li>
<a name="useARMLowPowerTimer">
<b>Low Power Timer</b></a> - If enabled, it uses the Low Power Timer of the Kinetis.<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
</ul>
</li>
</ul>
</li>
<li>
<a name="NonLDDSWIGroup">
<b>non-LDD SWI</b></a> - Group configuring the software interrupt using classic non-Low Level Driver component<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="SWI">
<b>SWI</b></a> - In order to make a context switch, the RTOS needs a SWI (software interrupt).
</li>
</ul>
</li>
<li>
<a name="UsePreemption">
<b>Preemptive</b></a> - Set to 1 to use the preemptive kernel, or 0 to use the cooperative kernel. (configUSE_PREEMPTION flag)
</li>
<li>
<a name="configUseOptimizedTaskSelection">
<b>Optimized Task Selection</b></a> - If enabled, it enables configUSE_PORT_OPTIMISED_TASK_SELECTION which uses an optimized task selection implemented for ARM. Note that this only supports up to 32 priorirites, and only few ports (like the one for ARM Cortex-M4/M7) has it implemented.
</li>
<li>
<a name="UseTimeSlicing">
<b>Time Slicing</b></a> - Set to 1 (default) time will be time slices among the ready high priority tasks of same priority (configUSE_TIME_SLICING flag)
</li>
<li>
<a name="UseCoroutines">
<b>Use Co-Routines</b></a> - Set to 1 to include co-routine functionality in the build, or 0 to omit co-routine functionality from the build. To include co-routines croutine.c must be included in the project.
</li>
<li>
<a name="IdleShouldYield">
<b>Idle should yield</b></a> - This parameter controls the behaviour of tasks at the idle priority. It only has an effect if:<br />
1. The preemptive scheduler is being used.<br />
2. The users application creates tasks that run at the idle priority.<br />
Tasks that share the same priority will time slice. Assuming none of the tasks get preempted, it might be assumed that each task of at a given priority will be allocated an equal amount of processing time - and if the shared priority is above the idle priority then this is indeed the case.
</li>
<li>
<a name="TaskNameLength">
<b>Task Name Length</b></a> - The maximum permissible length of the descriptive name given to a task when the task is created. The length is specified in the number of characters including the NULL termination byte. (configMAX_TASK_NAME_LEN)
</li>
<li>
<a name="MinimalStackSize">
<b>Minimal Stack Size</b></a> - The size of the stack used by the idle task (configMINIMAL_STACK_SIZE flag). Generally this should not be reduced from the value set in the FreeRTOSConfig.h file provided with the demo application for the port you are using. Note that the size is in stack units (portSTACK_TYPE), which is 4 bytes for a 32bit core like ColdFire and ARM/Kinetis and 1 byte for HCS08. Keep in mind that there is the IDLE task too which needs stack plus the task descriptor block.
</li>
<li>
<a name="MaxPriority">
<b>Maximum Priorities</b></a> - Each task is assigned a priority from 0 to ( configMAX_PRIORITIES - 1 ). configMAX_PRIORITIES is defined within FreeRTOSConfig.h and can be set on an application by application basis. The higher the value given to configMAX_PRIORITIES the more RAM the FreeRTOS kernel will consume.
</li>
<li>
<a name="MaxCoroutinePriorities">
<b>Maximum Coroutine Priorities</b></a> - Each co-routine is assigned a priority from 0 to ( configMAX_CO_ROUTINE_PRIORITIES - 1 ). configMAX_CO_ROUTINE_PRIORITIES is defined within FreeRTOSConfig.h and can be set on an application by application basis. The higher the value given to configMAX_CO_ROUTINE_PRIORITIES the more RAM the FreeRTOS kernel will consume.
</li>
<li>
<a name="StackOverflowCheckingMethodNumber">
<b>Stackoverflow checking method</b></a> - Stack Overflow Detection - Method 1<br />It is likely that the stack will reach its greatest (deepest) value after the kernel has swapped the task out of the Running state because this is when the stack will contain the task context. At this point the kernel can check that the processor stack pointer remains within the valid stack space. The stack overflow hook function is called if the stack pointer contain a value that is outside of the valid stack range.<br />This method is quick but not guaranteed to catch all stack overflows. Set configCHECK_FOR_STACK_OVERFLOW to 1 to use this method only.<br /><br />Stack Overflow Detection - Method 2<br />When a task is first created its stack is filled with a known value. When swapping a task out of the Running state the kernel can check the last 16 bytes within the valid stack range to ensure that these known values have not been overwritten by the task or interrupt activity. The stack overflow hook function is called should any of these 16 bytes not remain at their initial value.<br />This method is less efficient than method one, but still fairly fast. It is very likely to catch stack overflows but is still not guaranteed to catch all overflows.<br />To use this method in combination with method 1 set configCHECK_FOR_STACK_OVERFLOW to 2. It is not possible to use only this method.<br /><br />
There are 3 options:<br />
<ul>
<li><u>Method 1</u>: It is likely that the stack will reach its greatest (deepest) value after the kernel has swapped the task out of the Running state because this is when the stack will contain the task context. At this point the kernel can check that the processor stack pointer remains within the valid stack space. The stack overflow hook function is called if the stack pointer contain a value that is outside of the valid stack range. This method is quick but not guaranteed to catch all stack overflows.</li>
<li><u>Method 2</u>: When a task is first created its stack is filled with a known value. When swapping a task out of the Running state the kernel can check the last 16 bytes within the valid stack range to ensure that these known values have not been overwritten by the task or interrupt activity. The stack overflow hook function is called should any of these 16 bytes not remain at their initial value. This method is less efficient than method one, but still fairly fast. It is very likely to catch stack overflows but is still not guaranteed to catch all overflows.</li>
<li><u>none</u>: No Stack Overflow checking</li>
</ul><br />
</li>
<li>
<a name="CleanupResources">
<b>Cleanup Resources</b></a> - This setting controls the INCLUDE_vTaskCleanUpResources define.
</li>
<li>
<a name="TaskExitErrorHandler">
<b>TaskExitError Handler</b></a> - A function that implements a task must not exit or attempt to return to its caller as there is nothing to return to. If this setting is enabled, then the function prvTaskExitError() will be called if the task returns. Note that if enabled, it might confuse the GDB debugger and not properly show the task stack frames.
</li>
</ul>
</li>
<li>
<a name="TicksGroup">
<b>Ticks</b></a> - Group controlling how ticks are handled
<ul>
<li>
<a name="TicklessIdleModeEnabled">
<b>Tickless Idle Mode</b></a> - If supported, a tickless idle mode is used for power reduction. See http://www.freertos.org/low-power-tickless-rtos.html<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="StoppedTimerCompensation">
<b>Stopped Timer Compensation</b></a> - vPortSuppressTicksAndSleep() needs to stop the tick timer for a short time. This value compensates for the time delay. This value is assigned to configSTOPPED_TIMER_COMPENSATION in port.c
</li>
<li>
<a name="ExpectedIdleTimeBeforeSleep">
<b>Expected Idle Time (Ticks) before Sleep</b></a> - Tickless mode will only be entered if the idle ticks are larger than this value. This defines the value for configEXPECTED_IDLE_TIME_BEFORE_SLEEP.
</li>
<li>
<a name="TicklessIdleDecisionHookEnabled">
<b>Idle Decision Hook</b></a> - Hook called to ask the application if the RTOS is allowed to enter the tickless idle mode. The application might prevent entering tickless idle mode e.g. if this would shug down serial or USB communication.<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="xEnterTicklessIdleFctName">
<b>Hook function name</b></a> - Function name of the decision hook. The implementation must use this prototype: BaseType_t xEnterTicklessIdle(void)
</li>
</ul>
</li>
</ul>
</li>
<li>
<a name="TickRateHz">
<b>Tick Rate (Hz)</b></a> - The frequency of the RTOS tick interrupt.<br />
<br />
The tick interrupt is used to measure time. Therefore a higher tick frequency means time can be measured to a higher resolution. However, a high tick frequency also means that the kernel will use more CPU time so be less efficient. The RTOS demo applications all use a tick rate of 1000Hz. This is used to test the kernel and is higher than would normally be required.<br />
<br />
More than one task can share the same priority. The kernel will share processor time between tasks of the same priority by switching between the tasks during each RTOS tick. A high tick rate frequency will therefore also have the effect of reducing the 'time slice' given to each task.
</li>
<li>
<a name="Use16bitTicks">
<b>Use 16bit ticks</b></a> - Time is measured in 'ticks' - which is the number of times the tick interrupt has executed since the kernel was started. The tick count is held in a variable of type portTickType.<br />
Defining configUSE_16_BIT_TICKS as 1 causes portTickType to be defined (typedef'ed) as an unsigned 16bit type. Defining configUSE_16_BIT_TICKS as 0 causes portTickType to be defined (typedef'ed) as an unsigned 32bit type.<br />
Using a 16 bit type will greatly improve performance on 8 and 16 bit architectures, but limits the maximum specifiable time period to 65535 'ticks'. Therefore, assuming a tick frequency of 250Hz, the maximum time a task can delay or block when a 16bit counter is used is 262 seconds, compared to 17179869 seconds when using a 32bit counter.
</li>
<li>
<a name="NonLDDTickGroup">
<b>non-LDD Tick</b></a> - Group for classic non-LDD components<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="TickCntr">
<b>Tick Counter</b></a> - Timer generating the ticks for the RTOS
</li>
</ul>
</li>
<li>
<a name="LDDTickGroup">
<b>LDD Tick</b></a> - Group for Logical Device Drivers<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="TickTimerLDD">
<b>Tick Timer</b></a> - Tick Timer Interrupt
</li>
</ul>
</li>
</ul>
</li>
<li>
<a name="QueuesGroup">
<b>Queues</b></a> - This group defines how queues are handled
<ul>
<li>
<a name="QueueRegistrySize">
<b>Queue Registry Size</b></a> - The queue registry has two purposes, both of which are associated with kernel aware debugging:<br />
1. It allows a textual name to be associated with a queue for easy queue identification within a debugging GUI.<br />
2. It contains the information required by a debugger to locate each registered queue and semaphore.<br />
The queue registry has no purpose unless you are using a kernel aware debugger.<br />
configQUEUE_REGISTRY_SIZE defines the maximum number of queues and semaphores that can be registered. Only those queues and semaphores that you want to view using a kernel aware debugger need be registered. See the API reference documentation for vQueueAddToRegistry() and vQueueUnregisterQueue() for more information.
</li>
<li>
<a name="useQueueSets">
<b>Queue Sets</b></a> - If queue sets are supported. This sets configUSE_QUEUE_SETS in FreeRTOSConfig.h
</li>
</ul>
</li>
<li>
<a name="MutexGroup">
<b>Semaphores and Mutexes</b></a> - This group defines how semaphores and mutexes are handled
<ul>
<li>
<a name="UseMutexes">
<b>Use Mutexes</b></a> - Set to 1 to include mutex functionality in the build, or 0 to omit mutex functionality from the build. Readers should familiarise themselves with the differences between mutexes and binary semaphores in relation to the FreeRTOS.org functionality.
</li>
<li>
<a name="UseRecursiveMutexes">
<b>Use Recursive Mutexes</b></a> - Set to 1 to include recursive mutex functionality in the build, or 0 to omit recursive mutex functionality from the build. This affects if xSemaphoreTakeRecursive() and xSemaphoreGiveRecursive() are available or not.
</li>
</ul>
</li>
<li>
<a name="TimersEnabled">
<b>Timers</b></a> - Group configuring the software timers<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="TimerTaskPriority">
<b>Priority</b></a> - Priority of the software timer task (configTIMER_TASK_PRIORITY)
</li>
<li>
<a name="TimerTaskQueueLength">
<b>Queue Length</b></a> - Sets configTIMER_QUEUE_LENGTH
</li>
<li>
<a name="TimerTaskStackDepth">
<b>Stack Depth</b></a> - configures the value of configTIMER_TASK_STACK_DEPTH which defines the stack size for the timer task. The units are 'stack units', so 32bits for an ARM.
</li>
<li>
<a name="UseDaemonTaskStartupHook">
<b>Use Daemon Task Startup Hook</b></a> - Configures configUSE_DAEMON_TASK_STARTUP_HOOK. If enabled, uses an application specific vApplicationDaemonTaskStartupHook().
</li>
</ul>
</li>
<li>
<a name="MemoryGroup">
<b>Memory</b></a> - This group controls the heap and memory settings
<ul>
<li>
<a name="DynamicAllocation">
<b>Dynamic Allocation</b></a> - DynamicAllocation<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="ApplicationAllocatedHeap">
<b>Application allocated Heap</b></a> - Configures configAPPLICATION_ALLOCATED_HEAP in FreeRTOSConfig.h. If set to yes, the application needs to define the heap memory variable, e.g. to use special segment attributes.
</li>
<li>
<a name="TotalHeapSize">
<b>Heap Size</b></a> - The total amount of RAM available to the kernel. This value is used by the memory allocation schemes. Value not used if using Scheme3 (malloc/free).
</li>
<li>
<a name="LinkerHeapBaseSymbolName">
<b>Linker Heap Base Symbol</b></a> - Linker defined symbol for the heap base address (configLINKER_HEAP_BASE_SYMBOL) used for Scheme 6. Commonly used name is __HeapBase. Check your linker file.
</li>
<li>
<a name="LinkerHeapLimitSymbolName">
<b>Linker Heap Limit Symbol</b></a> - Linker defined symbol for the heap limit address (configLINKER_HEAP_LIMIT_SYMBOL) used for Scheme 6. Commonly used name is __HeapLimit. Check your linker file.
</li>
<li>
<a name="LinkerHeapSizeSymbolName">
<b>Linker Heap Size Symbol</b></a> - Linker defined symbol for the heap size (configLINKER_HEAP_SIZE_SYMBOL) used for Scheme 6. Commonly used names are __heap_size or HEAP_SIZE. Check your linker file.
</li>
<li>
<a name="MemoryScheme">
<b>Memory Allocation Scheme</b></a> - Configures configUSE_HEAP_SCHEME.<br />Scheme 1:<br />This is the simplest scheme of all. It does not permit memory to be freed once it has been allocated, but despite this is suitable for a surprisingly large number of applications.<br /><br />Scheme 2:<br />This scheme uses a best fit algorithm and, unlike scheme 1, allows previously allocated blocks to be freed. It does not however combine adjacent free blocks into a single large block.<br /><br />Scheme 3:<br />This is just a wrapper for the standard malloc() and free() functions. It makes them thread safe.<br /><br />Scheme 4:<br />This scheme uses a first fit algorithm and, unlike scheme 2, does combine adjacent free memory blocks into a single large block (it does include a coalescence algorithm).<br /><br />Scheme 5:<br />This scheme allows the heap to be defined across multiple non-contigous blocks and combines (coalescences) adjacent memory blocks as they are freed. vPortDefineHeapRegions() ***must*** be called before pvPortMalloc().<br /><br />
There are 6 options:<br />
<ul>
<li><u>Scheme 1: alloc only</u>: This is the simplest scheme of all. It does not permit memory to be freed once it has been allocated, but despite this is suitable for a surprisingly large number of applications.</li>
<li><u>Scheme 2: no merge</u>: This scheme uses a best fit algorithm and, unlike scheme 1, allows previously allocated blocks to be freed. It does not however combine adjacent free blocks into a single large block.</li>
<li><u>Scheme 3: malloc/free</u>: This is just a wrapper for the standard malloc() and free() functions. It makes them thread safe.</li>
<li><u>Scheme 4: merge free blocks</u>: This scheme includes memory block coalescence.</li>
<li><u>Scheme 5: multiple regions</u>: This scheme allows the heap to be defined across multiple non-contigous blocks and combines (coalescences) adjacent memory blocks as they are freed. vPortDefineHeapRegions() ***must*** be called before pvPortMalloc().</li>
<li><u>Scheme 6: newlib</u>: This scheme uses the newlib wrappers provided by Dave Nadler. This setting turns on configUSE_NEWLIB_REENTRANT.</li>
</ul><br />
</li>
</ul>
</li>
<li>
<a name="StaticAllocation">
<b>Static Allocation</b></a> - StaticAllocation<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="defaultvApplicationGetIdleTaskMemory">
<b>Default vApplicationGetIdleTaskMemory()</b></a> - If enabled, it generates a default vApplicationGetIdleTaskMemory() implementation for the IDLE task.
</li>
<li>
<a name="defaultvApplicationGetTimerTaskMemory">
<b>Default vApplicationGetTimerTaskMemory()</b></a> - If enabled, it generates a default vApplicationGetTimerTaskMemory() implementation for the timer task.
</li>
</ul>
</li>
<li>
<a name="UserHeapSectionEnabled">
<b>User Memory Section</b></a> - An optional user section attribute can be provided to place the heap/memory into a user section. This is for example needed for the Kinetis K series where the RAM area is splitted. With this, e.g. __attribute__((section (".m_data_20000000"))) can be specified for the heap object in heap.c<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="HeapSectionName">
<b>Heap Section Name</b></a> - Use ".m_data_20000000" for gcc, and "m_data_20000000" for IAR. The following will be added to the heap variable: __attribute__((section ("sectionName"))). For IAR a similar construct is used.
</li>
</ul>
</li>
</ul>
</li>
<li>
<a name="RTOSAdaptorGrp">
<b>RTOS Adaptor</b></a> - Contains the RTOS specific settings. RTOS adaptor is a part of RTOS component which handles the integration of HAL into specific RTOS.
<ul>
<li>
<a name="MemoryAllocationGroup">
<b>Memory allocation</b></a> - Definition of the RTOS API which provides the memory allocation functionality for HAL driver code.
<ul>
<li>
<a name="hasUserMallocFun">
<b>User function for memory allocation</b></a> - The memory allocation function should allocate the specified number of bytes of memory and return the address of the allocated space. The allocated memory area type should be suitable for usage by RTOS component. If there is an error, it should return NULL pointer.<br />
The following items are available only if the group is enabled (the value is "yes"):<br />
<ul>
<li>
<a name="userMallocFunName">
<b>User function name</b></a> - The name of the user function (see above for description).
</li>
</ul>
</li>
<li>
<a name="hasUserDeallocFun">
<b>User function for memory deallocation</b></a> - The memory deallocation function should free the memory area allocated by the memory allocation function. The function can be called only for areas allocated by a pair memory allocation function (see property hasUserMallocFun User function for memory allocation.<br />
The following items are available only if the group is enabled (the value is "yes"):<br />
<ul>
<li>
<a name="userDeallocFunName">
<b>User function name</b></a> - The name of the user function (see above for description).
</li>
</ul>
</li>
</ul>
</li>
<li>
<a name="CriticalSectionGroup">
<b>Critical section</b></a> - Definition of the RTOS API which provides the critical section handling for HAL driver code.
<ul>
<li>
<a name="hasUserEnterCriticalFun">
<b>User function for entering critical section</b></a> - The open critical section function should introduce the code what cannot be interrupted by the ISRs. Such function can be also called from ISRs and/or within context where ISRs are already disabled. In this situation the function has no effect (except that the pair call to critical section close function will be also ignored - see property hasUserExitCriticalFun. The function has no parameters and returns no value.<br />
The following items are available only if the group is enabled (the value is "yes"):<br />
<ul>
<li>
<a name="userEnterCriticalFunName">
<b>User function name</b></a> - The name of the user function (see above for description).
</li>
</ul>
</li>
<li>
<a name="hasUserExitCriticalFun">
<b>User function for exiting critical section</b></a> - The close critical section function should terminate the code what cannot be interrupted by the ISRs. Such function need always to have a pair open critical section call (see property hasUserEnterCriticalFun. If call to the pair open critical section was ignored, the respective close should be also ignored. The function has no parameters and returns no value.<br />
The following items are available only if the group is enabled (the value is "yes"):<br />
<ul>
<li>
<a name="userExitCriticalFunName">
<b>User function name</b></a> - The name of the user function (see above for description).
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a name="ShellEnabled">
<b>Shell</b></a> - If shell support shall be added or not. If enabled, will enable 'Use Trace Facility' (configUSE_TRACE_FACILITY).<br />
The following items are available only if the group is enabled (the value is "Enabled"):<br />
<ul>
<li>
<a name="ShellMaxNofTasks">
<b>Max number of tasks</b></a> - Maximum number of tasks, used for the tasklist command.
</li>
<li>
<a name="Shell">
<b>Shell</b></a> - Interface to shell
</li>
</ul>
</li>
<li>
<a name="Utility">
<b>Utility</b></a> - Interface to utility functions
</li>
</ul>
<!---USERBEG DON'T CHANGE THIS LINE-->
<!---USEREND DON'T CHANGE THIS LINE-->
</div>
<p class="footer">
PROCESSOR EXPERT is trademark of Freescale Semiconductor, Inc.
<br />
</p>
</td>
</tr>
</table>
</body>
</html>