Цитата(AHTOXA @ Jan 23 2015, 13:11)

Оптимизацию включили?
Настройки оптимизации из примеров по scmRTOS:
Medium,
Common subexpression elimination
Code motion
Static clustering
p.s.
хм.......
при указании
High/Balanced собирается но не работает. похоже где то во внутренностях ОС виснем (
p.p.s.
уточнение по "High/Balanced собирается но не работает. похоже где то во внутренностях ОС виснем ("
по шагам в отладчике - работает.
p.p.p.s.
"опытным" путем "метод нахождения крайнего" выяснил что на действия линкера влияет опция "Function inlining"
будем копать в этом направлении )
окончательный p.s^4 - все решено/исправленновывод: только не бейте - сам виноват )
как было написано для проверки, естественно в спешке лишь бы посмотреть
Код
typedef Pin<'C', 6, 'H'> PC6;
typedef Pin<'C', 7, 'H'> PC7;
PC6 ledGreen;
PC7 ledYellow;
template<>OS_PROCESS void TLed::exec()
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
ledGreen.Mode(OUTPUT);
ledYellow.Mode(OUTPUT);
FOREVER {
ledGreen.On();
ledYellow.On();
sleep(1000);
ledGreen.Off();
ledYellow.Off();
}
}
вроде как все хорошо. но. они моргали но визуально я это не видел т.к. не было задержки после выключения )))
прошляпил не спорю )))
по поводу файла pin_stm32F1xx.h
в нем есть вот такое
Код
#ifndef INLINE
#define INLINE __attribute__((__always_inline__)) inline
#endif
этот INLINE используется дальше в описаниях. но, насколько я понимаю, это GCC описание. для IAR изменил как
Код
#ifndef INLINE
#define INLINE #pragma inline = forced
#endif
результат - компиляция на всех уровнях оптимизации без ошибок но линковка без ошибок только на уровне High
далее было добавлено:
- в перекрытии оператора "->" в струтуре GPIOx добавлено INLINE
- в перекрытии всех операторов в структуре CRx добавлено INLINE
все компилируется, линкуется, работает на всех уровнях оптимизации.
p.s.end.
2AHTOXA: может пргодится )
всем спасибо за участие )