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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> проблема USB cy7c68013a, инициализация устройства
леха_настойчивый
сообщение Sep 10 2007, 15:46
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 27-04-07
Пользователь №: 27 348



Здавствуйте люди!

Подскажите кто может, в чем проблема при выделении пямяти под структуру СyUSBdevice
уже месяц бьюсь, не пойму в чем дело. СТУДИЯ видит устройство (су7с68013а)
данные передаються и принимаються, я подключил библиотеку СYUsb.Lib , СYUsb.h
к проекту, компилируеться нормально, но на строке
s_usb_device = new CCyUSBDevice();------ сообщение
"Access vilation at address 004048e1 in module "Project1" write address 0017f62c"
Заранее благодарен, Алексей.

Код

c++ Bulder

void* usb_init(void)
{
    int i = 2;
CCyUSBDevice*s_usb_device = new CCyUSBDevice();

    // open my device
    if (s_usb_device->DeviceCount()) {
        // search for all connected devices, and add the one that has the right name
        for (i = 0; i < s_usb_device->DeviceCount(); i++) {
            s_usb_device->Open(i);
            if(strcmp (USB_DEVICE_NAME, s_usb_device->DeviceName) == 0)
                break;
            s_usb_device->Close();
        }
    } else {
        // Cannot find my device
        return NULL;
    }

    if (!s_usb_device->IsOpen()) {
        // Could not open my device
        return NULL;
    }

    delete s_usb_device;

  }
Go to the top of the page
 
+Quote Post
Warlord
сообщение Sep 11 2007, 06:18
Сообщение #2


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

Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874



Звезду убери
Код
CCyUSBDevice s_usb_device = new CCyUSBDevice();
Go to the top of the page
 
+Quote Post
леха_настойчивый
сообщение Sep 11 2007, 15:00
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 27-04-07
Пользователь №: 27 348



Цитата(Warlord @ Sep 11 2007, 09:18) *
Звезду убери
Код
CCyUSBDevice s_usb_device = new CCyUSBDevice();



Не помогает, все также, вот только при пошаговом исполнении, если просмотреть debug inspect переменную s_usb_device, до исполнения строки
Код

CCyUSBDevice s_usb_device = new CCyUSBDevice()


поля настроек стали заполнеными, а раньше были не определены, может я что не определил
перед выделением памяти под CYUsbdevice???
Go to the top of the page
 
+Quote Post
Warlord
сообщение Sep 12 2007, 07:59
Сообщение #4


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

Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874



Да, со звездой я погорячился. Попробуй вынести переменную в глобальные. А потом вызвать конструктор.
Код
CCyUSBDevice *USBDevice;

main()
{
...
   USBDevice = new CCyUSBDevice();
....
}
Go to the top of the page
 
+Quote Post
леха_настойчивый
сообщение Sep 12 2007, 10:01
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 27-04-07
Пользователь №: 27 348



Цитата(Warlord @ Sep 12 2007, 10:59) *
Да, со звездой я погорячился. Попробуй вынести переменную в глобальные. А потом вызвать конструктор.
Код
CCyUSBDevice *USBDevice;

main()
{
...
   USBDevice = new CCyUSBDevice();
....
}


Вот пример того что я пытался запустить
Код

#include <vcl.h>
#pragma hdrstop
#include "CyAPI.h"

//---------------------------------------------------------------------------

#pragma argsused
CCyUSBDevice *USBDevice;

int main(int argc, char* argv[])
{

USBDevice = new CCyUSBDevice();

int devices = USBDevice->DeviceCount();
int vID, pID;
int d = 0;
do
{
USBDevice->Open(d); // Open automatically calls Close() if necessary
vID = USBDevice->VendorID;
pID = USBDevice->ProductID;
d++;
} while ((d < devices ) && (vID != 0x04b4) && (pID != 0x8613));

return 0;
}


пример взят из документации по CYUSB
На строке USBDevice = new CCyUSBDevice(); машина начинает сильно тормозить, но сообщений никаких нет?
раньше я использовал с FT245 -- ot FTDI а сейчас понадобился поток 8 Мбайт/сек

Мне кажеться что чего-то не хватает для связи с драйвером CYUSB
Я пробовал найти устройство через
QueryDosDevice(NULL, path, PATH_SIZE);
Устройсво есть но почему то 2 шт, с разными GUID???

