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

 
 
> Динамическое выделение памяти во внешней RAM))
Taran87
сообщение Apr 30 2012, 11:10
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 12-05-09
Пользователь №: 48 986



Всем Форумчаном добрый день. Есть АРМ контроллер LPC2478 и внешняя DRAM 32 мбайт памяти, работаю в среде IAR. Столкнулся с проблемой выделением памяти под данные во внешней RAM стандартными C функциями malloc() и т.п.? Конечно в IARе существует возможность работы только с внешней RAM, но отказываться от внутренней не хочется. Существуют ли возможности совмещать два диапазона адресации (тоесть когда необходимо один диапазон адресного пространство, затем другой)) ?.. За ранее благодарен.. smile3046.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение May 1 2012, 09:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Taran87 @ Apr 30 2012, 17:10) *
Столкнулся с проблемой выделением памяти под данные во внешней RAM стандартными C функциями malloc() и т.п.? Конечно в IARе существует возможность работы только с внешней RAM, но отказываться от внутренней не хочется. Существуют ли возможности совмещать два диапазона адресации (тоесть когда необходимо один диапазон адресного пространство, затем другой)) ?.. За ранее благодарен.. smile3046.gif

Что-то не очень понятно - с какой именно памятью у вас проблемы?
В какой именно памяти находится куча можно посмотреть по вашему файлу настройки компоновщика (*.cmd).
Ищите там в какую область комппонуется секция ".stack". Естественно она может быть только в одной из областей - или внешней RAM или внутренней RAM.
А зачем она вобще нужна эта куча??? Я в своих эмбеддед-проектах всегда обхожусь без неё.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 1 2012, 12:08
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(jcxz @ May 1 2012, 12:13) *
Естественно она может быть только в одной из областей - или внешней RAM или внутренней RAM.


А если подумать? biggrin.gif

Выделяем для heap область захватывающую и внутреннюю и внешнюю RAM. Потом последовательно захватываем размер внутренней RAM и размер равный размеру промежутка между внутренней и внешней RAM.
Потом освобождаем размер внутренней RAM. (не забываем делать поправки на служебные записи в heap)
И все! Универсальный heap готов.
Go to the top of the page
 
+Quote Post



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

 


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


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