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

 
 
> WinAVR 20071221 Warning
swisst
сообщение Dec 31 2008, 10:07
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 16-02-07
Из: Харьков
Пользователь №: 25 425



Доброго дня !

Есть 3 вопроса, на которые я самостоятельно не смог найти ответ - решил обратится за помощью:

1. Ругается варнингом:
Код
In function 'Load_Default_Parametrs' passing argument 1 of 'eeprom_write_block' discards qualifiers from pointer target type

на эту строку :
Код
eeprom_write_block((void*)&Parametrs_Ram, (void*) 0x01, sizeof(Parametrs_Ram));


что касается первого аргумента Parametrs_Ram:

Код
volatile Params_Struct Parametrs_Ram;       //объявление

typedef struct{                                           //переопределение типа

    unsigned char Ind_Period;
    unsigned char Querry_Tout;
    unsigned char RS_Address;
    unsigned char RS_Speed;
    unsigned int CRC;
}Params_Struct;


как только убираю модификатор volatile из объявления Parametrs_Ram - варнинги уходят, но мне нужна Parametrs_Ram именно как volatile.
Явное приведение в функции eeprom_write_block к какому-либо типу ни к чему не приводит.

Боротся с варнингами или пустить на самотек ? Если бороться, то что я делаю не так ?

2. Вопрос по inline-функции. Как правильно объявить, определить, вызвать ?
Делаю так:

Прототип: void func ();
Определение: inline void func (){...код...}
Вызов: void func ();

Ругается так:
warning: C99 inline functions are not supported; using GNU89 to disable this warning use -fgnu89-inline or the gnu_inline function attribute

Добавление в опциях проекта -fgnu89-inline варнинг не отключило.

3. То, что меня убило наповал... Есть проект, есть 2 машины на которых установлены одинаковые версии AVR Studio и WinAVR20071221. На десктопе все ок. В процессе разработки проекта ничего сверхъестественного не было. Копирую проект на ноут, компилирую - размер кода +700 байт, +256 байт озу. Вот эта магическая строчка из map-файла:
Код
.data          0x00800060      0x100 c:/winavr-20071221/bin/../lib/gcc/avr/4.2.2/avr5\libgcc.a(_clz.o)
                 0x00800060                __clz_tab


с __clz_tab дело уже имел (тему старую не смого найти, к сожалению) - тогда подключал математическую библиотеку libm.a и как рукой снимало. На этот раз - на ноуте не помогает. Настройки проекта естественно не меняю...библиотеки подключаю те же, что и на десктопе...
Также осознаю, что звучит это как-то глупо, но я в ступоре...
Устанавливал последнюю версию WinAVR20081205 - проблем с __clz_tab нет. Объём кода при компиляции отличается на 6 байт (на ноуте больше)...
Go to the top of the page
 
+Quote Post



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

 


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


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