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

 
 
> IAR MSP430 оптимизатор кода
KARLSON
сообщение Oct 27 2010, 09:24
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819



Здравтсвуйте.
Ситуация такая:
Есть 3 переменные, которые необходимо разместить во FLASH памяти.

Код
#pragma memory = constseg(INFOD)      // адреса 1000-103F
const volatile signed char nst
            min_ust = 19, // 3 установленное по умолчанию отрицательное значение
            max_ust = 25, // 4 установленное по умолчанию положительное знание
            config = 1;


Кстати, без слова "const" переменные во флеш не размещаются. Кто-нибудь знает почему?

Эти переменные изменяются пользователем путём стирания и записывания флеш памяти. Значения меняются точно.
Далее
есть кусок кода:

Код
if ((DATA.temperatura > max_ust) || (DATA.temperatura < min_ust)) // если температура вышла из диаппазона    
           {
              // делаем то-то
           }
           else // если норма
           {
              // делаем другое
           }


Без оптимизации в настройках компилятора всё нормально, но стоит включить оптимизацию, то в условии в место max_ust и min_ust компилятор ставит 25 и 19 соответственно. Вся загвоздка скорее всего в ключевом слове const. Но без него переменные оказываются в оперативной памяти.
Без оптимизации не могу, т.к. уже код не умещается в памяти контроллера.

Как выйти из сложившейся ситуации?


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mahagam
сообщение Oct 27 2010, 13:53
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



никаких чудес. простая логика.

"Кстати, без слова "const" переменные во флеш не размещаются. Кто-нибудь знает почему?"
ну потому что без конст - это именно переменные. а как могу переменные располагаться в ПЗУ???

но стоит включить оптимизацию, то в условии в место max_ust и min_ust компилятор ставит 25 и 19 соответственно.
ещё бы. он не дурак, он видит, что при инициализации туда вписали 25 и 19, а потом ни разу нигде по ходу программы прямо не изменяли - он справедливо считает что там 25 и 19. и что нефик их оттуда вычитывать, что можно подставить банальные константы.

весь вопрос как грамотно обмануть компилятор.
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 27 2010, 17:16
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Mahagam @ Oct 27 2010, 19:53) *
"Кстати, без слова "const" переменные во флеш не размещаются. Кто-нибудь знает почему?"
ну потому что без конст - это именно переменные. а как могу переменные располагаться в ПЗУ???
Переменные имеющие статический тип объекта - глобальные или static располагаются в ОЗУ, auto (локальные) - на стеке, register - в регистрах. Но переменные имеющие квалификатор типа const совсем не обязательно должны размещаться в ПЗУ. Они могут размещаться там же, где и перечисленные. Хотя переменную const register весьма трудно себе представить smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- KARLSON   IAR MSP430 оптимизатор кода   Oct 27 2010, 09:24
- - MrYuran   Цитата(KARLSON @ Oct 27 2010, 13:24) Как ...   Oct 27 2010, 09:49
- - V_N   Да имеется такое в IAR я решаю эту проблему путем...   Oct 27 2010, 09:59
- - rezident   Цитата(KARLSON @ Oct 27 2010, 15:24) Как ...   Oct 27 2010, 11:32
- - KARLSON   Спосибо всем, особенно rezident. Возможно я поступ...   Oct 27 2010, 11:54
|- - MrYuran   Цитата(KARLSON @ Oct 27 2010, 15:54) Спос...   Oct 27 2010, 12:58
- - jorikdima   Улыбает конечно смотреть на название переменных, н...   Oct 27 2010, 12:46
- - jorikdima   Цитата(KARLSON @ Oct 27 2010, 13:24) Кста...   Oct 27 2010, 20:43
|- - LightElf   QUOTE (jorikdima @ Oct 28 2010, 00:43) CO...   Oct 29 2010, 18:41
- - k155la3   Цитата(KARLSON @ Oct 27 2010, 12:24) Здра...   Nov 5 2015, 15:07
|- - LightElf   QUOTE (k155la3 @ Nov 5 2015, 18:07) Эхо в...   Dec 4 2015, 12:59
|- - den_po   Цитата(k155la3 @ Nov 5 2015, 18:07) #prag...   Dec 4 2015, 13:32
|- - KRS   Цитата(den_po @ Dec 4 2015, 16:32) Хм. А ...   Dec 6 2015, 19:35
- - den_po   Не увидел в цитатах ничего про то, кому требуется.   Dec 6 2015, 22:35


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:56
Рейтинг@Mail.ru


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