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

 
 
> 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
Ответов
k155la3
сообщение Nov 5 2015, 15:07
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(KARLSON @ Oct 27 2010, 12:24) *
Здравтсвуйте.
Ситуация такая:
Есть 3 переменные, которые необходимо разместить во FLASH памяти.

[code]#pragma memory = constseg(INFOD) // адреса 1000-103F

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

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


Эхо войны .... sm.gif

#pragma location=0x1000
__root const TTestFlashStr InfoSegConst=
{ '1',
'2',
'3',
'4',
'5',
'6'
};
#pragma required=InfoSegConst

Так вроде не должно самоуправничать.
(по крайней мере остается в области флеш на любой оптимизации).
Хотя компилятор умнее нас, и если есть слово "const" может вместо обращения к этой памти заменять на присвоение константы.


Сообщение отредактировал k155la3 - Nov 5 2015, 15:20
Go to the top of the page
 
+Quote Post
den_po
сообщение Dec 4 2015, 13:32
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(k155la3 @ Nov 5 2015, 18:07) *
#pragma location=0x1000
__root const TTestFlashStr InfoSegConst=
{ '1',
'2',
'3',
'4',
'5',
'6'
};
#pragma required=InfoSegConst

Хм. А разве pragma required не перед определением используется?
Go to the top of the page
 
+Quote Post
KRS
сообщение Dec 6 2015, 19:35
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(den_po @ Dec 4 2015, 16:32) *
Хм. А разве pragma required не перед определением используется?

перед! только не перед тем которое где то требуется!
А перед тем которое требует.

т.е. если B для работы нужно А - перед B должна стоять прагма - требуется A
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
- - Mahagam   никаких чудес. простая логика. "Кстати, без ...   Oct 27 2010, 13:53
|- - rezident   Цитата(Mahagam @ Oct 27 2010, 19:53) ...   Oct 27 2010, 17:16
- - 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
|- - LightElf   QUOTE (k155la3 @ Nov 5 2015, 18:07) Эхо в...   Dec 4 2015, 12:59
- - den_po   Не увидел в цитатах ничего про то, кому требуется.   Dec 6 2015, 22:35


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

 


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


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