Перейти к содержанию
    

немец крут

но только поначалу

потом оказывается, что что-то не работает, что-то работает не так, что-то глючит

мне кажется, что он берет проекты из под старого? куба и причесывает их под кокос

Изменено пользователем Огурцов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, куба я у него пока не видел. У него SPL и не кубовые USB либы.

Глюки да, бывают. Тот же его пример USB мыши на Ф429 дискавери он работает нормально, а на моей плате на том же хосте он не пошёл. хз почему. Я не разбирался. Решил лучше время потратить на новые либы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

старый куб был на spl, не ?

в любом случае, примеры по списку куба и выглядят как обертки над обертками

почему бы для разнообразия не сделать cdc host ? а нет, у st потому что нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

старый куб был на spl, не ?

Я не знаю, я кубом почти не пользуюсь.

 

в любом случае, примеры по списку куба и выглядят как обертки над обертками

почему бы для разнообразия не сделать cdc host ? а нет, у st потому что нет

Угу. Не говорите .. В кубе CDC Host есть. Но на простые либы переделывать геморно.

 

Кстати, в новых (не кубовых) либах CDC хост появился. Так что, наверное, и у немца скоро появится :biggrin: . Я не проверял, пока неактуально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так либы на spl или это третья реинкарнация стшного софта ?

я куб пытался под кокос заточить - что- то там не срослось

пока

Изменено пользователем Огурцов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В USB либах SPL есть только в 2-х местах:

1. Файл usb_bsp.c - инициализация портов, прерываний, включение питания девайса и пр.

2. Файл usbh_usr.c, функция USBH_USR_UserInput. Там опрашивается какая-то кнопка, которой можно запретить работу хоста. На фига оно надо и как именно оно работает - я не знаю, я всегда эту кнопку выкидывал и безусловно разрешал работу хоста.

 

В самом USB ядре никакого SPL нету, там всё на регистрах сделано, через макросы

#define USB_OTG_READ_REG32(reg)  (*(__IO uint32_t *)(reg))
#define USB_OTG_WRITE_REG32(reg,value) (*(__IO uint32_t *)(reg) = (value))
#define USB_OTG_MODIFY_REG32(reg,clear_mask,set_mask) \
  USB_OTG_WRITE_REG32((reg), (((USB_OTG_READ_REG32(reg)) & ~(clear_mask)) | (set_mask)) )

И никогда я там SPL не видел, несмотря на вопли разных SPL-ненавистников. Попадались мне такие :) .

 

Разные дисплеи, использующиеся в callback-ах я не рассматривал, т.к. эти вещи сильно от проекта зависят. Я, например, все PID/VID/... записываю в переменные, а потом использую, где надо (вывожу на дисплей в другом месте).

 

PS. Я имею в виду только хосты. Девайсы я практически не делал, не могу сказать что там да как. Хотя, я думаю, что в этом отношении девайс от хоста не отличается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал флэшки на новой либе. На всех моих платах и процах пашет норм.

Теперь пошёл делать, чтобы хост понимал и мышку и флэшку одновременно. Т.е. без перекомпиляции и перепрошивки.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теперь пошёл делать, чтобы хост понимал и мышку и флэшку одновременно.

 

В смысле, через хаб или просто либо то, либо другое? Если через хаб, тоже интересно, сейчас сам хочу сделать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, пока не хаб. Просто так или то или то.

Хабовый протокол я ещё даже не читал пока :( .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, пока не хаб. Просто так или то или то.

Хабовый протокол я ещё даже не читал пока :( .

 

Понятно - это просто, а вот с хабом... че-то пока не работает все разом :crying:

 

ЗЫ. Пользуясь случаем, не встречалось такого эффекта, например, читаю блоками флешку, а потом надо на нее-же несколько блоков записать, потом читать дальше, причем без пауз. Так вот после записи флеха наглухо уходит в аут(помогает только откл. ее питания), сам контроллер усб не отключаю, только сброс шины.

Это бывает на 2х флешках из 10 разных производителей... Причем запись происходит корректно.

 

Кто, что знает - расскажите, если не секрет? :laughing:

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, флэшки у меня нормально вроде пашут.

Знакомый, которому я дал свой драйвер, тоже не жаловался пока что ...

 

Драйвер от СТ. Практически без изменений. Слегка допиленный, чтобы не впадал в ступор при смене флэшки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, флэшки у меня нормально вроде пашут.

 

Дак вот тоже нормально пашут, за исключением некоторых и в режиме "одновременной" записи и чтения. Когда только читаю или записываю - все норм :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пользуясь случаем, не встречалось такого эффекта, например, читаю блоками флешку, а потом надо на нее-же несколько блоков записать, потом читать дальше, причем без пауз. Так вот после записи флеха наглухо уходит в аут

 

Вопрос решил, оказывается для особо тормозных флешек нужно было увеличить таймаут ошибки, если нет ответа для DATA IN и CSW принимаемых блоков.

 

Пользуясь случаем, не встречалось такого эффекта, например, читаю блоками флешку, а потом надо на нее-же несколько блоков записать, потом читать дальше, причем без пауз. Так вот после записи флеха наглухо уходит в аут

 

Вопрос решил, оказывается для особо тормозных флешек нужно было увеличить таймаут ошибки, если нет ответа для DATA IN и CSW принимаемых блоков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Апну древнюю тему.

Сейчас осталась только одна проблема - мышь спустя какое-то время перестаёт отдавать координаты.

Копание в коде вывело на уже упоминавшееся мною выше условие в файле usbh_hid_core.c, функция USBH_HID_Handle:

 

.............
  case HID_POLL:
    if(( HCD_GetCurrentFrame(pdev) - HID_Machine.timer) >= HID_Machine.poll)
    {
      HID_Machine.state = HID_GET_DATA;
    }
    else if( HCD_GetURB_State(pdev, HID_Machine.hc_num_in) == URB_DONE )
    {
      if(start_toggle == 1) /* handle data once */
      {
        start_toggle = 0;
        HID_Machine.cb->Decode(HID_Machine.buff);
      }
    } //if
..............

 

Ну что такое первое условие - понятно, там все проблемы удалось решить, но всё обламывается на втором условии.

Когда мышь дохнет, функция возвращает URB_IDLE. Всё, что я пока понял, что эти статусы выставляются в прерывании USB.

Дальнейшее я пока не расколдовал :( ...

 

Поэтому вопрос по сути тот же - работает ли USB мышь у кого-нибудь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поэтому вопрос по сути тот же - работает ли USB мышь у кого-нибудь?

 

Работает больше года в 24\7 . Проблемы отваливания решил отслеживанием ошибки и повторной энумерацией, как это сделано в винде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...