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

 
 
> Распределение переменных в ОЗУ, как заставить Keil раскидать данные правильно??
AndreyS
сообщение Oct 17 2006, 10:30
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Добрый день всем.


Возник вопрос.

Какие настройки заставляют Keil раскидывать данные линейно, последовательно для ВСЕГО проекта?

Поясню.

Имею проект с 5 файлами. В каждом из файлов определил переменные доступные только для этого файла. При работе программы наблюдаю как одна (пока одна может и больше) переменная меняется не помоим законам. Что-то туда еще перекидывает данные. Закомментил все процедуры связанные с изменением этой переменной и все равно переменная дергается.

Как заставить Кеил построить для меня всю карту памяти для всего проекта? Что, куда она положила по каким адресам? Хочу найти перекрестные ссылки.

И еще как в настройках компилятора (не в коде) задать SP??? Хочется чтобы SP устанавливался один раз, а не дважды.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DimG
сообщение Oct 18 2006, 06:10
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 70
Регистрация: 4-04-06
Из: г. Омск
Пользователь №: 15 777



Цитата
(DimG @ Oct 18 2006, 09:24) quotecСо своей стороны могу посоветовать следующее. Если вы не хотите объявлять переменную в качестве глобальной, то объявите ее через static. При этом компилятор если и будет использовать эту ячейку памяти, то при этом обязательно сохронит ее в стек. Только не совмещайте объявление переменной и ее инициализацию, т.к. переменные static инициализируются один раз.QuoteEndQuoteEEndА вот с этим не могу полностью согласиться. Статическая переменная отличается от глобальной лишь областью "видимости". "Видимость" у нее в пределах той функции в которой она объявлена. Ее значение в стек сохранять нет необходимости. Компилятор и так под нее выделяет постоянную ячейку ОЗУ, которая другими переменными не используется.

Это уже на усмотрение компилятора, ведь ничего не мешает компилятору использовать эту ячейку под локальную переменную, сохранив ее значение, а после восстановив. Правда сказать, что компилятор Keil имеет такую возможность не могу. Но если она есть то будет использована только при нехватке памяти, это точно.
Go to the top of the page
 
+Quote Post



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

 


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


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