реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как отключить тип double в IAR ARM C компиляторе?
Unomano
сообщение Sep 10 2009, 08:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-09-05
Из: Минск, Беларусь
Пользователь №: 8 203



Я работаю над проектом с процессором AT91SAM7A3 Atmel ARM7. В нем только 32 Кбайт SRAM памяти. Я использую SRAM для хранения в моей программы во время отладки. Но в итоге я столкнулся с проблемой, что мой проект требует более 32 Кбайт. Поэтому я начал анализировать, что занимает так много памяти в проекте. At91sam7a3_flash.map файл содержит:
.text ro code 0x0010326c 0x338 DblDiv.o [4]
.text ro code 0x00103bc4 0x1f8 DblMul.o [4]
Но я не использую переменные типа double, исключительно float ( sinf(), tanf(), 3.14f ), т.к. мне достаточно точности float для моих целей.
Вопрос: Как отключить тип double в IAR ARM C компиляторе?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 10 2009, 11:10
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Если в расчётах используются только типы float и константы с 'f' на конце (например 0.5f) то IAR будет использовать только float. Так что ищите у себя нетипизированные вещественные константы и добавляйте к ним в конец символ 'f'.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Unomano
сообщение Sep 10 2009, 13:07
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-09-05
Из: Минск, Беларусь
Пользователь №: 8 203



А может есть какая-нибудь директива компилятору типа disable_double ?
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 10 2009, 13:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Unomano @ Sep 10 2009, 14:38) *
Но я не использую переменные типа double, исключительно float ( sinf(), tanf(), 3.14f ), т.к. мне достаточно точности float для моих целей.
При вычислениях в плавучке промежуточный результат всегда в double вычисляется, а потом к float приводится, если это необходимо. Вроде так.
Go to the top of the page
 
+Quote Post
_pv
сообщение Sep 10 2009, 13:40
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Unomano @ Sep 10 2009, 14:38) *
Вопрос: Как отключить тип double в IAR ARM C компиляторе?

Про арм точно сказать не могу, но для авр/мсп в свойствах проекта вроде была опция "size of type <double>": 32 bit / 64 bit.
Go to the top of the page
 
+Quote Post
Unomano
сообщение Sep 10 2009, 13:46
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-09-05
Из: Минск, Беларусь
Пользователь №: 8 203



Цитата(_pv @ Sep 10 2009, 12:40) *
Про арм точно сказать не могу, но для авр/мсп в свойствах проекта вроде была опция "size of type <double>": 32 bit / 64 bit.

Нет, такого нету.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 10 2009, 14:09
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Unomano @ Sep 10 2009, 10:38) *
Я использую SRAM для хранения в моей программы во время отладки.

Не маяться ерундой и не заниматься отладкой в RAM. Нежели "2+2=" отлаживать есть необходимость smile.gif, так это на худой конец в PC отлаживается, как в прочем и многое другое. Ну у а уж остальное во Flash, тем более размеры программы совсем не велики и отлаживать особо нечего.
Цитата
Вопрос: Как отключить тип double в IAR ARM C компиляторе?

Как уже писал GetSmart просто не использовать. Это официальная рекомендация производителя компилятора и она работает.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Unomano
сообщение Sep 10 2009, 14:31
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-09-05
Из: Минск, Беларусь
Пользователь №: 8 203



Всем спасибо, вроде бы все дробные числа промаркировал f.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01336 секунд с 7
ELECTRONIX ©2004-2016