diff --git a/epicardium/FreeRTOSConfig.h b/epicardium/FreeRTOSConfig.h
index 95ddf835db5d8be0722db87ee6b80b1a97dfa9e6..ba19e15a494b0c7f1c0ec17d0451fa4c6f052b39 100644
--- a/epicardium/FreeRTOSConfig.h
+++ b/epicardium/FreeRTOSConfig.h
@@ -12,8 +12,10 @@
 /* TODO: Adjust this for tickless idle */
 #define configTICK_RATE_HZ          ((portTickType)1000)
 
-/* Memory */
-#define configTOTAL_HEAP_SIZE       ((size_t)(26 * 1024))
+/* Memory
+ *
+ * Heap is managed by libc (heap_3.c).
+ */
 #define configMINIMAL_STACK_SIZE    ((unsigned short)128)
 
 #define configMAX_PRIORITIES        5
diff --git a/epicardium/meson.build b/epicardium/meson.build
index ea43d08b31f400e4b1eb77ea3306efc736ea0cf6..30510169f4e0a9f994ad860443439629e23f1c73 100644
--- a/epicardium/meson.build
+++ b/epicardium/meson.build
@@ -48,6 +48,7 @@ api_dispatcher_lib = static_library(
 freertos = static_library(
   'freertos',
   freertos_sources,
+  freertos_heap3,
   dependencies: periphdriver,
   include_directories: [
     freertos_includes,
diff --git a/hw-tests/hello-freertos/meson.build b/hw-tests/hello-freertos/meson.build
index c24b578658a9740dbf430d1a5ddaa74fd828a9ec..a7c154690bd97ea8b25b02a9d51f17570b22b6f7 100644
--- a/hw-tests/hello-freertos/meson.build
+++ b/hw-tests/hello-freertos/meson.build
@@ -3,6 +3,7 @@ name = 'hello-freertos'
 freertos = static_library(
   'freertos',
   freertos_sources,
+  freertos_heap2,
   freertos_cli_sources,
   dependencies: periphdriver,
   include_directories: [
diff --git a/lib/FreeRTOS/meson.build b/lib/FreeRTOS/meson.build
index 1a390f6d25f06c67e9b5b09d86171e555f3b311c..03b5e1577fea02e41b4021943801e14b05db6d1a 100644
--- a/lib/FreeRTOS/meson.build
+++ b/lib/FreeRTOS/meson.build
@@ -13,5 +13,12 @@ freertos_sources = files(
   './Source/timers.c',
 
   './Source/portable/GCC/ARM_CM4F/port.c',
+)
+
+freertos_heap2 = files(
   './Source/portable/MemMang/heap_2.c',
 )
+
+freertos_heap3 = files(
+  './Source/portable/MemMang/heap_3.c',
+)