Имеется проект. Очень значительный. Очень много вычислений. Вычисления сложные. В проекте 7 моих задач. При отладке пока можно рассматривать 2 Calc и GUI. Всё написано на чистом Си. Без выделения/ очистки памяти. Установил контроль стека типа 2. Наблюдаю следующую картину. 1. Растёт стек в задаче GUI. Точнее не совсем так. Вижу, что постепенно портится память по направлению к концу стека. Это происходит рывками ч/з большие промежутки времени. Ставлю ловушку по DataBreakPoint и наблюдаю что заполнение происходит в ОС в xPortPendSVHandler. Если после остановки я продолжаю исполнение и контролирую сам указатель стека (R13) в задаче, то он жёстко стоит на месте. Причём намного ниже, чем портится память. Отсюда у меня полная непонятка. Почему происходит рост? В задаче использую sprintf. Пока грешу на это. Возможно что-то я не понимаю по сопроцессору. Может ещё какой-то стек используется и он растёт? Проясните пожалуйста, кто в теме.
Ну и такой вопрос. Кто использовал данную ОС с данным процессором и может подтвердить, что всё устойчиво работает. Как-то попроще будет. По увереннее себя буду чувствовать.
Заранее благодарю.
PS: Похоже всётаки на sprintf. Очень много жрёт. Но предельно. Выше определённой отметки стек не растёт.
|