SALKA 0 30 мая, 2011 Опубликовано 30 мая, 2011 · Жалоба делаю устройство на базе BF525c Планирую реализовать составное USB устройство со стандартными драйверами (HID, AUDIO, MASS STORAGE) у меня уже написан код программы. Для работы с USB я добавляю код драйвера USB поставляемого вместе с VDSP. В моей программе я вречную (записывая напосредственно в регистры) настраивыю всю систему блэкфина: частоту работы, SDRAM контроллер, флаги, порты, таймеры, прерывания. Когда я вставляю код драйвера USB в код своей программы, то программа вообще некорректно компилируется, то есть даже тот код, что стоит до вызова процедуры инициализации USB не исполняется! код портится при использовании оператора adi_dev_Open #include <services/services.h> #include <drivers/adi_dev.h> #include <drivers/usb/usb_core/adi_usb_objects.h> #include <drivers/usb/usb_core/adi_usb_core.h> #include <drivers/usb/usb_core/adi_usb_ids.h> #include <drivers/usb/usb_core/adi_usb_logevent.h> #include <drivers/usb/class/peripheral/mass_storage/adi_usb_msd_class.h> #include <drivers/usb/controller/otg/adi/hdrc/adi_usb_hdrc.h> #define ADI_SSL_DMA_NUM_CHANNELS (4) // number of DMA channels #define ADI_SSL_DEV_NUM_DEVICES (4) // number of device drivers static void USB_ClientCallback ( void *AppHandle, unsigned long Event, void *pArg ){ } void usb_Init ( void ) { unsigned char DMAServiceData [ADI_DMA_BASE_MEMORY + (ADI_DMA_CHANNEL_MEMORY * ADI_SSL_DMA_NUM_CHANNELS)] ; unsigned char DevMgrData [ADI_DEV_BASE_MEMORY + (ADI_DEV_DEVICE_MEMORY * ADI_SSL_DEV_NUM_DEVICES)] ; ADI_DMA_MANAGER_HANDLE adi_dma_ManagerHandle ; ADI_DEV_MANAGER_HANDLE adi_dev_ManagerHandle ; ADI_DEV_DEVICE_HANDLE PeripheralDevHandle ; unsigned long Result ; adi_usb_CoreInit ( (void*)&Result ) ; // Initialize USB Core ADI_PWR_COMMAND_PAIR ezkit_power[] = { { ADI_PWR_CMD_SET_PROC_VARIANT,(void*)ADI_PWR_PROC_BF525SBBC1600 }, { ADI_PWR_CMD_SET_PACKAGE, (void*)ADI_PWR_PACKAGE_MBGA }, { ADI_PWR_CMD_SET_VDDEXT, (void*)ADI_PWR_VDDEXT_330 }, { ADI_PWR_CMD_SET_CLKIN, (void*)24 }, { ADI_PWR_CMD_END, 0 } } ; adi_pwr_Init(ezkit_power) ; adi_dma_Init ( DMAServiceData, sizeof(DMAServiceData), &Result, &adi_dma_ManagerHandle, NULL ) ; adi_dev_Init ( DevMgrData, sizeof(DevMgrData), &Result, &adi_dev_ManagerHandle, NULL ) ; // Open the USB Controller driver adi_dev_Open ( adi_dev_ManagerHandle, /* DevMgr handle */ &ADI_USBDRC_Entrypoint, /* pdd entry point */ 0, /* device instance */ (void*)1, /* client handle callback identifier */ &PeripheralDevHandle, /* device handle */ ADI_DEV_DIRECTION_BIDIRECTIONAL, /* data direction for this device */ NULL, /* handle to DmaMgr for this device */ NULL, /* handle to deferred callback service */ USB_ClientCallback); /* callback function */ } Данный код у меня не работает!!! Что может быть??? И еще, я не понимаю механизм настройки чатоты контроллера USB. Исходя из чего там устанавливается нужная частота? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться