Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2388 USB RAM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Dron_Gus
Вопрос в том, можно ли использовать для работы с OHCI-контроллером (для списков EP, передач и т.д.) память вне "USB RAM". Как я понимаю эта пямять имеет отношение только к USB-device и списку DMA descriptor для него же? Другими словами, OHCI-контроллер имеет доступ ко всему адресному пространству?
zltigo
Цитата(Dron_Gus @ Apr 13 2009, 16:49) *
Как я понимаю эта пямять имеет отношение только к USB-device...

Нет, до нее и MACDMA дотягивается (у меня в нее MAC фреймы складываются, дабы потом GPDMA в интерфейс внешней памяти мог заслать), и для GPDMA она как родная, ну и само собой для USBDMA. Не пробовал, но не вижу причин, дабы USBDMA не работала с основной и внешней памятью, т.е. со всей, кроме как с MAC памятью - там бридж ассиммертичный.
Dron_Gus
Спасибо. Меня больше интересует, нужно ли структуры для OHCI класть в эту память или можно класть их куда угодно? Просто в примере UsbHostLite от NPX есть такая дурацкая конструкция:
Код
    Hcca       = (volatile  HCCA       *)0x7FD00000;
    TDHead     = (volatile  HCTD       *)0x7FD00100;
    TDTail     = (volatile  HCTD       *)0x7FD00110;
    EDCtrl     = (volatile  HCED       *)0x7FD00120;
    EDBulkIn   = (volatile  HCED       *)0x7FD00130;
    EDBulkOut  = (volatile  HCED       *)0x7FD00140;
    TDBuffer   = (volatile  USB_INT08U *)0x7FD00150;
    FATBuffer  = (volatile  USB_INT08U *)0x7FD001D0;
    UserBuffer = (volatile  USB_INT08U *)0x7FD01000;

Т.е. эти структуры кладуться именно в USB Ram. сама по себе конструкция убогая. А чтобы сделать нормально нужно задавать новый сегмент и т.д. Лень.
zltigo
Цитата(Dron_Gus @ Apr 13 2009, 19:58) *
Меня больше интересует...

Ну так попробовать - либо DMA с ошибкой вылетит, либо нет smile.gif. Я USB почти не занимаюсь - совсем не мой интерфейс...
Dron_Gus
Цитата(zltigo @ Apr 13 2009, 22:51) *
Ну так попробовать - либо DMA с ошибкой вылетит, либо нет smile.gif . Я USB почти не занимаюсь - совсем не мой интерфейс...


И буферы и все списки должны лежать в USB RAM. При этом если буфер вне этой памяти, действительно вылетает с ошибкой. Если же и какие-либо дескрипторы вне этой памяти, то полный ступор.

Это так. Мало ли кому пригодится.

Решил таким дефайном
Код
#define USB_RAM   __attribute__ ((section(".usbram"))) __attribute__ ((aligned(16)))
Alechek
А почему aligned 16 ??
Требования к выравниванию буфера же нет?
Да и Isochronous Transfer Descriptor must be aligned to a 32-byte boundary
Dron_Gus
Это для Endpoint Descriptor и Transfer Descriptors. Привел в качестве примера. Структура Host Controller Communications Area вообще должна быть выравнена на 256 байт.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.