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

 
 
> Неправильно отрабатывают условия ">" и "<" в IAR-е (микроконтроллер AT91SAM7X256)
Igor_F
сообщение Apr 10 2008, 06:51
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 18-12-07
Пользователь №: 33 392



Подскажите, сталкивался ли кто-нибудь с подобной проблемой: при проверки условий "больше-меньше" (видим это в отладчике) программа явно неправильно проверяет эти условия в for-ах, if-ах и т.п.

Например:

for( uxPriority = 0; uxPriority <configMAX_PRIORITIES; uxPriority++ ) // здесь configMAX_PRIORITIES=255
{
vListInitialise( ( xList * ) &( pxReadyTasksLists[ uxPriority ] ) );
}

В отладчике видим, что uxPriority дествительно =0, но в цикл мы не попадаем.
С подобной проблемой сталкиваемся постоянно в разных частях программы, хотя вся оптимизация выключена.

Если кто-то встречался с данной проблемой, подскажите, как с ней бороться.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Igor_F
сообщение Apr 15 2008, 06:52
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 18-12-07
Пользователь №: 33 392



Листинг выглядит следующим образом:

00002C66 BC01 POP {R0}
00002C68 4700 BX R0
00002C6A 0000 LSL R0, R0, #0
static void prvInitialiseTaskLists( void )
{
Next label is a Thumb label
prvInitialiseTaskLists:
00002C6C B510 PUSH {R4, LR}
for( uxPriority = 0; uxPriority <configMAX_PRIORITIES; uxPriority++ )
00002C6E 2000 MOV R0, #0
00002C70 1C04 MOV R4, R0
for( uxPriority = 0; uxPriority <configMAX_PRIORITIES; uxPriority++ )
00002C72 2CFF CMP R4, #255
00002C74 D207 BCS 0x002C86
vListInitialise( ( xList * ) &( pxReadyTasksLists[ uxPriority ] ) );
00002C76 2014 MOV R0, #20
00002C78 4360 MUL R0, R4
00002C7A 4962 LDR R1, [PC,#0x188] ; [0x2E04] =pxReadyTasksLists (0x2037E8)
00002C7C 1808 ADD R0, R1, R0
00002C7E F7FF ; pre BL/BLX
00002C80 FADB BL vListInitialise ; 0x2238
for( uxPriority = 0; uxPriority <configMAX_PRIORITIES; uxPriority++ )
00002C82 1C64 ADD R4, R4, #1
00002C84 E7F5 B 0x002C72
vListInitialise( ( xList * ) &xDelayedTaskList1 );
00002C86 480C LDR R0, [PC,#0x030] ; [0x2CB8] =xDelayedTaskList1 (0x204BD4)
00002C88 F7FF ; pre BL/BLX
00002C8A FAD6 BL vListInitialise ; 0x2238
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 15 2008, 07:06
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Igor_F @ Apr 15 2008, 09:52) *
Листинг выглядит следующим образом:
А для кого придуманы теги [ code ] и [ /code ]? Зачем сделали кнопку с символом '#' в форме ввода сообщения?
Покажите объявления всех использованых переменных и прототипы функций. Вы хотите, чтобы вам помогли или поиграть в партизана и телепатов?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


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


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