Porty Wejścia / Wyjścia w Assemblerze

0

Witam.

Ostatnio zacząłem się bawić w pisanie bootloadery itp. I odkąd przeczytałem w książce o temacie operacji na portach in / out to zastanawiam się skąd mam wiedzieć co pod jakim portem się kryje. Słyszałem o czymś takim jak lista Rafla Browna oraz przeglądałem dokumentacje różnych chipsetów ale nic mi to nie wyjaśniło.
Wiem że porty z zakresu 60-63 to porty do kontrolera klawiatury ale skąd to wiadomo ?. A chęć zabawy na portach się wziął z stąd że chciał bym stworzyć taki prosty program który jest bootowany i coś tam robi. słyszałem że dzięki operacjom IN / OUT jesteśmy w stanie odczytać temperaturę z termometra itp.

Dziękuję za pomoc i życzę miłego dnia.

0

@vpiotr: Komputer x86. Akurat ten termometr to był podany jako przykład. Chodzi mi o wyjaśnienie tego co było w opisie posta bo chciał bym się zabrać za zabawę z portami i po testować różne rzeczy. Tylko nie wiem skąd mam wiedzieć co np kryje się pod portem 20 jak i 35 itd.

0

Wiem że porty z zakresu 60-63 to porty do kontrolera klawiatury ale skąd to wiadomo

Z Google? nie wiem, pewnie to jest w jakiejś specyfikacji..

W pakiecie Ralfa jest plik o nazwie ports i tam pewnie porty kontrolera klawiatury będą opisane.
Ale to raczej będzie dotyczyć klawiatury PS/2, albo trybu emulacji ("legacy keyboard" w BIOSie albo podobnie).
Jeżeli klawiatura jest na USB a w BIOSie emulacja PS/2 będzie wyłączona no to jesteś sorta out of luck bo zrobienie całego stacku USB żeby się dobrać do klawiatury to będzie mnóstwo roboty.

Tylko nie wiem skąd mam wiedzieć co np kryje się pod portem 20 jak i 35 itd.

Raczej zaczynamy od innej strony: jest ficzer/urządzenie X, korzysta z portu Y, aha no to używamy portu Y.
Aniżeli: hmm, ciekawe co jest pod portem dajmy na to 35 - jakby to kogokolwiek obchodziło..

1

The undocumented PC book: https://archive.org/details/The_Undocumented_PC_Second_Edition_Frankvan_Gilluwe/page/n1/mode/2up

Wszystkie współczesne PC wyprodukowane do 2015 są raczej jeszcze kompatybilne z MS-DOS. To znaczy że dokumentacja do starego IBM PC stosuje się również do nich. I tam bym szukał jak to ma być bardzo prosty system operacyjny: https://bochs.sourceforge.io/techspec/PORTS.LST

IN/OUT w asm to żadna magia, działa tak że oprócz adresu z IN/OUT który wystawiany jest na szynę pamięci, CPU dodatkowo podnosi sygnał na linii IO/M co powoduje że układ mapowania pamięci skieruje adres i sygnał Enable do odpowiedniego układu (tak był w starym IBM PC bez chipsetów) innego niż ROM/RAM. Także w przypadku IBM PC i niebieskiej książki to można układ portów odczytać wprost ze schematu komputera :D (http://www.minuszerodegrees.net/manuals/IBM_5150_Technical_Reference_6025005_AUG81.pdf)

1

To już jest przestarzała wiedza. W dawnych czasach, to bodajże w dokumentacji płyty głównej było to określone dokładnie, część chyba była częścią jakiegoś standardu. Na dzień dzisiejszy się tak nie robi. Na poziomie firmwareu i niskopoziomowych sterowników masz MMIO (Memory mapped IO — czyli masz określone adresy w pamięci, które jak działają jak porty i używasz ich normalnie jak RAMu) i jakiś interfejs: przeważnie PCI itp. Te interfejsy zapewniają automatyczne wykrywanie urządzeń i komunikację z nimi. Powyżej poziomu kernela już się nie używa, są systemowe interfejsy od tego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1