SergeyB 0 July 22, 2013 Posted July 22, 2013 · Report post Взял проект от 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 вообще ничего не нашел. Может у меня изначально с конфигом криво, хотя уже вроде всё перерыл. Quote Share this post Link to post Share on other sites More sharing options...
DASM 0 July 22, 2013 Posted July 22, 2013 · Report post Смотря что цокали.. ? Размер heap ? Или может вообще сокращенную библоитеку поставли ? (емнип CLIB вместо DLIB) ? Quote Share this post Link to post Share on other sites More sharing options...
SergeyB 0 July 23, 2013 Posted July 23, 2013 · Report post убирал работу с теми устройствами, которых нет на плате. размер кучи. #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 24 * 1024 ) ) самое интересное для меня, я не понимаю что означает vst(0x0) и mutex(0x0). Вообще не нашел, что это значит. Quote Share this post Link to post Share on other sites More sharing options...
DASM 0 July 23, 2013 Posted July 23, 2013 · Report post Это не значит ничего. Отладчик напишет перевод известного ему адреса и все. Вы я правильно понял получаете нулл после вызова маллок-? проверяли? меньшие размеры пробовали? Мне кажется Вы умудрились выкинуть поддержку динамического выделения вообще. Quote Share this post Link to post Share on other sites More sharing options...
SergeyB 0 July 25, 2013 Posted July 25, 2013 · Report post Это не значит ничего. Отладчик напишет перевод известного ему адреса и все. Вы я правильно понял получаете нулл после вызова маллок-? проверяли? меньшие размеры пробовали? Мне кажется Вы умудрились выкинуть поддержку динамического выделения вообще. видимо да. Просто я решил собрать проект с нуля и добавить туда библиотек, видимо это был не совсем правильный путь. Сейчас я просто взял уже готовый проект и выкинул все лишнее и заработало. Печалит только то, что не разобрался почему такое произошло. Могу скинуть проект в иаре, откомпилите может сразу поймете в чем проблема. Без проекта сложно понять со стороны. Но видимо проблема с настройками или библиотеками, так как при запуске отладчика сразу пишет 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; вот с ним и косяк Quote Share this post Link to post Share on other sites More sharing options...
framer 0 July 25, 2013 Posted July 25, 2013 · Report post а какой 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;) Quote Share this post Link to post Share on other sites More sharing options...