|
|
  |
IAR C проблема с функциями SIN, COS, При их использовании программа дурит |
|
|
|
Jun 18 2014, 08:18
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185

|
Здравствуйте! Проблема была замечена на версии IAR 2.28 подтвердилась на версии 6.40. Когда в программе используются функции вычисления sin, cos, то, что было написано и отлажено давным давно, дурит самым нелепым образом. После заремлевания sin, cos дури, нет. В настройках проекта стек возврата, дата стек, размер кучи, увеличены раза в 2..4, относительно величин по умолчанию. Других соображений, что вышеупомянутые функции затирают что-то лишнее, у меня нет. Что ещё есть смысл изменить в настройках? Какие соображения на этот счёт? Спасибо!
|
|
|
|
|
Jun 18 2014, 08:35
|

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

|
Цитата(Д_М @ Jun 18 2014, 11:18)  В настройках проекта стек возврата, дата стек, размер кучи, увеличены раза в 2..4, относительно величин по умолчанию. Хм. А почему не в 3...5 раз? Стеку надо давать столько, сколько требует функция. Сколько требуют sin и cos понятия не имею. Куча им не нужна. Для начала увеличьте стек данных насколько возможно. Но вполне возможно, что им не хватит и всей оставшейся у вас памяти. На вашем месте я бы создал отдельный проект из одного вызова такой функции, перед вызовом заполнил все ОЗУ каким-то кодом вроде 0xAB, прогнал его в симуляторе и после возврата из функции посмотрел, как далеко от начала стека код 0xAB затерт.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jun 18 2014, 11:40
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(Д_М @ Jun 18 2014, 12:18)  Какие соображения на этот счёт? было подобное в MSVC, дурил modf, целую часть возвращал нормально, а фрактальную нет. Причина оказалась банальна - не был в соответсвующем С-файле включен хедер <math.h> хотя в дизасме вроде переходило куда надо.
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
Jun 20 2014, 07:02
|
Частый гость
 
Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315

|
Цитата(jcxz @ Jun 20 2014, 09:47)  В случае многозадачной ОС и/или наличия ISR-ов это не гарантирует результат. То что происходит в реалтайм и в пошаговом времени - разные вещи. Ну если человек уверен, что виноват код функций, а не задержки при их вызове, такая проверка - самое то.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|