IAR для AVR. В программе десятки функций. Каждая переменная в них занимает RAM. Как убедить компилятор в повторном использовании ячеек памяти?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
RsWe
02 сентября 2003 г. 10:56
Составить ответ
|||
Конференция
|||
Архив
Ответы
Каждый компилятор и сам знает, что область с локальными переменными нужно (+)
—
Беня
(02.09.2003 12:04, 604 байт)
При любых изменениях IAR только радуется, что может захапать еще памяти и при этом ничего не делать.
—
RsWe
(02.09.2003 12:28, 85 байт)
Ну насчет "при любых" - тут-то Вы погорячились :-)) Поэтому пара вопросов (+)
—
Беня
(02.09.2003 12:43, 303 байт)
Ответ:
—
RsWe
(02.09.2003 13:29, 521 байт)
Ну я уже писАл, что для локальных переменных отводится специальный стек - CSTACK, размер которого Вы задаете вручную. А он тоже занимает память. Если его задать большим, то просто память зря будет расходоваться.
—
Беня
(02.09.2003 15:06,
пустое
)
Не жрет ли он RAM из-за того...
—
=AK=
(02.09.2003 13:37, 229 байт)
Ответ: Хочу добавить, что к области DATA относится не только RAM, но регистры, порты ВВ.
—
Bill
(02.09.2003 13:47,
пустое
)
Каждый компилятор и сам знает, что область с локальными переменными нужно (+)
—
Беня
(02.09.2003 12:02, 604 байт)
Чёта ты гонишь, дружок.
—
IAR
(02.09.2003 11:32,
пустое
)
Ответ: Храните переменные в стеке. Глобальные переменные (не массивы) можно хранить в регистрах.
—
Bill
(02.09.2003 11:03,
пустое
)
local переменная не занимает RAM
—
=AK=
(02.09.2003 11:02,
пустое
)
Какой-такой local? Этого слова мы с IARом не знаем.
—
RsWe
(02.09.2003 11:30,
пустое
)
Ответ: Вы за IAR зря говорите. Если Вы не знаете, то IAR то знает.
—
Bill
(02.09.2003 11:56, 308 байт)
Ни хренаськи. Ни в какой из функций внутри static не упоминается. А при добавлении переменных IAR уедает следующий бесценный кусок RAM.
—
RsWe
(02.09.2003 12:08, 137 байт)
Нет - обычно такие переменные размещаются в RSTACK-е.
—
-Тумблер-
(02.09.2003 17:10,
пустое
)
Перепутал - в CSTACK-e !
—
-Тумблер-
(02.09.2003 17:12,
пустое
)
При добавлении функций с локальными переменными (которые объявлены внутри функции) компилятор не "съедает" ОЗУ. Он тратит ОЗУ на глобальные переменные.
—
Беня
(02.09.2003 12:27,
пустое
)
Ответ: Тогда рекомендую Вам почитать учебники по Си. Если Вы дадите свой код, то можно посмотреть в чем Ваша проблема.
—
Bill
(02.09.2003 12:17,
пустое
)
Неужели совсем не занимает?
—
-=L.A.=-
(02.09.2003 11:08,
пустое
)
Ответ: Нет, иногда занимает.
—
Bill
(02.09.2003 11:16,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru