Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с malloc
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
Сергей Б
Взял проект от 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 вообще ничего не нашел. Может у меня изначально с конфигом криво, хотя уже вроде всё перерыл.
DASM
Смотря что цокали.. ? Размер heap ? Или может вообще сокращенную библоитеку поставли ? (емнип CLIB вместо DLIB) ?
Сергей Б
убирал работу с теми устройствами, которых нет на плате.
размер кучи.
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 24 * 1024 ) )

самое интересное для меня, я не понимаю что означает vst(0x0) и mutex(0x0). Вообще не нашел, что это значит.
DASM
Это не значит ничего. Отладчик напишет перевод известного ему адреса и все. Вы я правильно понял получаете нулл после вызова маллок-? проверяли? меньшие размеры пробовали? Мне кажется Вы умудрились выкинуть поддержку динамического выделения вообще.
Сергей Б
Цитата(DASM @ Jul 23 2013, 14:51) *
Это не значит ничего. Отладчик напишет перевод известного ему адреса и все. Вы я правильно понял получаете нулл после вызова маллок-? проверяли? меньшие размеры пробовали? Мне кажется Вы умудрились выкинуть поддержку динамического выделения вообще.

видимо да. Просто я решил собрать проект с нуля и добавить туда библиотек, видимо это был не совсем правильный путь. Сейчас я просто взял уже готовый проект и выкинул все лишнее и заработало.
Печалит только то, что не разобрался почему такое произошло. Могу скинуть проект в иаре, откомпилите может сразу поймете в чем проблема. Без проекта сложно понять со стороны.
Но видимо проблема с настройками или библиотеками, так как при запуске отладчика сразу пишет 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; вот с ним и косяк
framer
а какой 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;)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.