ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
48947 Топик полностью
yuri_t (20.01.2006 13:29, просмотров: 1) ответил Romario на ucos-2 + ADS1.2 (-O2 -Otime) столкнулся с проблемой
Да,такое явление есть, и не только с ADS... Например есть ф-ция какой-то Task
void task_func(void * par)
{
   int var1;
   for(;;)
   {
     //do_something
   }
}
<\pre>

Так как каждая Task имеет собственный stack,
то var1 фактически является static/global,и
использование var1 происходит с учетом этого. 

 При высоких ур-нях оптимизации компиляторы
ADS,RVDT,IAR,не зная о глобальной сути var1,
оптимизируют ее как локальную, причем не всегда,
а в зависимости от конкретного кода...
 Единственное лекарство здесь (как Вы справедливо
заметили) - объявить var1 как volatile, а иногда и
static volatile...