Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: at91sam9g45 usb host ehci
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Chestor
Работал ли кто-нибудь с USB-host-EHCI HS на контроллере AT91SAM9G45... Не могу нацти никких примеров, не говоря уже о драйверах (без линукса). На сайте у Атмела, как ни странно) нет никаких примеров работы с ним. Помогите ссылками, примерами, кто может!

Спасибо за ответы...
kovigor
Цитата(Chestor @ Mar 23 2011, 11:09) *
Работал ли кто-нибудь с USB-host-EHCI HS на контроллере AT91SAM9G45... Не могу нацти никких примеров, не говоря уже о драйверах (без линукса). На сайте у Атмела, как ни странно) нет никаких примеров работы с ним. Помогите ссылками, примерами, кто может!


С EHCI не работал. Решал похожую задучу для AT91SAM9XE512, но там OHCI. В сети удалось найти крайне упрощенный и по сути нерабочий пример для его инициализации (не полноценной работы !). А дальше - стандартный путь: штудирование документации на МК и спецификации OHCI, масса экспериментов и проч. Ну, вы и сами знаете. Месяца за 2 управился. Другого пути нет. Попробуйте найти примеры если не на этот МК, то на любой МК с EHCI. Совсем с нуля написать можно, но слишком тяжело ...
DpInRock
http://research.microsoft.com/en-us/um/red...ehci/ehci.c.htm
Это первый попавшийся пример.
Их - туча.
kovigor
Цитата(DpInRock @ Mar 23 2011, 15:13) *
Это первый попавшийся пример.
Их - туча.


Оно-то так, в теории. А на практике выходит иначе. Совсем иначе. Пример из жизни. Есть проект на ISP1160. Это такой двухпортовый хост (OHCI). Все прекрасно работает, отлажено и проблем не вызывает. И тут потребовалось этот проект портировать на AT91SAM9XE512. Там тоже OHCI. И даже регистры многие совпадают. И вот я, наивный, решил, что за пару дней справлюсь. Ага, именно так и было. Только в моем воображении. На самом деле портирование заняло несколько месяцев, а эти самые OHCI и масса сопутствующей требухи в обоих случаях различались, как небо и земля. Я не пессимист, скорее я хорошо информированный реалист. А описанный мной случай произошел не далее как прошлой весной. Так что пусть автор вопроса не строит иллюзий, а настраивается на серьезный и упорный труд ...
Chestor
Цитата(DpInRock @ Mar 23 2011, 15:13) *
...Это первый попавшийся пример...

Спасибо, конечно, но на чем это написано и что дальше делать с кучей функций, названия которых говорят о чем-то важном, но ни о чем конктретном - не понятно...
Цитата(DpInRock @ Mar 23 2011, 15:13) *
...Таких куча...

А мне почему-то попадаются только примеры для линукса atmel-ehci.c со всевозможными патчами. Может, я чё не там ищу? Подскажите, где вы видели КУЧУ примеров, покопаюсь там?... =)


DpInRock
Че-то не понял. Какая разница, под линукс, винды или еще чего.
Что OHCI, что EHCI - это работа с набором регистров относительно базового адреса.
Всего одно аппаратно-зависимое число - базовый адрес.

Все остальное у всех одинаково.

К примеру, я взял первый попавшийся исходник OHCI с массстораджем, воткнул не глядя практически и все работает.

Как организуется взаимодействие подсистем - это уж на ваш личный вкус. Хоть многозадачность, хоть как. Без разницы.
Естественно, требуется слегка напрячься в понимании того, как работает хост. Необязательно в деталях, но на уровне абстрактного разбора функций из исходника - типа, кто вызывает, когда....

sergeeff
Заходите на сайт u-boot'a (ftp://ftp.denx.de/pub/u-boot/). Там есть реализация EHCI. OHCI оттуда я приспособил к at91rm9200 за пару недель.
Chestor
Цитата(DpInRock @ Mar 24 2011, 14:59) *
Какая разница, под линукс, винды или еще чего.
Что OHCI, что EHCI - это работа с набором регистров относительно базового адреса.

Для мастера кодов разницы, возможно, и никакой... Для меня же, как для новичка, разница ОГРОМНА!.. У нифицированный Линуксовый код перегружен всяческими универсальными функциями, определения которых разбросаны по всему дереву исходников и подключаются множеством make-файлов. Выуживать из такой паутины через третье поколение переопределенный define не очень-то просто. Другое дело исходники, приспособленные для конкретного процессора: всё в одной кучке и ничего лишнего.

Цитата(DpInRock @ Mar 24 2011, 14:59) *
Всего одно аппаратно-зависимое число - базовый адрес.

Да, Но набор регистров разный вообще. В IAR есть описания для OHCI на at91sam9g45, но сам порт в режиме OHCI не функционирует (официальная Errata). Описания EHCI есть, но они не живут. Примеров нет ни под что.
Latch
так каким же путем идти? нужен Mass Storage на sam9xe512. пробовал за основу ohci от lpc17xx - проц виснет вместе с отладчиком в инициализации после
Код
    /* Put HC in operational state                */
    AT91C_BASE_UHP->UHP_HcControl = (AT91C_BASE_UHP->UHP_HcControl
            & (~OR_CONTROL_HCFS)) | OR_CONTROL_HC_OPER;
kovigor
Цитата(Latch @ May 11 2011, 09:25) *
так каким же путем идти? нужен Mass Storage на sam9xe512.


Там OHCI, а не EHCI. варианта два. Первый - ставить ОС, например, Linux. Второй - делать все самому, зачитав до дыр спецификацию OHCI и еще много другой литературы. Mass Storage я лично не делал, но делал на этом МК ПО для поддержки мыши и клавиатуры. могу сказать, что это не самая простая на свете задача, но при желании и настойчивости вполне разрешимая ...
sasamy
Цитата(Chestor @ Mar 25 2011, 13:30) *
Для меня же, как для новичка, разница ОГРОМНА!.. У нифицированный Линуксовый код перегружен всяческими универсальными функциями, определения которых разбросаны по всему дереву исходников и подключаются множеством make-файлов. Выуживать из такой паутины через третье поколение переопределенный define не очень-то просто.


Для навигации по коду больших проектов есть утилиты, облегчающие жизнь, в частности c вебинтерфейсом LXR, например тут

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.