HOWTO: Move FreeRTOS Heap into DTCM memory - S32K3xx + RTD

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

HOWTO: Move FreeRTOS Heap into DTCM memory - S32K3xx + RTD

HOWTO: Move FreeRTOS Heap into DTCM memory - S32K3xx + RTD

 

In some cases FreeRTOS heap can consume huge portion of RAM memory - especially on small devices like S32K312 and for example DTCM memory is unused. FreeRTOS allows user defined heap which can be moved in any section in RAM. 

First step - make sure, that in FreeRTOS config is application allocated heap is disabled:

jiri_kral_0-1718190416022.png

 

Second step - open linker script file and create new section which points into DTCM memory: 

jiri_kral_1-1718190506796.png

 

 Third step - define ucHeap variable with section attribute: 

jiri_kral_2-1718190668763.png

 

 We are done - FreeRTOS Heap is moved into DTCM memory: 

jiri_kral_3-1718190832690.png

 

In case, that DTCM memory is used - typically there can be Interrupt Vector Table, stack and so on, you can skip creating new section in linker script file and simply add *(my_head) at the end of existing section mapped into dtcm: 

jiri_kral_0-1718363614138.png

 

FreeRTOS heap will be placet at the end of used DTCM memory: 

jiri_kral_1-1718363685771.png

 

 

Labels (1)
%3CLINGO-SUB%20id%3D%22lingo-sub-1886106%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EHOWTO%3A%20Move%20FreeRTOS%20Heap%20into%20DTCM%20memory%20-%20S32K3xx%20%2B%20RTD%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1886106%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%20class%3D%22lia-message-template-symptoms-zone%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%20class%3D%22lia-message-template-solution-zone%22%3E%0A%3CP%3EIn%20some%20cases%20FreeRTOS%20heap%20can%20consume%20huge%20portion%20of%20RAM%20memory%20-%20especially%20on%20small%20devices%20like%20S32K312%20and%20for%20example%20DTCM%20memory%20is%20unused.%20FreeRTOS%20allows%20user%20defined%20heap%20which%20can%20be%20moved%20in%20any%20section%20in%20RAM.%26nbsp%3B%3C%2FP%3E%0A%3CP%3EFirst%20step%20-%20make%20sure%2C%20that%20in%20FreeRTOS%20config%20is%20application%20allocated%20heap%20is%20disabled%3A%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jiri_kral_0-1718190416022.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jiri_kral_0-1718190416022.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F283703i33573604BEA9CC98%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22jiri_kral_0-1718190416022.png%22%20alt%3D%22jiri_kral_0-1718190416022.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CP%3ESecond%20step%20-%20open%20linker%20script%20file%20and%20create%20new%20section%20which%20points%20into%20DTCM%20memory%3A%26nbsp%3B%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jiri_kral_1-1718190506796.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jiri_kral_1-1718190506796.png%22%20style%3D%22width%3A%20358px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F283704i5902F41205C12236%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22jiri_kral_1-1718190506796.png%22%20alt%3D%22jiri_kral_1-1718190506796.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%26nbsp%3BThird%20step%20-%20define%20ucHeap%20variable%20with%20section%20attribute%3A%26nbsp%3B%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jiri_kral_2-1718190668763.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jiri_kral_2-1718190668763.png%22%20style%3D%22width%3A%20629px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F283705iFF191148240A943A%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22jiri_kral_2-1718190668763.png%22%20alt%3D%22jiri_kral_2-1718190668763.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%26nbsp%3BWe%20are%20done%20-%20FreeRTOS%20Heap%20is%20moved%20into%20DTCM%20memory%3A%26nbsp%3B%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jiri_kral_3-1718190832690.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jiri_kral_3-1718190832690.png%22%20style%3D%22width%3A%20982px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F283706iB21FC25F272E1917%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22jiri_kral_3-1718190832690.png%22%20alt%3D%22jiri_kral_3-1718190832690.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CP%3EIn%20case%2C%20that%20DTCM%20memory%20is%20used%20-%20typically%20there%20can%20be%20Interrupt%20Vector%20Table%2C%20stack%20and%20so%20on%2C%20you%20can%20skip%20creating%20new%20section%20in%20linker%20script%20file%20and%20simply%20add%20*(my_head)%20at%20the%20end%20of%20existing%20section%20mapped%20into%20dtcm%3A%26nbsp%3B%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jiri_kral_0-1718363614138.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jiri_kral_0-1718363614138.png%22%20style%3D%22width%3A%20579px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F284227iF73034799D284B6E%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22jiri_kral_0-1718363614138.png%22%20alt%3D%22jiri_kral_0-1718363614138.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%3CSPAN%3EFreeRTOS%20heap%20will%20be%20placet%20at%20the%20end%20of%20used%20DTCM%20memory%3A%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22jiri_kral_1-1718363685771.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22jiri_kral_1-1718363685771.png%22%20style%3D%22width%3A%20736px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F284228i304F5A51CB2A398E%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22jiri_kral_1-1718363685771.png%22%20alt%3D%22jiri_kral_1-1718363685771.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1886106%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EGeneral%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
100% helpful (1/1)
Version history
Last update:
‎06-14-2024 04:15 AM
Updated by: