Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: canon pixma mp 170  (Przeczytany 1053 razy)

amatox

  • Gość
canon pixma mp 170
« dnia: 2006-04-14, 14:39:25 »
Witam

Potrzebuje uzyskac informacji na temat:

Jak mogę kontrolować transmisję z urządzeniem X po przez port USB (np. 2.0) - skad mogę uzyskać protokół do tego portu (jeśli jakiś standard obowiązuje) oraz jak oprogramować komunikację z nim używając wyłącznie NASM (po przez przerwania linuxowe) lub kompilatora GCC...?

Jeśli ma ktokolwiek informacje także o tym jak komunikować się z portem USB po przez przerwania BIOS-u (czyli z pominięciem systemu operacyjnego - czyli tak jakby go nie było - zwyczajnie zakładając że nie został zainstalowany ;))

Z poważaniem
Krzysztof Mularski
mularski[malipszon]arahnet.org

mpiernik

  • Gość
canon pixma mp 170
« Odpowiedź #1 dnia: 2006-04-19, 07:51:08 »
witam,

tez szukam czegos na ten temat.slyszalem ze kraza gdzies w sieci gotowe fragmenty kodow w C.jezeli ktos moze pomoc to z gory dzieki

pozdrawiam
 

spideros1

  • Gość
canon pixma mp 170
« Odpowiedź #2 dnia: 2006-06-04, 10:47:55 »
Są gotowe fragmenty w /usr/src/linux/drivers/usb :) A na serio to BIOS nie udostępnia bezpośrednich procedur do obsługi USB, chyba że płyta udostępnia bootowanie z pendrive\\'a, to w tedy jest widziany jako napęd pod int 0x13.

amatox

  • Gość
canon pixma mp 170
« Odpowiedź #3 dnia: 2006-06-04, 14:14:18 »
OK, thx za wskazowke...

Jednak jakim niby sposobem OS (LINUX czy windows) komunikuja sie z urzadzaniami po przez USB jak nie po przez funkcje (przerwania sprzetowe) dostepne w BIOS?

Porty USB sa na plycie glownej (nie mowie o adapterach na gniazda PCI), skoro wiec BIOS udostepnia odpowiednie przerwania (API) dla obslugi komunikacji z portami gniazd PCI, AGP, IDE, etc. to jakos nie bardzo miesci mi sie w logice ze jakikolwiek OS moze komunikowac sie z USB z pominieciem BIOS (danej plyty na ktorej wmontowany jest USB)
Nie przyjme innego schematu niz

USER > APP > OS > USB > X

gdzie X to dowolne urzadzenie na porcie USB (jak np. drukarka, aparat czy skaner)
znak > wskazuje kierunek wzajemnej komunikacji [w tym wypadku wyslania zadania/rozkazu]

Rzecz w tym jak tak na prawde komunikuja sie z portami USB windows czy LINUX, odpowiedz na to pytanie jest wlasciwa odpowiedzia na postawione przeze mnie wczesniej (nie tylko w tym poscie).

Ponad to... czy przerwanie

INT 0x13h

nie jest przypadkiem przerwaniem odpowedzialnym za wyswietlanie grafiki? :)

amatox

  • Gość
canon pixma mp 170
« Odpowiedź #4 dnia: 2006-06-04, 14:17:33 »
W schemacie mialo byc:

USER > APP > OS > BIOS > USB > X

sorki za gafe :)

spideros1

  • Gość
canon pixma mp 170
« Odpowiedź #5 dnia: 2006-06-04, 19:15:59 »
BIOS robi tylko inicjalizację sprzętu i udostępnia kilka standardowych funkcji potrzebnych do wystartowania systemu operacyjnego. BIOS nie jest używany podczas pracy systemu operacyjnego, bo po co ? Systemy operacyjne odwołują się bezpośrednio do sprzętu poprzez instrukcje zapisu/odczytu portów i pamięci.

amatox

  • Gość
canon pixma mp 170
« Odpowiedź #6 dnia: 2006-06-04, 19:25:37 »
Nie wiem gdzie nabywales ta wiedze....
ale zdecydowanie sie z Toba nie zgodze!

BIOS jest wykorzystywany przez caly czas pracy sprzetu - bo niby jak OS komunikowalby sie ze wspomniana przez Ciebie pamiecia itp.? Do tego wlasnie sluza przerwania (INT) oraz tzw. linie (IRQ)

Linux programiscie niezezwala na dostep do przerwan BIOSu (konkretnie przerwan sprzetowych) - udostepnia wylacznie dwa przerwania systemowe (int 80 oraz [chyba] int 81). Windows natomiast niezabrania dostepu do przerwan BIOSu (to tak na marginesie). Przerwania BIOS po zaladowaniu bootloadera (a w windowsie takze pozniej) mozna podmieniac.

BIOS, owszem, inicjuje sprzet do pracy i laduje z konkretnego BOOTSECTORA wspomnianego BOOTLOADERA danego OSa, jednak pozniej nie znika i nie wyparowywuje! OS moze nakazac w kazdej chwili (zwykle w czasie swojej inicjalizacji) uruchomienie procesora w trybie chronionym (normalnie pracuje w tzw. rzeczywistym). W trybie tym moze OS ustawiac tzw. pulapki (jako przerwania sprzetowe) dla np. wirusow lub wadliwie dzialajacych aplikacji - w tym takze pomaga OSowi nie kto inny jak \\"magiczny\\" BIOS.

A co do USB - bylem w EMPIKU (powinienem byl zrobic to wczesniej ;)) i zakupilem ksiazke ANATOMIA PC i tak wiec uzyskalem odpowiedz na swoje pytanie

BIOS do obslugi USB udostepnia dwie linie IRQ10 oraz IRQ11

No i to byloby na tyle... w tym temacie...
jednak pozostaje jeszcze kwestia samego protokolu... on tez jest opisany... ale mimo to czeka mnie spora dawka testow i programikowania ;]

[nadmienie ze potrzebny jest mi dostep do USB na najnizszym poziomie - inaczej skorzystaby z funkcji konkretnego OS]

spideros1

  • Gość
canon pixma mp 170
« Odpowiedź #7 dnia: 2006-06-04, 19:42:27 »
> Nie wiem gdzie nabywales ta wiedze....
> ale zdecydowanie sie z Toba nie zgodze!
Napisałem system operacyjny z GUI i siecią oraz krótki kurs pisania OSów, który krąży po Sieci.

LOL. BIOSu mogło by w ogóle nie być. Programista mógłby sam inicjalizować płytę główną i sprzęt. BIOS nie ma nic doczynienia z wchodzeniem w tryb chroniony. Przykładowo IntelMac nie ma BIOSa tylko EFI, który robi wyłącznie za pomoc dla bootloadera systemu. Jest nawet BIOS OpenSource, jednak na bardzo niewielką ilość płyt głównych.

>Linux programiscie niezezwala na dostep do przerwan BIOSu (konkretnie przerwan sprzetowych) - udostepnia wylacznie dwa przerwania systemowe (int 80 oraz [chyba] int 81). Windows natomiast niezabrania dostepu do przerwan BIOSu (to tak na marginesie).

Podczas pracy w trybie chronionym nie ma tablicy przerwań od adresu 0 tylko jest IDT. BIOS nie ma nic do tego. Podczas normalnej pracy systemu nie można wywołać przerwań BIOSu, chyba że przez tryb vm86, który jednak wymaga supportu od OSa.

>> w tym takze pomaga OSowi nie kto inny jak \\"magiczny\\" BIOS
Nieprawda. Jest to na x86 realizowane za pomocą Debug Registers.

>> BIOS do obslugi USB udostepnia dwie linie IRQ10 oraz IRQ11
Kolejna bzdura. IRQ mogą być przydzielane dynamicznie przez system operacyjny. Z resztą np. na płytach wieloprocesorowych jest APIC, który udostępnia dużo więcej przerwań niż PIC.

> jednak pozostaje jeszcze kwestia samego protokolu... on tez jest opisany... ale mimo to czeka mnie spora dawka testow i programikowania ;]

Są kompletne specyfikacje standardu USB.

Maciek_Rutecki

  • Gość
canon pixma mp 170
« Odpowiedź #8 dnia: 2006-06-04, 20:06:02 »
2006-06-04 19:25:37 amatox napisał:

> Nie wiem gdzie nabywales ta wiedze....
 > ale zdecydowanie sie z Toba nie zgodze!
 >
 > BIOS jest wykorzystywany przez caly czas pracy sprzetu - bo niby jak OS komunikowalby sie ze
 > wspomniana przez Ciebie pamiecia itp.? Do tego wlasnie sluza przerwania (INT) oraz tzw. linie
 > (IRQ)
 >
 > Linux programiscie niezezwala na dostep do przerwan BIOSu (konkretnie przerwan sprzetowych) -
 > udostepnia wylacznie dwa przerwania systemowe (int 80 oraz [chyba] int 81). Windows natomiast
 > niezabrania dostepu do przerwan BIOSu (to tak na marginesie). Przerwania BIOS po zaladowaniu
 > bootloadera (a w windowsie takze pozniej) mozna podmieniac.
 >
 > BIOS, owszem, inicjuje sprzet do pracy i laduje z konkretnego BOOTSECTORA wspomnianego
 > BOOTLOADERA danego OSa, jednak pozniej nie znika i nie wyparowywuje! OS moze nakazac w kazdej
 > chwili (zwykle w czasie swojej inicjalizacji) uruchomienie procesora w trybie chronionym
 > (normalnie pracuje w tzw. rzeczywistym). W trybie tym moze OS ustawiac tzw. pulapki (jako
 > przerwania sprzetowe) dla np. wirusow lub wadliwie dzialajacych aplikacji - w tym takze pomaga
 > OSowi nie kto inny jak \\"magiczny\\" BIOS.
 >
 > A co do USB - bylem w EMPIKU (powinienem byl zrobic to wczesniej ;)) i zakupilem ksiazke
 > ANATOMIA PC i tak wiec uzyskalem odpowiedz na swoje pytanie
 >
 > BIOS do obslugi USB udostepnia dwie linie IRQ10 oraz IRQ11
 >
 > No i to byloby na tyle... w tym temacie...
 > jednak pozostaje jeszcze kwestia samego protokolu... on tez jest opisany... ale mimo to czeka
 > mnie spora dawka testow i programikowania ;]
 >
 > [nadmienie ze potrzebny jest mi dostep do USB na najnizszym poziomie - inaczej skorzystaby z
 > funkcji konkretnego OS]


Żyjesz czasami systemu MSDOS. BIOS Linuksowi jest tylko po to potrzebny aby się uruchomił. Spróbuj zapisać coś bezpośrednio do pamięci, ciekawe co Ci stanie pomiędzy; BIOS czy Linux? USB nie musi mieć przerwania 10-11, to ustala system.

--
Maciek

amatox

  • Gość
canon pixma mp 170
« Odpowiedź #9 dnia: 2006-06-04, 20:09:50 »
 > LOL. BIOSu mogło by w ogóle nie być. Programista mógłby sam inicjalizować płytę główną i
 > sprzęt.

Wtedy bylby to BIOS :))

> BIOS nie ma nic doczynienia z wchodzeniem w tryb chroniony. Przykładowo IntelMac nie ma
> BIOSa tylko EFI

i stad wlasnie byl konkurs na zainstalowanie windy pod intelmaciem... ale to inny temat

 > Podczas pracy w trybie chronionym nie ma tablicy przerwań od adresu 0 tylko jest IDT.

Po to jest wlasnie tryb chroniony ;] (ale przyznaj ze co do IDT to roznica niewielka, adresy tez mozna ustalic)

> BIOS nie
 > ma nic do tego. Podczas normalnej pracy systemu nie można wywołać przerwań BIOSu, chyba że
 > przez tryb vm86, który jednak wymaga supportu od OSa.

w windzie oraz dosie zwyczajnie wywolasz funkcje BIOSa!

 > >> BIOS do obslugi USB udostepnia dwie linie IRQ10 oraz IRQ11
 > Kolejna bzdura. IRQ mogą być przydzielane dynamicznie przez system operacyjny. Z resztą np. na
 > płytach wieloprocesorowych jest APIC, który udostępnia dużo więcej przerwań niż PIC.

i wlasnie o to pytam :))
tylko wiecej szczegolow prosze ;]

A co ANATOMIA PC:
str 833:
\\"(...) Wysyłanie zapytań do wszystkich możliwych urządzeń (maksymalnie 127) obciążyłoby zbyt mocno procesor systemowy i dlatego nie może być mu przypisane. Działalność tę bierze na siebie kontroler USB. On sam musi więc być urządzeniem porozumiewającym się z PC za pomocą przerwań. BIOS wprzydziela zwykle w tym celu linię IRQ10 lub IRQ11. Host-Adapter obejmuje w posiadanie część przestrzeni adresowej I/O. (...)\\"

a moje pytanie konkretnie tyczy sie o to jak porozumiewac sie na najnizszym poziomie z owym KONTROLEREM - w takiej sytuacji gdy np. nie ma zadnego OS na pokladzie!

 > Są kompletne specyfikacje standardu USB.

To poprosze o linki (preferuje wersje polska - zebym pozniej nie mial watpliwosci co do intencji autora ;))

Maciek_Rutecki

  • Gość
canon pixma mp 170
« Odpowiedź #10 dnia: 2006-06-04, 20:12:43 »
2006-06-04 20:09:50 amatox napisał:


 > To poprosze o linki (preferuje wersje polska - zebym pozniej nie mial watpliwosci co do
 > intencji autora ;))
 >

Z polskojęzyczną dokumantacją może być problem:

www.usb.org

--
Maciek

amatox

  • Gość
canon pixma mp 170
« Odpowiedź #11 dnia: 2006-06-04, 20:15:07 »
> Żyjesz czasami systemu MSDOS. BIOS Linuksowi jest tylko po to potrzebny aby się uruchomił.
 > Spróbuj zapisać coś bezpośrednio do pamięci, ciekawe co Ci stanie pomiędzy; BIOS czy Linux? USB
 > nie musi mieć przerwania 10-11, to ustala system.
 >
 > --
 > Maciek
 >


Kolegi wspierac nie musisz ;)
A co przerwan - to przeciez wyzej wspomnialem: LINUX nie zezwala na dostep do przerwan BIOS (i jestem tego swiadom) - pozostawia programiscie wylacznie int80 oraz [chyba] int81

Ponad to w temacie tym chcialem uzyskac info (ewentualna pomoc) jak dostac sie do urzadzen USB (portow, kontrolera etc.) -- dokladnie chcem wiedziec co robi OS ze ma do nich dostep.

Jesli tak jest ze przerwania te ustala OS (w to nie watpie) i nie ma przerwan w BIOS (danej plyty) [w ta watpie] to jak OS dostaje sie do kontrolera USB jak sie z nim komunikuje, jak wyglada mechanizm etc.

Naturalnie intersuja mnie informacje na najnizszym poziomie programowania np. w ASM... moze byc C/C++ ale bez kierowania mnie do wykorzystania gotowych bibliotek... bo wlasnie to mnie interesuje (czyli co robia te biblioteki i OS oraz JAK to robia).

To tak jakbym pytal o to jak sie robi dzieci a w odpowiedzi uslyszal ze trzeba odebrac je ze szpitala....... ;-/

chmooreck

  • Gość
canon pixma mp 170
« Odpowiedź #12 dnia: 2006-06-05, 08:25:32 »
2006-06-04 20:15:07 amatox napisał:


 > Ponad to w temacie tym chcialem uzyskac info (ewentualna pomoc) jak dostac sie do urzadzen USB
 > (portow, kontrolera etc.) -- dokladnie chcem wiedziec co robi OS ze ma do nich dostep.
 >
 > Jesli tak jest ze przerwania te ustala OS (w to nie watpie) i nie ma przerwan w BIOS (danej
 > plyty) [w ta watpie] to jak OS dostaje sie do kontrolera USB jak sie z nim komunikuje, jak
 > wyglada mechanizm etc.
 >
 > Naturalnie intersuja mnie informacje na najnizszym poziomie programowania np. w ASM... moze byc
 > C/C++ ale bez kierowania mnie do wykorzystania gotowych bibliotek... bo wlasnie to mnie
 > interesuje (czyli co robia te biblioteki i OS oraz JAK to robia).

nos w zrodla kernela i bedziesz wyszstko wiedzial.. to sa uroki otwartego oprogramowania...

amatox

  • Gość
canon pixma mp 170
« Odpowiedź #13 dnia: 2006-06-05, 09:29:19 »
Ok, a co byloby gdybym zagladal w zrodla kernela i tego nie znalazl?
Kogo i gdzie mialbym wtedy pytac o rade, wskazowke czy pomoc????

Ponadto - odpowiedzia na pytanie jak sie robi dzieci... nie oczekiwalem az tak brutalnej.... aby nos wsadzic.. w kernale..? lol

Maciek_Rutecki

  • Gość
canon pixma mp 170
« Odpowiedź #14 dnia: 2006-06-05, 20:11:04 »
2006-06-05 09:29:19 amatox napisał:

> Ok, a co byloby gdybym zagladal w zrodla kernela i tego nie znalazl?
 > Kogo i gdzie mialbym wtedy pytac o rade, wskazowke czy pomoc????
 >
 > Ponadto - odpowiedzia na pytanie jak sie robi dzieci... nie oczekiwalem az tak brutalnej....
 > aby nos wsadzic.. w kernale..? lol

Pytasz jak sobie radzi z tym system, to gdzie znaleźć lepszą dokumantację jak nie w źródłach systemu?

--
Maciek