Работа с драйвером от obdev доволно проста и встроить его в проект на Си оказалось довольно просто. Больше возни c usblib от sourceforge (
http://libusb.sourceforge.net ) Минимум комментариев к функциям и корявый хедер(((
Привожу тестовый код для работы с ИАР (файл main.c)
Код
uchar usbFunctionSetup(uchar data[8])
{
TX_LED_OFF();
RX_LED_OFF();
SETUP_LED_ON();
// почему data[1], а не, например, data[0], еще не разобрался, кое какие подозрения есть,
// но пока скромно промолчу дабы не вводить публику в заблуждения
if(data[1] == 0)
{
// здесь может быть код, который должен выполняться только этой функцией
return 0;
}
return 255; // хотим вызвать функции записи/чтения
}
uchar usbFunctionRead(uchar *data, uchar len)
{
TX_LED_OFF();
SETUP_LED_OFF();
RX_LED_ON();
return 0; // ОК
}
uchar usbFunctionWrite(uchar *data, uchar len)
{
RX_LED_OFF();
SETUP_LED_OFF();
TX_LED_ON();
return 1; // ОК
}
void main(void)
{
usbInit();
asm("sei");
do
{
usbPoll();
}
while(1);
Кроме того драйверу надо указать, что будут использоваться функции записи/чтения. Для этого надо в файле usbconfig.h установить макросы USB_CFG_IMPLEMENT_FN_WRITE и USB_CFG_IMPLEMENT_FN_READ в 1
Мне с эти кодом удалось, пока, уложится в 1775 байт, что вполне достаточно для тини2313)))
А это кусок исходника для C++ Borland Builder, чтобы можно было поморгать светодиодами