Ошибка при компиляции в IAR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
P@S@f
Открыл глаза
Сообщения: 44
Зарегистрирован: Чт янв 13, 2011 18:52:17

Ошибка при компиляции в IAR

Сообщение P@S@f »

Решил немного обновить прошивку Сергея Рюмика для переходника Sega джойстика на USB и скомпилить её под IAR.
Оригинальная прошивка с исходными текстами здесь, в архиве: ftp://ftp.radio.ru/pub/2007/01/usbjoy/prog.zip
Взял новый драйвер USB от objective development: http://www.obdev.at/products/vusb/download.html
Отредактировал как надо usbconfig-prototype.h в соответствии со старым, переименовал в usbconfig.h, заменил все остальные исходники драйвера новыми, в т.ч. скопировал asmcommon.inc и usbdrvasm12.inc.
Создал новый проект в IAR, добавил все файлы.
В свойствах проекта выбрал контроллер ATmega8a, на вкладке System отметил галочку "Enable bit defintions in I/O-include files".
В common.h выкинул io.h, заменил на iom8a.h, выкинул pgmspace.h, пофиксил ошибку с __flash (было объявлено как const chat, требовало char), выкинул interrupt.h, новых ошибок после этого не заметил.

Остались ошибки в драйвере USB.
В строке, в которой присутствует переменная USBIN в usbdrv.c:
Error[Pe020]: identifier "PINPORTD" is undefined
в

Код: Выделить всё

uchar usbLineStatus = USBIN & USBMASK;
А также аналогичные в usbdrvasm12.inc:
Error[50]: Undefined symbol:'PINPORTD'
Error[50]: Undefined symbol:'DDRPORTD'
Error[50]: Undefined symbol:'PORTPORTD'
в строках

Код: Выделить всё

sbis	USBIN, USBMINUS

Код: Выделить всё

in	  x2, USBDDR;[-12] 12 cycles until SOP

Код: Выделить всё

sbi	 USBOUT, USBMINUS;[-10] prepare idle state; D+ and D- must have been 0 (no pullups)
соответственно.

Также, остались варнинги:
Warning[Pe068]: integer conversion resulted in a change of sign C:\sega-update\usbdrv.c 318
Warning[Pe068]: integer conversion resulted in a change of sign C:\sega-update\usbdrv.c 320
Warning[Pe068]: integer conversion resulted in a change of sign C:\sega-update\usbdrv.c 329
Warning[Pe068]: integer conversion resulted in a change of sign C:\sega-update\usbdrv.c 331
Warning[Pe068]: integer conversion resulted in a change of sign C:\sega-update\usbdrv.c 333
в строках типа

Код: Выделить всё

GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_DEVICE, usbDescriptorDevice)
Сам GET_DESCRIPTOR объявлен так:

Код: Выделить всё

#define GET_DESCRIPTOR(cfgProp, staticName)         \
    if(cfgProp){                                    \
        if((cfgProp) & USB_PROP_IS_RAM)             \
            flags = 0;                              \
        if((cfgProp) & USB_PROP_IS_DYNAMIC){        \
            len = usbFunctionDescriptor(rq);        \
        }                                           \
         else                                       \
           {                                        \
            len = USB_PROP_LENGTH(cfgProp);         \
            usbMsgPtr = (uchar *)(staticName);      \
           }                                        \
    }                                               \
Не знаю как разобраться с оставшимися ошибками.
Искал по всем исходникам (в т.ч. заголовочным файлам IAR) 'PINPORTD', 'DDRPORTD', 'PORTPORTD' - ничего не нашел.
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Ошибка при компиляции в IAR

Сообщение urry »

Ну у меня сейчас иар а нет проверить, но разве вместо этих телодвижений не нужно просто подключить файл iarcompat.h ? порт под иар ?
Реклама
P@S@f
Открыл глаза
Сообщения: 44
Зарегистрирован: Чт янв 13, 2011 18:52:17

Re: Ошибка при компиляции в IAR

Сообщение P@S@f »

Эти телодвижения я делал по отношению к драйверу самого джойстика, по поводу драйвера usb, там iarcompat.h давно уже перенесен в usbportability.h и он у меня в проекте присутствует (версия драйвера от 15.07.2010)
P@S@f
Открыл глаза
Сообщения: 44
Зарегистрирован: Чт янв 13, 2011 18:52:17

Re: Ошибка при компиляции в IAR

Сообщение P@S@f »

Нашел свою ошибку (по среди ночи, уже в постели лежал, подрочил на чернявскую, и тут меня осенило)
Отредактировал как надо usbconfig-prototype.h
Оказалось, не как надо!
В старом файле usbconfig.h переменная USB_CFG_IOPORT была PORTD, ну я её взял и тупо скопировал, а в новой версии драйвера, PORTD был заменен просто на D.
Всё удачно скомпилилось, осталось проверить работает-ли :wink:
Реклама
Эиком - электронные компоненты и радиодетали
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»