Blackfin, компилятор, менеджер памяти

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
faddistr
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Пн ноя 08, 2010 00:56:40
Откуда: Киев

Blackfin, компилятор, менеджер памяти

Сообщение faddistr »

Использую VDK. Компилятор из состава Visual DSP++. В C++ boot_thr.cpp: Инициализирую некоторую структуру(static). В С либе Lib существует статический указатель типа структуры. Через функцию передаю адрес структуры, присваиваю указателю. Сразу после присваивания поля структуры и указателя на структуру совпадают, адреса равны. В Lib.с объявлен статический колбек, который вызывается из недр стандартных драйверов(uart) по прерыванию. Указатель содержит корректный адрес структуры. Получается что после вызова колбека, поля указателя на структуру и поля структуры начинают отличаться. Как будто в момент инициализации указателя произошло копирования структуры, вместо присваивания указателя. При том значение &Структура и Указатель совпадают(один и тот-же участок L1 Internal memory). Но при использования в boot_thr.cpp видим старые значения полей, а в Lib.с в колбеках новые.
В чем причина такого странного поведения? Пробовал передавать указатель как колбек параметр, ефект тот-же.
Реклама
faddistr
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Пн ноя 08, 2010 00:56:40
Откуда: Киев

Re: Blackfin, компилятор, менеджер памяти

Сообщение faddistr »

Поля структур для Си и С++ выравнены по разному. Хоть структуры и начинаются с одного адреса, далее идет нехорошая штука со смещениями. Прагма не работает. :dont_know: Предварительно решил отказаться от Си++.
Реклама
mrFox
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Пт сен 21, 2007 17:53:23
Откуда: Зарайск

Re: Blackfin, компилятор, менеджер памяти

Сообщение mrFox »

а попробовать передавать ссылки на 1ю переменную структуры ?
faddistr
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Пн ноя 08, 2010 00:56:40
Откуда: Киев

Re: Blackfin, компилятор, менеджер памяти

Сообщение faddistr »

mrFox писал(а):а попробовать передавать ссылки на 1ю переменную структуры ?
А что это изменит? У меня структура в структуре, она выравнивается по 1 байту или 4м в зависимости от того си это или си++. Или он по другому начнет работать?
Реклама
Эиком - электронные компоненты и радиодетали
mrFox
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Пт сен 21, 2007 17:53:23
Откуда: Зарайск

Re: Blackfin, компилятор, менеджер памяти

Сообщение mrFox »

в C и C++ видимо разные настройки выравнивания/упаковки структуры
при работе с кортексами (GCC) упаковка структур: -fpack-struct

можно еще так попробовать

Код: Выделить всё

#ifdef __cplusplus
extern "C" {
#endif

структура

#ifdef __cplusplus
}
#endif
Реклама
faddistr
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Пн ноя 08, 2010 00:56:40
Откуда: Киев

Re: Blackfin, компилятор, менеджер памяти

Сообщение faddistr »

Спасибо за ответы. Проблема оказалась в похеренном файле services_types.h . После его восстановления все работает.
Реклама
Ответить

Вернуться в «Разные вопросы по МК»