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 plpcmcia howto pl 3PCMCIA HOWTO pl 4 (2)pcmcia howto pl 2PCMCIA HOWTO pl (3)bootdisk howto pl 8PPP HOWTO pl 6 (2)NIS HOWTO pl 1 (2)cdrom howto pl 1jtz howto pl 5Keystroke HOWTO pl (2)PostgreSQL HOWTO pl 14printing howto pl 5debian apt howto plKernel HOWTO pl 12 (2)XFree86 HOWTO pl (3)więcej podobnych podstron