А для чего эта функция "DeviceIoControl("???
Спасибо за ответ!!
Go to the top of the page
 
+Quote Post
Warlord
сообщение Sep 12 2007, 10:57
Сообщение #6


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

Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874



Цитата(леха_настойчивый @ Sep 12 2007, 14:01) *
На строке USBDevice = new CCyUSBDevice(); машина начинает сильно тормозить, но сообщений никаких нет?

Странно, а строка в конечном итоге проходит или нет??

Цитата(леха_настойчивый @ Sep 12 2007, 14:01) *
Мне кажеться что чего-то не хватает для связи с драйвером CYUSB
Я пробовал найти устройство через
QueryDosDevice(NULL, path, PATH_SIZE);
Устройсво есть но почему то 2 шт, с разными GUID???

Ты глянь в системе, железо нормально встало?? драйвер подключился?? Драйвер CyUSB.sys??
Ты GUID часом не менял в инф файле при установке драйвера??
по QueryDosDevice нчего не скажу, не пользовался.

Цитата(леха_настойчивый @ Sep 12 2007, 14:01) *
А для чего эта функция "DeviceIoControl("???

Посылает пакет драйверу устройства.
Go to the top of the page
 
+Quote Post
леха_настойчивый
сообщение Sep 12 2007, 11:23
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 27-04-07
Пользователь №: 27 348



Цитата(Warlord @ Sep 12 2007, 13:57) *
Странно, а строка в конечном итоге проходит или нет??
Ты глянь в системе, железо нормально встало?? драйвер подключился?? Драйвер CyUSB.sys??
Ты GUID часом не менял в инф файле при установке драйвера??
по QueryDosDevice нчего не скажу, не пользовался.
Посылает пакет драйверу устройства.


Нет срока не проходит. Builder застрявает на ней, я подождал минутку, потом сбросил.
Нет, GUID я не менял, драйвер СyUSB.sus стал нормально.
USB studio купреса видит устойство, я взял за основу HEX из какогото примера
у немцев ADC2USB там был HEX и прошивка для ПЗУ, все залилось, устройство появляеться сразу как
CYPRESS2USB vid и pid 04в4 и 8613--- две точки Bulk -64 и isohronous 1020
все передаеться принимаеться (через USB студию cypress)
есть еще одна особенность :
при подключении к материнским платам ASrosk c чипом VIA 6202 контроллер сy7c68013 вообще не видиться системой, только если поставить на D- сопротивление 1,5 ком, тогда все видиться, и работает. А ВОТ к плате ASUS отлично, все как по книжке.
Может в кофигурации самого контроллера чото не так??
Go to the top of the page
 
+Quote Post
Warlord
сообщение Sep 12 2007, 12:19
Сообщение #8


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

Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874



Цитата(леха_настойчивый @ Sep 12 2007, 15:23) *
Может в кофигурации самого контроллера чото не так??

Это вряд ли, если, говоришь USB studio работает, то и твоя прога тоже будет. Ты войди в режим отладки(в самом билдере(CPU window) или лучше в стороннем) глянь, на какой функции конструктора класса прога начинает глючить. Глянь в отладчике как исполняется конструктор в USB studio. Все д.б. один в один. Сразу найдешь ошибку.
Go to the top of the page
 
+Quote Post
леха_настойчивый
сообщение Sep 12 2007, 12:40
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 27-04-07
Пользователь №: 27 348



Цитата(Warlord @ Sep 12 2007, 15:19) *
Это вряд ли, если, говоришь USB studio работает, то и твоя прога тоже будет. Ты войди в режим отладки(в самом билдере(CPU window) или лучше в стороннем) глянь, на какой функции конструктора класса прога начинает глючить. Глянь в отладчике как исполняется конструктор в USB studio. Все д.б. один в один. Сразу найдешь ошибку.

Да это идея, спасибо большое за совет, сейчас буду пробовать!!!
Go to the top of the page
 
+Quote Post
леха_настойчивый
сообщение Sep 13 2007, 06:18
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 27-04-07
Пользователь №: 27 348



Цитата(леха_настойчивый @ Sep 12 2007, 15:40) *
Да это идея, спасибо большое за совет, сейчас буду пробовать!!!


