Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: stm32 + freertos. Странные значения переменных в отладчике
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Vladimir Prokofiev
Iar 6.21 используется. При отладке STM32 + freertos иногда внутри функции все значения переменных заведомо неправильные. Оптимизация выключена вся.

Выглядит это так, реальные значения привожу:

В одном из модулей описан глобальный массив track, его location: 0x20004438
Внутри этого модуля описана функция получения указателя на одну из точек трека
Код
TGPSPoint * TASK_GetCurPoint(){
  return &(track[0]);
}


В другом модуле вызываем эту функцию:
Код
{
  TGPSPoint *curPoint;
  
  curPoint = TASK_GetCurPoint(); //точка остановки 1
  следующая строка;  // точка остановки 2
...
}


На первой точке видим
curPoint значение 0xE9CDFD07
Что разумно, она может быть любая
На второй точке значение не меняется, хотя я ожидал увидеть там 0x20004438, ну или по крайней мере другое значение.

Внутри этой функции Watch показывает явную чушь по всем переменным, но после выхода результат верный. Вроде как без freertos таких проблем небыло, или я не замечал. В чем тут подвох и как исправить? Очень напрягает невозможность увидеть значение...
Sagittarius
как вариант смотреть в окне local - все локальные переменные. там вроде все правильно отображалось при такой ерунде в окне wathc.
kan35
на самом деле все просто - минимизируйте оптимизацию кода компилятором. Будет работать медленнее, зато в переменных будет то, что ожидаете.
Vladimir Prokofiev
Цитата(kan35 @ Mar 2 2012, 09:15) *
на самом деле все просто - минимизируйте оптимизацию кода компилятором. Будет работать медленнее, зато в переменных будет то, что ожидаете.

Вся оптимизация выключена, а в переменных совсем не то sm.gif
Посмотрел locals там все то же самое как и в watch, неправильное т.е.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.