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

 
 
> iar v4.11 - disassembly непонятно работает
Юдин Алексей
сообщение Feb 26 2009, 10:57
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 16-10-06
Пользователь №: 21 358



Доброго времени суток. Проблема в следующем. Дизассемблер по-разному дизассемблирует один и тот же код в программе. Вот пример:

случай первый:
CODE

WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
__low_level_init:
00C3C8 40B2 5A80 0120 mov.w #0x5A80,&WDTCTL

тут все понятно - все верно

случай второй:
CODE

WDTCTL = WDTPW + WDTHOLD;
Flash_ww:
00AB76 403E 5A80 mov.w #0x5A80,R14
00AB7A 4E4F mov.b R14,R15
00AB7C 108E swpb R14
00AB7E F03E 00FF and.w #0xFF,R14
00AB82 4FC2 0120 mov.b R15,&WDTCTL
00AB86 4EC2 0121 mov.b R14,&0x121

а вот здесь не понятно почему так, а не как в 1ом случае. Соответственно здесь меня ресетит (согласно коду в дизассемблере так и должно происходить).

В чем проблема, подскажите?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Юдин Алексей
сообщение Feb 26 2009, 12:12
Сообщение #2





Группа: Участник
Сообщений: 8
Регистрация: 16-10-06
Пользователь №: 21 358



ну по умолчанию оптимизация стояла low. С ней уже много у меня косяков было, поэтому и поставил none. Версия 4.11b - не самая свежая. Вроде 4.20 - последняя. А про оптимизацию все по-разному советуют, почему отключать не надо?

Цитата
Попробуйте *(volatile unsigned int *)&WDTCTL = WDTPW+WDTHOLD;


Спасибо, помогло. А что ж IARу так не нравилось?
Go to the top of the page
 
+Quote Post



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

 


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


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