Перейти к содержанию
    

Проблемы с malloc

Взял проект от STM32_EVAL на FreeRTOS в IAR. Сделал из него новый проект и покоцал функциональность. Использую его для другой платы.

Так вот, там есть объявление структуры GL_Page_TypeDef *GL_HomePage стартовой страницы GUI библиотеки для STM32.

В полном рабочем проекте при запуске отладки в watch на эту структуру пишет :

Expression | Value | Location | Type

GL_HomePage | vst(0x0) | 0x20000D68 | struct GL_Page_TypeDef

 

В сокращенной версии проекта

Expression | Value | Location | Type

GL_HomePage | mutex(0x0) | 0x20006640 | struct GL_Page_TypeDef

 

При дальнем выделении памяти через malloc у рабоче проекта в Value адрес подставляется, а в сокращенном нет, так и остается mutex(0x0).

Какого говорится фига такое происходит.

Про такое Value вообще ничего не нашел. Может у меня изначально с конфигом криво, хотя уже вроде всё перерыл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотря что цокали.. ? Размер heap ? Или может вообще сокращенную библоитеку поставли ? (емнип CLIB вместо DLIB) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

убирал работу с теми устройствами, которых нет на плате.

размер кучи.

#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 24 * 1024 ) )

 

самое интересное для меня, я не понимаю что означает vst(0x0) и mutex(0x0). Вообще не нашел, что это значит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не значит ничего. Отладчик напишет перевод известного ему адреса и все. Вы я правильно понял получаете нулл после вызова маллок-? проверяли? меньшие размеры пробовали? Мне кажется Вы умудрились выкинуть поддержку динамического выделения вообще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не значит ничего. Отладчик напишет перевод известного ему адреса и все. Вы я правильно понял получаете нулл после вызова маллок-? проверяли? меньшие размеры пробовали? Мне кажется Вы умудрились выкинуть поддержку динамического выделения вообще.

видимо да. Просто я решил собрать проект с нуля и добавить туда библиотек, видимо это был не совсем правильный путь. Сейчас я просто взял уже готовый проект и выкинул все лишнее и заработало.

Печалит только то, что не разобрался почему такое произошло. Могу скинуть проект в иаре, откомпилите может сразу поймете в чем проблема. Без проекта сложно понять со стороны.

Но видимо проблема с настройками или библиотеками, так как при запуске отладчика сразу пишет mutex на глобального определения указателя на структуру. Если не сложно, гляньте что там криво, я только начал варится с операционкой, не до конца разобрался еще в тонкостях

 

мой не работающий проект

http://yadi.sk/d/cCbjU9ui7CIF0

 

из чего переделывал (работающий)

http://yadi.sk/d/Jo3NMxXP7CIIA

 

грусть начинается в файле gl_mgr.c -> функция GL_ShowMainMenu строка GL_HomePage = malloc(sizeof(GL_Page_TypeDef));

изначально в файле есть глобальное определение указателя GL_Page_TypeDef *GL_HomePage; вот с ним и косяк

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а какой manager памяти? #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 24 * 1024 ) ) используеться в heap_1.c и heap_2.c . При обертке heap_3.c берется скорей из проекта. Точно не знаю может из файла stm32f40x_flash.icf (define symbol __ICFEDIT_size_heap__ = 0x200;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...