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

 
 
> IAR Optimization, Точнее тупизм
mungo
сообщение Feb 2 2010, 08:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 21-09-07
Из: СССР
Пользователь №: 30 719



IAR ARM v4.40a.
Недавно очень долго боролся с программкой, которая никак не работала. Определенно глюк компилера.
CODE
volatile int x;

void func1()
{
... код какой-то
// если отработал, х не меняем и выходим
x=0;
}

int main()
{
x=1; func1();
if (x) ...; else ...
x=0; ....
return 0;
}


Суть: потом допер, полез в дизасм. Если в последних строках убрать х=0, то все как-бы работает. Но переменная используется дальше, так что это как-бы и не выход. А в том виде, как оно выглядит, первое присваивание х=1 просто выкидывается. Чтобы он этого не делал, нужно выключать оптимизацию напрочь. Но это ведь не выход, ибо текущий объем прошивки уже за 100 кб вышел.
Поборол косвенно - перестроив порядок команд. То есть искривив программу.

Вопрос: сталкивался ли кто и есть ли смысл обновлять до версии 5? Всё ли там пучком с оптимизатором?


--------------------
Сомневаюсь, и вам советую!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KSN
сообщение Mar 5 2010, 11:04
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



В продолжение ответов на мой вопрос возник еще один вопрос о использовании указателя на область конфигурации. Каким способом "настраивать" его на необходимую переменную? Пока я вижу 1 способ:
Код
#define VALUE_ONE 0
#define VALUE_TWO 1

#pragma location="FLASH"
__root const uint32_t  valueOne = 2000;
#pragma location="FLASH"
__root const uint32_t  valueTwo = 3000;

uint32_t* toFlash[] = {
(uint32_t*)&  valueOne,
(uint32_t*)&  valueTwo,
};
.....
temp = *toFlash[VALUE_ONE]; // работаю со значением valueOne


Хотел следующий способ использовать:
Код
#pragma location="FLASH"
__root const uint32_t  valueOne = 2000;
#pragma location="FLASH"
__root const uint32_t  valueTwo = 3000;

uint32_t* toFlash;
.....
toFlash = (uint32_t*)&valueOne;
temp = *toFlash;

но, при оптимизации подставляется значение константы. Еще вариант: для каждой переменной создавать свою section, но будет очень монстроидально. Есть еще варианты?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 5 2010, 11:27
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(KSN @ Mar 5 2010, 14:04) *
я вижу...

Непонятная каша какая-то sad.gif.
Говорите, что где-то во Flash находится СТРУКТУРА со всеми Вашими конфигурационными данными - присваиваете этот адрес ГЛОБАЛЬНОМУ указателю на структуру. И работаете с ней.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mungo   IAR Optimization   Feb 2 2010, 08:29
- - GetSmart   Листинг с глюком в студию.   Feb 2 2010, 08:36
|- - mungo   Цитата(GetSmart @ Feb 2 2010, 10:36) Лист...   Feb 2 2010, 08:58
|- - GetSmart   Цитата(mungo @ Feb 2 2010, 13:58) Я приве...   Feb 2 2010, 09:25
- - MALLOY2   ЦитатаЯ привел суть. Из вашей сути ничего не ястн...   Feb 2 2010, 09:03
|- - mungo   Цитата(MALLOY2 @ Feb 2 2010, 11:03) Из ва...   Feb 2 2010, 09:06
|- - zltigo   Цитата(mungo @ Feb 2 2010, 12:06) Значит,...   Feb 2 2010, 09:31
|- - Dog Pawlowa   Цитата(mungo @ Feb 2 2010, 13:06) Есть ли...   Feb 2 2010, 10:17
- - scifi   Цитата(mungo @ Feb 2 2010, 11:29) Поборол...   Feb 2 2010, 09:49
- - mungo   Всё-таки не в моей кривости дело. Поставил 5.41.1,...   Feb 2 2010, 10:52
|- - Сергей Борщ   Цитата(mungo @ Feb 2 2010, 12:52) но ему ...   Feb 2 2010, 12:43
- - MALLOY2   ЦитатаНу а на вторую часть вопроса есть ответ? Воп...   Feb 2 2010, 16:14
- - KSN   RE: IAR Optimization   Mar 4 2010, 06:13
|- - zltigo   Цитата(KSN @ Mar 4 2010, 09:13) Возможно,...   Mar 4 2010, 07:36
|- - IgorKossak   Цитата(KSN @ Mar 4 2010, 08:13) При уровн...   Mar 4 2010, 07:54
- - KSN   Ага, понял. Просто без const переменная не размеща...   Mar 4 2010, 07:58
|- - zltigo   Цитата(KSN @ Mar 4 2010, 10:58) Тогда пол...   Mar 4 2010, 08:12
|- - Сергей Борщ   Цитата(KSN @ Mar 4 2010, 09:58) Ага, поня...   Mar 4 2010, 08:36
|- - Sajan   Цитата(Сергей Борщ @ Mar 4 2010, 12:36) Л...   Apr 27 2010, 10:30
|- - aaarrr   Цитата(Sajan @ Apr 27 2010, 14:30) Соотве...   Apr 27 2010, 10:57
|- - dxp   Цитата(Sajan @ Apr 27 2010, 17:30) Модифи...   Apr 28 2010, 03:00
- - KSN   Цитата(Сергей Борщ @ Mar 4 2010, 14:36) Л...   Mar 4 2010, 08:43
|- - MrYuran   Цитата(KSN @ Mar 5 2010, 14:04) Есть еще ...   Mar 5 2010, 11:31
- - sigmaN   Для примера возьмем read only регистр какой-нибудь...   Apr 27 2010, 16:57


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

 


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


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