Nowe posty

xx Dystrybucja pod HP Omen (7)
Dzisiaj o 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
lamp Problem z Linux Lite po instalacji (0)
2024-03-27, 19:50:30
xx Ile pingwinów? (1)
2024-03-27, 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: USB a ASM lub C/C++  (Przeczytany 15494 razy)

spideros1

  • Gość
USB a ASM lub C/C++
« Odpowiedź #15 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ść
USB a ASM lub C/C++
« Odpowiedź #16 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ść
USB a ASM lub C/C++
« Odpowiedź #17 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ść
USB a ASM lub C/C++
« Odpowiedź #18 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ść
USB a ASM lub C/C++
« Odpowiedź #19 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ść
USB a ASM lub C/C++
« Odpowiedź #20 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ść
USB a ASM lub C/C++
« Odpowiedź #21 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ść
USB a ASM lub C/C++
« Odpowiedź #22 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

amatox

  • Gość
USB a ASM lub C/C++
« Odpowiedź #23 dnia: 2006-06-05, 21:22:02 »
> Pytasz jak sobie radzi z tym system, to gdzie znaleźć lepszą dokumantację jak nie w źródłach
 > systemu?
 
Mialem nadzieje ze na forum....
Ale ok... powiedz mi tylko jak mam odnalezc (gdzie odnalezc) interesujacy mnie fragment w kernelu Linuxa i odznaczam post jako "problem rozwiazany" ;]

Maciek_Rutecki

  • Gość
USB a ASM lub C/C++
« Odpowiedź #24 dnia: 2006-06-05, 22:30:03 »
2006-06-05 21:22:02 amatox napisał:

>  > Pytasz jak sobie radzi z tym system, to gdzie znaleźć lepszą dokumantację jak nie w
 > źródłach
 >  > systemu?
 >  
 > Mialem nadzieje ze na forum....
 > Ale ok... powiedz mi tylko jak mam odnalezc (gdzie odnalezc) interesujacy mnie fragment w
 > kernelu Linuxa i odznaczam post jako "problem rozwiazany" ;]

http://kernel.org/pub/linux/kernel/people/gregkh/ddk/

Poczytaj dokumentację w plikach PDF.

W źródłach jądra sam sobie poszukaj, bo to już przegięcie aby pytać o takie oczywiste rzeczy :P

--
Maciek

spideros1

  • Gość
USB a ASM lub C/C++
« Odpowiedź #25 dnia: 2006-06-06, 17:29:28 »
Wysyłałem wcześniej post ale w czasie wysyłania linux.pl padło.

>  > Pytasz jak sobie radzi z tym system, to gdzie znaleźć lepszą dokumantację jak nie w
 > źródłach
 >  > systemu?
 >  
 > Mialem nadzieje ze na forum....
 > Ale ok... powiedz mi tylko jak mam odnalezc (gdzie odnalezc) interesujacy mnie fragment w
 > kernelu Linuxa i odznaczam post jako "problem rozwiazany" ;]

drivers/usb/core
drivers/pci
arch/i386/kernel

W źródłach systemu nie bardzo znajdziesz dokumentację, ale możesz wywnioskować na jakiej zasadzie to działa.
Przerwania karcie możesz przydzielać dynamicznie. Podczas inicjalizacji karty w rejestrach konfiguracyjnych PCI można wpisać przerwanie, którego ma używać karta.

> 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).

Normalnie. Wpisują odpowiednie wartości pod odpowiednie lokacje pamięci :)
A na serio, to jest to zależne od typu urządzenia i architektury.


amatox

  • Gość
USB a ASM lub C/C++
« Odpowiedź #26 dnia: 2006-06-06, 18:10:09 »
OK, odznaczam jako rozwiazany... chociaz mam jeszcze mase pytan w tym temacie :)... slowo sie zeklo... kobylka u plota....

Zanim jednak ponownie zaczne meczyc Was pytaniami Panowie, zapoznam sie ze wskazanymi zrodelkami ;]

THX