Привет всем!
Попробовал отладчиком, так вот мой проект очень похоже обращаеться к какой-то области памяти
и система выдает ошибку. До конструктора помоему дело и не доходит ???
Очень похоже на ошибку, корая возникает при нарушении границ массивов(я имею ввиду сообщение WINDOWS)
вот конфигурация USB и участок CPU viem ----переменной USBDevice.
Код
это конфигурация USB 1.1
(fullspeed)
через USBviem

Endpoint Descriptor:
bEndpointAddress:     0x82
Transfer Type: Isochronous
wMaxPacketSize:     0x03FC (1020)
bInterval:            0x01

Configuration Descriptor:
wTotalLength:       0x0029
bNumInterfaces:       0x01
bConfigurationValue:  0x01
iConfiguration:       0x03
0x0407: "Busversorgt, kein Aufwecken"
bmAttributes:         0x80 (Bus Powered )
MaxPower:             0x4B (150 Ma)

Interface Descriptor:
bInterfaceNumber:     0x00
bAlternateSetting:    0x00
bNumEndpoints:        0x01
bInterfaceClass:      0xFF
bInterfaceSubClass:   0xFF
bInterfaceProtocol:   0xFF
iInterface:           0x04
0x0407: "Interface ohne Bandbreite, nur Bulk"

Endpoint Descriptor:
bEndpointAddress:     0x82
Transfer Type:        Bulk
wMaxPacketSize:     0x0040 (64)
bInterval:            0x00

Interface Descriptor:
bInterfaceNumber:     0x00
bAlternateSetting:    0x01
bNumEndpoints:        0x01
bInterfaceClass:      0xFF
bInterfaceSubClass:   0xFF
bInterfaceProtocol:   0xFF
iInterface:           0x05

Endpoint Descriptor:
bEndpointAddress:     0x82
Transfer Type: Isochronous
wMaxPacketSize:     0x03FC (1020)
bInterval:            0x01

=====================================================================
Вот окно CPU viem

naemec_cosole.cpp.15: USBDevice = new CCyUSBDevice();///--break point
0040139C 689C090000       push $0000099c
004013A1 E866280000       call $00403c0c
004013A6 59               pop ecx
004013A7 8945FC           mov [ebp-$04],eax
004013AA 85C0             test eax,eax
004013AC 7438             jz $004013e6
004013AE 66C745E81800     mov word ptr [ebp-$18],$0018
004013B4 6A01             push $01
004013B6 FF35D0404000     push dword ptr [$004040d0]
004013BC FF35CC404000     push dword ptr [$004040cc]
004013C2 FF35C8404000     push dword ptr [$004040c8]
004013C8 FF35C4404000     push dword ptr [$004040c4]
004013CE 6A00             push $00
004013D0 FF75FC           push dword ptr [ebp-$04]
004013D3 E86C030000       call $00401744          /// вот на этой строке происходит сбой
это значение  00401744 было в сообщении.


004013D8 83C41C           add esp,$1c



Не знаю, может что-то в конфигурации USB в самой системе, кстати пробовал
и WIn2000, WINXP на разных машинах???
Go to the top of the page
 
+Quote Post
Warlord
сообщение Sep 13 2007, 09:01
Сообщение #11


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

Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874



Собери это проект, отключив на закладке Linker галку Use dynamic RTL и выложи здесь exeшник. У меня щас есть плата с сайпресом, попробую у себя твой exeшник. А вообще надо идти по коду глубже и смотреть какая именно простейшая команда вызвала Exception.
Go to the top of the page
 
+Quote Post
леха_настойчивый
сообщение Sep 13 2007, 10:32
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 27-04-07
Пользователь №: 27 348



Цитата(Warlord @ Sep 13 2007, 12:01) *
Собери это проект, отключив на закладке Linker галку Use dynamic RTL и выложи здесь exeшник. У меня щас есть плата с сайпресом, попробую у себя твой exeшник. А вообще надо идти по коду глубже и смотреть какая именно простейшая команда вызвала Exception.


вот архив, в нем
ADC2USB там HEX и т.д.
и проэкт С++ Builder
Прикрепленный файл  Proj.rar ( 406.97 килобайт ) Кол-во скачиваний: 247
Go to the top of the page
 
