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

 
 
> Директивы компилятора по оптимизации кода в CCS, Как указать компилятору, чтобы он не удалял переменную из памяти
Alexander_
сообщение Feb 29 2008, 12:00
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 7-04-06
Пользователь №: 15 929



Есть программа, в которой некоторые переменные отвечают за выбор режима. Т.к. кроме JTAG никакой связи с процессором нет, значение переменных меняется с помощью GEL. Но после того как в настройках компилятора ставлю No Debug, изменить переменную с помощью GEL не получается.
Как указать компилятору, чтобы он оставил переменную в памяти?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
magder
сообщение Mar 3 2008, 17:27
Сообщение #2





Группа: Новичок
Сообщений: 7
Регистрация: 19-02-07
Пользователь №: 25 509



Всегда помагала запись типа
volatile Uint32 i; smile.gif

(через map-файл можешь посмотреть где она в памяти лежит)
Go to the top of the page
 
+Quote Post
Alexander_
сообщение Mar 4 2008, 08:26
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 7-04-06
Пользователь №: 15 929



Цитата
Всегда помагала запись типа
volatile Uint32 i; smile.gif

(через map-файл можешь посмотреть где она в памяти лежит)


Попробовал, не помогает. Адрес в памяти можно посмотреть и без volatile.

Цитата
Если я все правильно понимаю, то в настройках проекта есть два независимых параметра.
1) оптимизация
2) наличие отладочной информации (Debug info).
Первое, это то, что влияет на выходной ассемблерный (читай машинный) код.
Второе, это наличие кое-какой информации в out-файле, которую использует отладчик.

Резюме. Если у вас переменная глобальная (естественно она у вас глобальная, иначе говорить не о чем), ставьте Include Debug Info (или как там правильно звучит, не помню), но при этом оптимизацию ставьте, какую вам нужно. По-моему так, но могу и ошибаться, ибо Release гонять на JTAG'е предпочитаю не


Оптимизация не влияет, но на всякий случай ставлю Opt Level = None.
А вот при Debug info=Full Debug получаем ассемблерный код (VideoMode – глобальная переменная):

Код
    .sect    ".text"
    .global    _VideoMode
_VideoMode:    .usect    ".bss:c",1,1
    .sym    _VideoMode,_VideoMode, 12, 2, 8


При Debug info=No Debug получаем:

Код
    .sect    ".text"
    .global    _VideoMode
_VideoMode:    .usect    ".bss:c",1,1


Т.е. нужно, чтобы для указанной переменной в ассемблерный код добавилась строчка

Код
.sym    _VideoMode,_VideoMode, 12, 2, 8.


Не понял как вставить Include Debug Info, если можно поподробнее.
Go to the top of the page
 
+Quote Post



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

 


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


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