реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблемы с malloc, адрес структуры value = mutex (0x0)
Сергей Б
сообщение Jul 22 2013, 14:54
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 14-04-06
Из: Russia, Orel
Пользователь №: 16 115



Взял проект от 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 вообще ничего не нашел. Может у меня изначально с конфигом криво, хотя уже вроде всё перерыл.
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 22 2013, 19:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Смотря что цокали.. ? Размер heap ? Или может вообще сокращенную библоитеку поставли ? (емнип CLIB вместо DLIB) ?
Go to the top of the page
 
+Quote Post
Сергей Б
сообщение Jul 23 2013, 08:49
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 14-04-06
Из: Russia, Orel
Пользователь №: 16 115



убирал работу с теми устройствами, которых нет на плате.
размер кучи.
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 24 * 1024 ) )

самое интересное для меня, я не понимаю что означает vst(0x0) и mutex(0x0). Вообще не нашел, что это значит.
Go to the top of the page
 
+Quote Post
DASM
сообщение Jul 23 2013, 10:51
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Это не значит ничего. Отладчик напишет перевод известного ему адреса и все. Вы я правильно понял получаете нулл после вызова маллок-? проверяли? меньшие размеры пробовали? Мне кажется Вы умудрились выкинуть поддержку динамического выделения вообще.
Go to the top of the page
 
+Quote Post
Сергей Б
сообщение Jul 25 2013, 08:28
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 14-04-06
Из: Russia, Orel
Пользователь №: 16 115



Цитата(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; вот с ним и косяк
Go to the top of the page
 
+Quote Post
framer
сообщение Jul 25 2013, 12:37
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 23-09-04
Пользователь №: 709



а какой 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;)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016