+Quote Post
Warlord
сообщение Sep 13 2007, 12:07
Сообщение #13


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

Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874



У тебя какой Билдер?? Явно не шестой. EXe-шник не запускается - при сборке галку не убрал. Проект Билдера пустой =\ Сдается мне, что библиотека не подходит под твою версию Билдера.
Go to the top of the page
 
+Quote Post
-Al-
сообщение Sep 13 2007, 13:02
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894



С этим Cypress API есть довольно неприятная хреновина (или фича?), библиотека работает ТОЛЬКО при компиляции с Data Alignment = 8 (Quad Word), в противном случае вываливается в точности как у Вас. Чтобы не трогать проект, необходимо в CyAPI.h добавить тройку строчек с #pragma pack:
Код
//______________________________________________________________________________
//
// Copyright (c) Cypress Semiconductor, 2003
// All rights reserved.
//
//______________________________________________________________________________

#ifndef CyUSBH
#define CyUSBH

#pragma pack(push)
#pragma pack(8)

.....

#pragma pack(pop)

#endif

У меня после этого все завелось и работает без проблем независимо от data alignment smile.gif
Go to the top of the page
 
+Quote Post
леха_настойчивый
сообщение Sep 13 2007, 13:46
Сообщение #15


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 27-04-07
Пользователь №: 27 348



Цитата(Warlord @ Sep 13 2007, 15:07) *
У тебя какой Билдер?? Явно не шестой. EXe-шник не запускается - при сборке галку не убрал. Проект Билдера пустой =\ Сдается мне, что библиотека не подходит под твою версию Билдера.


У меня не шестой, у меня Borland Developer Studio

Borland® C++Builder® Preview for Microsoft® Windows™ Version 10.0.2151.25345 Copyright © 2005 Borland® Software Corporation. All Rights Reserved.

НЕУЖЕЛИ ИЗ-ЗА ЭТОГО ????????, у меня есть шестой, может поробовать, мне казалось этот лучше?
тут все борландовские примочки есть?
я тоже заметил что если взять библиотеку VC++ и подсунуть ему
то реакция без изменений.

ПРОШУ ПРОЩЕНИЯ я не заметил что путь срр изменен.
Вот опять архив, галка убрана.



Цитата(Warlord @ Sep 13 2007, 15:07) *
У тебя какой Билдер?? Явно не шестой. EXe-шник не запускается - при сборке галку не убрал. Проект Билдера пустой =\ Сдается мне, что библиотека не подходит под твою версию Билдера.


У меня не шестой, у меня Borland Developer Studio

Borland® C++Builder® Preview for Microsoft® Windows™ Version 10.0.2151.25345 Copyright © 2005 Borland® Software Corporation. All Rights Reserved.

НЕУЖЕЛИ ИЗ-ЗА ЭТОГО ????????, у меня есть шестой, может поробовать, мне казалось этот лучше?
тут все борландовские примочки есть?
я тоже заметил что если взять библиотеку VC++ и подсунуть ему
то реакция без изменений.

ПРОШУ ПРОЩЕНИЯ я не заметил что путь срр изменен.
Вот опять архив, галка убрана.

wub.gif

Цитата(-Al- @ Sep 13 2007, 16:02) *
С этим Cypress API есть довольно неприятная хреновина (или фича?), библиотека работает ТОЛЬКО при компиляции с Data Alignment = 8 (Quad Word), в противном случае вываливается в точности как у Вас. Чтобы не трогать проект, необходимо в CyAPI.h добавить тройку строчек с #pragma pack:
Код
//______________________________________________________________________________
//
// Copyright (c) Cypress Semiconductor, 2003
// All rights reserved.
//
//______________________________________________________________________________

#ifndef CyUSBH
#define CyUSBH

#pragma pack(push)
#pragma pack(8)

.....

#pragma pack(pop)

#endif

У меня после этого все завелось и работает без проблем независимо от data alignment smile.gif



я посмотрел в настройках у меня стоит Data Alignment = 8 (Quad Word) ???
Прикрепленные файлы
Прикрепленный файл  nemec_console.rar ( 366.2 килобайт ) Кол-во скачиваний: 103
 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 14th June 2024 - 15:45
Рейтинг@Mail.ru


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