Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

CCS + F2812. Динамическое выделение памяти во внешней RAM работает только один раз

Отправлено GW (194.67.79.203) 13 февраля 2010, г. 16:11


Имеем CCS3.1, F2812 с внешней памятью в ZONE6 (0х100000-0x10ffff) , модель “lage”. Вся внешняя память отдана под «кучу». Выделяем 4 фрагмента:
ptr0 = (WORD*)malloc(0x3000);
ptr1 = (WORD*)malloc(0x3000);
ptr2 = (WORD*)malloc(0x3000);
ptr3 = (WORD*)malloc(0x3000);

Все чудно выделяется. Теперь освобождаем все 4 указателя
free((void*)ptr0);
free((void*)ptr1);
free((void*)ptr2);
free((void*)ptr3);

и повторно выделяем такие же фрагменты.
Первый фрагмент выделяется нормально, ptr0 = 0х100002, а ptr1 уже равен 0х129008,т.е. вообще за пределами кучи. При выделении 3-го фрагмента malloc() просто зависает.
Пробовал использовать far_malloc() и far_free() – практически тот-же эффект, с той лишь разницей, что не зависает, но указатели все равно возвращает бредовые. Ни размер фрагмента, ни их количество на эффект не влияют.
Внешняя память не сбоит – специально проверял.
Это я чего не так делаю или библиотеки кривые? Кстати, пробовал брать rts2800_ml.lib от ССS3.3. – то же самое.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 76:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru