PCMCIA HOWTO pl 6 (2)


Opis sterowników do PCMCIA: Wskazówki do śledzenia (debugging) i informacje do programowania. Następna strona Poprzednia strona Spis treści 6. Wskazówki do śledzenia (debugging) i informacje do programowania. 6.1 Jak mogę wysłać pomocny list o błędzie ? Najlepszym sposobem na zgłaszanie błędów jest użycie listy komunikatowej na HyperNews-ach na stronie dotyczącej PCMCIA na Linux-ie. W ten sposób inni także mogą śledzić bieżące problemy (i poprawki czy obejścia jeśli są dostępne). Oto rzeczy, które powinny być zawarte w każdym liście na temat błędu: Typ twojego systemu i wynik polecenia probe. Jakich kart PCMCIA używasz. Wersja twojego jądra i wersja PCMCIA. Jakiekolwiek zmiany, jakie zrobiłeś w pliku /etc/pcmcia albo rc.pcmcia. Wszystko co jest związane z kartami PCMCIA z log-ów systemowych. Przed wysłaniem listu o błędzie, upewnij się proszę, że używasz najnowszej wersji sterowników do PCMCIA. Szczerze powiem, że czytanie o czymś, co już naprawiłem nie jest najbardziej konstruktywnym sposobem na spędzanie czasu. Jeśli twój problem związany jest także z nagłym przerwaniem działania jądra, podczas którego wyświetlane są zawartości rejestrów, to zawartość ta jest przydatna tylko wtedy jeśli możesz wskazać adres EIP. Jeśli jest on w głównym jądrze, sprawdź ten adres w System.map, aby zidentyfikować funkcję, która była w tym momencie wykonywana. Jeśli przerwa nastąpiła podczas działania jakiegoś modułu ładowalnego, jest to trochę trudniejsze do prześledzenia. W bieżącej wersji narzędzi do modułów program ksyms -m wyświetli adres podstawowy każdego modułu. Weź moduł, który zawiera podane EIP, i odejmij jego adres podstawowy od EIP, aby otrzymać w ten sposób offset w module. Uruchom wtedy gdb z tym modułem jako parametr i sprawdź otrzymany offset poleceniem list. Zadziała to tylko wtedy kiedy dany moduł był skompilowany z opcją -g, czyli z informacjami dla debugger-a. Jeśli nie masz dostępu do WWW, informacje o błędach można wysyłać do mnie na adres dhinds@hyper.stanford.edu. Chociaż wolę, aby informacje takie były wysyłane na mojej stronie WWW, tak żeby inni także mogli je widzieć. 6.2 Informacje na temat niskopoziomowego śledzenia PCMCIA. Moduły PCMCIA zawierają dużo warunkowo skompilowanego kodu śledzenia. Większość tego kodu jest pod kontrolą definicji preprocesora PCMCIA_DEBUG. Jeśli jest to niezdefiniowane, to kod do śledzenia nie zostanie wkompilowany. Jeśli jest utawione na 0, kod ten jest wkompilowany, ale nieaktywny. Im większe poziomy tym więcej informacji. Każdy moduł stworzony ze zdefiniowanym symbolem PCMCIA_DEBUG będzie miał parametr typu Integer, pc_debug, który kontroluje ilość pojawiających się informacji. Może to być ustawiane wtedy, kiedy moduł jest ładowany, tak więc wyjście może być kontrolowane, na zasadzie "dla każdego modułu" bez potrzeby przekompilowywania. Jest kilka narzędzi do śledzenia w podkatalogu debug_tools/ w dystrybucji PCMCIA. Narzędzia dump_tcic i dump_i365 generują kompletny zrzut rejestrów kontrolera PCMCIA i dekodują dużo informacji z rejestrów. Są najbardziej pożyteczne wtedy, gdy masz dostęp do schematu danych konkretnego układu scalonego kontrolera. Narzędzie dump_tuples wyświetla CIS-y (Card Information Structure) danej karty i dekoduje niektóre z najważniejszych bitów. A narzędzie dump_cisreg wyświetla rejestry lokalnej konfiguracji karty. Sterownik memory_cs do karty pamięci jest także czasami przydatny do śledzenia. Może on zostać powiązany z każdą kartą PCMCIA i nie wpływa to negatywnie na inne sterowniki. Może on zostać użyty do bezpośredniego dostępu do pamięci atrybutowej karty albo zwykłej pamięci. 6.3 Jak mam napisać sterownik Card Services dla nowej karty ? Najlepszą dokumentacją dla interfejsu PCMCIA dla Linux-a jest "The Linux PCMCIA Programmer's Guide". Najnowsza wersja jest zawsze dostępna z hyper.stanford.edu albo na WWW - hyper.stanford.edu/HyperNews/get/pcmcia/home.html. Dla urządzeń, które są względnie podobne do normalnych urządzeń kart ISA, będziesz mógł przypuszczalnie użyć fragmentów sterowników Linux-a, które już istnieją. W niektórych przypadkach, największym problem będzie takie przerobienie już istniejącego sterownika, aby mógł on sobie poradzić z wkładaniem i wyjmowaniem danej karty. W bieżącej wersji, sterownik do karty pamięci jest jedynym sterownikiem, który nie zależy od żadnej części innego sterownika, który wykonywałby za niego brudną robotę. Napisałem szkielet sterownika z dużą ilością komentarzy, które wyjaśniają jak sterownik się komunikuje z Card Sevices; znajdziesz ten szkielet w dystrybucji źródłowej PCMCIA w podkatalogu modules/skeleton.c. 6.4 Wskazówki dla autorów sterowników klientów PCMCIA. Zdecydowałem, że nie jest rozsądne dla mnie, abym rozprowadzał wszystkie sterowniki klientów PCMCIA jako część pakietu PCMCIA. Każdy nowy sterownik czyni główny pakiet trudniejszym do utrzymania i, co można było przewidzieć, dołączenie sterownika przenosi trochę pracy opiekuna z autora na mnie. W zamian za to, zdecyduję osobno dla każdego przypadku (case by case) czy włączyć czy nie sterowniki pisane przez osoby trzecie, w zależności od żądań użytkowników jak i możliwości utrzymywania. Sugeruję, żeby autorzy sterowników, które nie dostały się do głównego pakietu, zaadoptowali następujący schemat przy przygotowywaniu ich sterowników do dystrybucji. Pliki sterownika powinny być ułożone w takiej samej strukturze katalogów jak w głównej dystrybucji, tak, żeby można było rozpakować sterownik ten w głównym katalogu źródeł głównej dystrybucji. Sterownik powinien posiadać pliki źródłowe (w ./modules/), stronę do podręcznika systemowego (w ./man/) i pliki konfiguracyjne (w ./etc/). Katalog główny powinien zawierać także plik README. W katalogu głównym powinien się także znajdować makefile, ustawiony w taki sposób, że "make -f ... all" i "make -f ... install" skompiluje sterownik i zainstaluje wszystkie potrzebne pliki. Jeśli plik ten posiada rozszerzenie .mk, to zostanie on automatycznie wykonany przez główny pliku Makefile dla celów all i install. Oto przykład jak taki plik mógłby być skonstruowany. # Przykładowy Makefile dla sterowników pisanych przez osoby trzecie FILES = sample_cs.mk README.sample_cs \ modules/sample_cs.c modules/sample_cs.h \ etc/sample etc/sample.opts man/sample_cs.4 all: $(MAKE) -C modules MODULES=sample_cs.o install: $(MAKE) -C modules install-modules MODULES=sample_cs.o $(MAKE) -C etc install-clients CLIENTS=sample $(MAKE) -C man install-man4 MAN4=sample_cs.4 dist: tar czvf sample_cs.tar.gz $(FILES) Plik ten używa celów install zdefiniowanych w pakiecie PCMCIA 2.9.10 i późniejszych. Zawiera on także cel "dist" dla wygody autora sterownika. Przypuszczalnie będziesz chciał dodać numer wersji do ostatecznego pakietu (np. sample_cs-1.5.tar.gz). Pełna dystrybucja mogłaby wyglądać tak: sample_cs.mk README.sample_cs modules/sample_cs.c modules/sample_cs.h etc/sample etc/sample.opts man/sample_cs.4 Z takim układem katalogów, po rozpakowaniu sterownik staje się częścią głównej dystrybucji. Może korzystać z plików nagłówkowych PCMCIA, tak jak i z możliwości sprawdzania konfiguracji systemu użytkownika i automatycznego sprawdzania zależności tak samo jak "normalny" sterownik klienta. Będę akceptował sterowniki przygotowane zgodnie z tą specyfikacją i umieszczał je w katalogu /pub/pcmcia/contrib na moim serwerze FTP - hyper.stanford.edu. Plik README w tym katalogu będzie opisywał jak rozpakować sterownik pisany przez trzecią osobę. Interfejs sterownika PCMCIA nie zmienił się wiele przez ten czas i prawie zawsze zachowywał wsteczną kompatybilność. Sterownik klienta nie będzie musiał być aktualizowany dla pobocznych wersji w pakiecie głównym PCMCIA. Spróbuję powiadamiać autorów sterowników o zmianach, które wymagają uaktualnienia ich sterowników. 6.5 Od tłumacza. Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny. Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie: B.Maruszewski@jtz.org.pl A możesz tu znaleźć dość dużo może nie błędów, ale konstrukcji, które nie są podobne do języka polskiego. Ale to wszystko dlatego, że jest trochę ciężko przetłumaczyć zdanko z angielskiego jeśli jest obok siebie 4 czy czasami nawet 6 rzeczowników ;) Jeśli zauważysz taki stwór i wpadniesz na lepsze określenie, napisz. Jeśli będzie to w miarę sensowne, to napewno tego nie zignoruję. Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl w katalogu /HOWTO/. Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej. Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl Zmiany w tym dokumencie wprowadzone przez tłumacza to odwołania do polskich serwerów ftp. Następna strona Poprzednia strona Spis treści

Wyszukiwarka

Podobne podstrony:
PCMCIA HOWTO pl 5 (2)
PCMCIA HOWTO pl 1 (2)
PCMCIA HOWTO pl (2)
PCMCIA HOWTO pl
pcmcia howto pl 3
PCMCIA HOWTO pl 4 (2)
pcmcia howto pl 2
PCMCIA HOWTO pl (3)
bootdisk howto pl 8
PPP HOWTO pl 6 (2)
NIS HOWTO pl 1 (2)
cdrom howto pl 1
jtz howto pl 5
Keystroke HOWTO pl (2)
PostgreSQL HOWTO pl 14
printing howto pl 5
debian apt howto pl
Kernel HOWTO pl 12 (2)
XFree86 HOWTO pl (3)

więcej podobnych podstron