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:
probe./etc/pcmcia albo rc.pcmcia.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ć.
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.
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.
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.
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.