Witam, wszystkich forumowiczów. Jest to mój pierwszy post więc chciałem się przywitać!
Mam nadzieję, że ktoś będzie mi w stanie pomóc z następującym problemem:
jestem w trakcie pisania sterownika dla przetwornika A/D dla linuxa, kóry jest moim pierwszym a zarazem jest projektem zaliczeniowym na moich studiach. Podłączony jest on poprzez USB. Płytka ma 2 endpoiny z których jeden jest IN a drugi OUT, oba w trbie bulk, - sterowanie pracą i odbieranie danych.
Przy wykorzystaniu przykładu z jądra usb-skeleton.c udało mi się nawiązać łączność z płytką. Wysłałem jej polecenie na które przedstawiła mi się.
Teraz muszę spełnić wymagania. Sterownik ma umożliwić wielu programom dostęp do danych przy czym każdy program może zarządać dostępu do innego kanału i różnej częstotliwości. Ja muszę je jakoś pogodzić i wybrać najbardziej wypośrodkowaną możliwość.
Gdzie jest problem?
Nie rozumiem jak zachowuje się system przy połączeniu bulk. Gdy włączę próbkowanie i płytka zacznie wysyłać mi dane to kto je będzie odbierał? Jeżeli nikt to dojedzie do przepełnienia? Czy jest tak, że wywołanie read idzie od programu z przestrzeni użytkownika czy sterownik sam może siebie jakoś wywołać i zciągnąć od płytki dane i dodać do jakiegoś buforu?
Nie udało mi się nigdzie znaleźć sensownego rozwiązania tego problemu, ani tego jak to w praktyce wygląda.
Mam nadzieję, że znajdzie się ktoś na tyle dobry żeby naprowadzić mnie chociaż na trop...
Mam nadzieję, że ktoś będzie mi w stanie pomóc z następującym problemem:
jestem w trakcie pisania sterownika dla przetwornika A/D dla linuxa, kóry jest moim pierwszym a zarazem jest projektem zaliczeniowym na moich studiach. Podłączony jest on poprzez USB. Płytka ma 2 endpoiny z których jeden jest IN a drugi OUT, oba w trbie bulk, - sterowanie pracą i odbieranie danych.
Przy wykorzystaniu przykładu z jądra usb-skeleton.c udało mi się nawiązać łączność z płytką. Wysłałem jej polecenie na które przedstawiła mi się.
Teraz muszę spełnić wymagania. Sterownik ma umożliwić wielu programom dostęp do danych przy czym każdy program może zarządać dostępu do innego kanału i różnej częstotliwości. Ja muszę je jakoś pogodzić i wybrać najbardziej wypośrodkowaną możliwość.
Gdzie jest problem?
Nie rozumiem jak zachowuje się system przy połączeniu bulk. Gdy włączę próbkowanie i płytka zacznie wysyłać mi dane to kto je będzie odbierał? Jeżeli nikt to dojedzie do przepełnienia? Czy jest tak, że wywołanie read idzie od programu z przestrzeni użytkownika czy sterownik sam może siebie jakoś wywołać i zciągnąć od płytki dane i dodać do jakiegoś buforu?
Nie udało mi się nigdzie znaleźć sensownego rozwiązania tego problemu, ani tego jak to w praktyce wygląda.
Mam nadzieję, że znajdzie się ktoś na tyle dobry żeby naprowadzić mnie chociaż na trop...
