Не удалось выделить кучу Nuttx: размер кучи равен нулю - PullRequest
1 голос
/ 08 июня 2019

Я бы хотел выделить немного памяти на mm_heap, но его размер равен нулю: debug mm_heap

Это приводит к сбою выделения памяти. Как я могу отладить эту проблему?

Для справки, я использую Nuttx на STM32F765.

Ответы [ 2 ]

3 голосов
/ 09 июня 2019

Размер кучи равен нулю, потому что ничего не было добавлено в кучу.Это видно по тому, что количество областей памяти (mm_nregions) также равно нулю.

Области памяти добавляются в кучу с помощью mm_addregion () в mm_initialize ();Там гарантированно будет вызван хотя бы один раз, чтобы добавить хотя бы одну область памяти.Если количество областей памяти равно нулю, эта функция по какой-то причине не сработала.

Единственный способ, с помощью которого функция может потерпеть неудачу - это передать неверные параметры.Передача параметров основана на той реализации, которую обеспечивает реализация up_allocateheap (), которую вы используете.

Итак, вам нужно взглянуть на up_allocateheap (), чтобы понять, что передается.Возможно, поставьте точку останова mm_addregion (), чтобы увидеть, чем именно он недоволен.

0 голосов
/ 10 июня 2019

Большое спасибо за ваш ответ.

Мне удалось решить проблему.

В моей программе произошла небольшая путаница с stm32_boot.c и stm32_appinitialize.c (ошибка копирования-вставки).

Также я не активировал «BOARD_LATE_INITIALIZE» в menueconfig -> RTOS Features -> RTOS hooks.

Поэтому функция инициализации GPIO была вызвана до инициализации кучи, что вызвало ошибку, описанную ввопрос.

...