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

 
 
> Глюки оптимизации IAR V4.11A
antoxa1
сообщение Nov 24 2006, 14:54
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 6-04-06
Пользователь №: 15 889



Кто нибудь сталкивался со следующей проблемой: компилирую проект, прошиваю контроллер(ATMega8515L), если компиляция происходит без оптимизации- все работает нормально, если выставляю высокий уровень оптимизации, программа работает неверно. В отладчике AVRStudio вроде все работает.
Подробности: проявляется это на функции, которая при одиночном вызове или при нескольких вызовах подряд (но не в цикле) отрабатывает нормально. При вписывании этой функции в тело цикла while , do while, начинаются чудеса, причем только на железе!!!!

Сообщение отредактировал antoxa1 - Nov 24 2006, 15:41
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SergeyBorshch
сообщение Nov 27 2006, 13:38
Сообщение #2


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

Группа: Участник
Сообщений: 100
Регистрация: 28-09-05
Из: Чернигов, Украина
Пользователь №: 9 053



Смотря какой уровень оптимизации кода поставить. Я лично всегда ставлю Low - и все работает нормально. Пробывал ставить Medium - начинают проявлятся глюки, но терпимо. Ну а про High - вообще сплошные глюки.
Я думаю, что лучше пусть больше памяти проект занимает, нежели будет работать с глюками.
Go to the top of the page
 
+Quote Post
antoxa1
сообщение Nov 27 2006, 15:37
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 6-04-06
Пользователь №: 15 889



Цитата(SergeyBorshch @ Nov 27 2006, 13:38) *
Смотря какой уровень оптимизации кода поставить. Я лично всегда ставлю Low - и все работает нормально. Пробывал ставить Medium - начинают проявлятся глюки, но терпимо. Ну а про High - вообще сплошные глюки.
Я думаю, что лучше пусть больше памяти проект занимает, нежели будет работать с глюками.

Во-первых, мой проект критичен к размеру памяти программ; во-вторых, правильно написанная программа должна правильно работать независимо от уровня выставляемой оптимизации

еще одно дополнение: параметры, передаваемые в вышеупомянутую функцию, не модифицируются в прерываниях. Вот код функции:
void PrintCharA ( int x, int y,char cod,int CS)
{
char dx , bitx, cod_dx, cod_dx1, byte_dx_pred, byte_dx, byte_dx1, byte_dx1_pred;
int cod_dxt,i,temp ;
bitx=0; dx=0;

bitx=x%8;//áèòû
dx=x/8;//êîîðäèíàòà x äëÿ çàïèñè â ðåãèñòð èíäèêàòîðà
for(i=0;i<=7;i++)
{
byte_dx_pred=byte_dx1_pred=0;
SetPos(dx,y+i,CS);
DataRD(CS);
byte_dx_pred=DataRD(CS);
SetPos(dx+1,y+i,CS);
DataRD(CS);
byte_dx1_pred=DataRD(CS);

if ((cod<0xE0)&(cod>0x29))
{
temp=Digit[cod%0x30][i];
}
else
{
temp=Pic[cod%0xE0][i];
};
if(cod==' ') temp=Pic[32][i];

cod_dxt=temp<<bitx-1; //ôîðìèðóåì äâà áàéòà äëÿ çàïèñè â ñîñåäíèå êîîðäèíàòû
cod_dx1=(cod_dxt&0xFF00)>>8;// âûäåëÿåì ïåðâûé áàéò
cod_dx=(cod_dxt&0xFF);//âûäåëÿåì âòîðîé áàéò
byte_dx=byte_dx_pred|cod_dx;//
SetPos(dx,y+i,CS);
DataWR(byte_dx,CS);
byte_dx1=byte_dx1_pred|cod_dx1;//
SetPos(dx+1,y+i,CS);
DataWR(byte_dx1,CS);

вот цикл:
void PrintString(int x,int y,char str[10],int CS)
{
int i;
i=0;
while (str[i]!='\0')
{
PrintCharA(x+6*i+1,y,str[i],CS);
i++;
};

}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- antoxa1   Глюки оптимизации IAR V4.11A   Nov 24 2006, 14:54
- - prottoss   Цитата(antoxa1 @ Nov 24 2006, 18:54) Кто ...   Nov 24 2006, 16:11
- - antoxa1   Вроде напал на путь истины!!! Объяснит...   Nov 24 2006, 17:24
|- - _Bill   Цитата(antoxa1 @ Nov 24 2006, 17:24) Врод...   Nov 24 2006, 17:46
- - IgorKossak   Сталкивался с подобным глюком, но когда обновился ...   Nov 24 2006, 19:03
- - slog   А ты volatile везде где надо поставил? Просто ну о...   Nov 24 2006, 19:35
- - SasaVitebsk   Не отмахивайся сразу а подумай над моим топиком. ...   Nov 25 2006, 19:02
||- - _Bill   Цитата(antoxa1 @ Nov 27 2006, 15:37) вот ...   Nov 27 2006, 16:21
||- - prottoss   Цитата(antoxa1 @ Nov 27 2006, 19:37) Цита...   Nov 27 2006, 16:47
|- - defunct   Цитата(SergeyBorshch @ Nov 27 2006, 13:38...   Dec 9 2006, 19:29
- - IgorKossak   Если в симуляторе работает, а в железе - нет, то п...   Nov 27 2006, 15:48
- - ARIM   Цитата(antoxa1 @ Nov 24 2006, 14:54) Кто ...   Nov 27 2006, 17:41
- - antoxa1   Всем спасибо!!!! Проблема решилась...   Dec 8 2006, 16:19


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

 


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


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