Drukuj
Gwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywnaGwiazdka nieaktywna
 

Wielu ludzi tęskni za czasami, kiedy na pecetach królował MS DOS. System ten był bardzo ubogi w porównaniu z dzisiejszymi wersjami Windows. Nieistniejąca strona graficzna, żałosny system plików, konieczność wprowadzania komend z konsoli, słowem koszmar dla typowego użytkownika.

DOS miał jednak coś czego próżno szukać we współczesnych produktach Microsoftu: prosty i bezpośredni dostęp do portów. Ileż to urządzeń można było wysterować z peceta poprzez port szeregowy! Prosty programik w pascalu i już silnik krokowy w laserze przesuwał siatkę dyfrakcyjną, dwie godziny pracy i już interferometr przesyłał dane na komputer.
Każdy z odrobiną zacięcia inżynierskiego mógł szybko i tanio zmusić komputer do harówki w pokoju hobbysty albo w laboratorium naukowym.

DOS’a już nie ma. Laboratoria zostały. Dzisiaj wprawdzie sprzęt laboratoryjny jest dostarczany razem z odpowiednim oprogramowaniem pod Windows XP lub Vistę, ale co to za laboratorium naukowe, którego potrzeby może przewidzieć programista z drugiego końca świata i to kilka lat naprzód?

Doświadczalnik ma dziesiątki pomysłów miesięcznie, które trzeba na bieżąco sprawdzać eksperymentalnie. Często oznacza to niestandardowe zastosowania sprzętu, którym dysponuje. Czasami potrzeba zmodyfikować oprogramowanie. Co wtedy?

Ja mówię KLAPA!

Oprogramowanie jest zamknięte i wgląd w kod źródłowy ma tylko producent. Proszę spróbować go namówić, żeby szybko i za darmo dostosował je do naszych potrzeb.
No cóż, przynajmniej można sprawdzić czy ma poczucie humoru ...

Dla większości użytkowników posługiwanie się tzw. czarnymi skrzynkami czyli zamkniętym oprogramowaniem ma same zalety. To jednak nie dotyczy inżynierów ani naukowców.

I tutaj przedstawię jak to było z uruchamianiem karty pomiarowej w laboratorium Instytutu Fotonowego. Karta pomiarowa to urządzenie, które połączone z komputerem zbiera dane z jakiegoś detektora.

Na początku kupiliśmy bogato wyposażoną kartę renomowanego producenta
z oprogramowaniem pod Windows. Dużo pieniędzy, mizerny efekt.
Oprogramowanie oczywiście niewystarczające dla naszych potrzeb, nauka API i pisanie własnych programów – kilka tygodni. A na koniec szumy i zakłócenia samej karty tak duże, że sygnał z detektora był bezużyteczny.

Wtedy wpadliśmy na genialny pomysł: Zróbmy własną kartę pomiarową! Przecież to proste. Wystarczy kilka części elektronicznych. Zamiast wpychać kartę pod obudowę komputera, gdzie zakłócenia są duże, dołóżmy jej interfejs USB i wystawmy całą na zewnątrz. Dodatkowo będzie można ją używać z laptopa! Hurraaa! Do roboty!

No i faktycznie. Po kilku tygodniach prototyp karty był gotowy. Karta dosyć szybka, trzeba odbierać kilka megabajtów danych na sekundę. Ale przecież USB 2.0 obsługuje do 60MB/s.
Odpalamy urządzenie pod Windows XP. Działa ślicznie. Jest sygnał, szumy malutkie, transfer wystarczający, ale jakieś rytmiczne skoki ... hmmm w sygnale. Pewnie błąd w naszej aplikacji albo coś w laboratorium zakłóca kartę. Bliższe spojrzenie na zebrane dane, i o zgrozo... są dziury! Część danych nie dotarła do komputera.

Okazało się, że obsługa USB w Windows ma przerwy w transferze danych. Jeśli dane nie są gromadzone na karcie to taka przerwa oznacza ich bezpowrotną stratę.

Trochę głupia sprawa. Potrafiliśmy zbudować kartę pomiarową, a nie potrafimy jej oprogramować. Ludzie po doktoratach, komputerowi guru ... eech.

W odruchu rozpaczy chcieliśmy nawet zapłacić profesjonalistom od sterowników pod Windows, aby nam pomogli. Kilka miesięcy poszukiwań i żaden nie potrafił tego zrobić. Wglądu w kod źródłowy Windows XP oczywiście nie ma. Rozbudowywanie tak szybkiej karty o dodatkowy bufor pamięci jest trudne, drogie i bez sensu. Przecież na przyłączonym komputerze jest wystarczająco dużo taniej pamięci, wystarczy ją wykorzystać.

Sytuację uratował Linux.

Zajęło mi dwa tygodnie intensywnego szukania w google i przeglądania źródeł kernela, żeby nauczyć się pisania modułów linuksowych, zrozumieć sposoby obsługi USB i wreszcie napisać własny moduł, który nie tylko nie gubił danych z naszej karty pomiarowej ale jeszcze osiągał transfer 80 MB/s, o 20MB/s więcej niż maksymalny dopuszczalny dla USB 2.0.

To było na wiosnę 2008. Teraz jesteśmy chyba jedynym na świecie producentem kart pomiarowych dedykowanych pod Linuksa.

W naszym laboratorium nie ma już ani jednego peceta z Windows. Wszystkie są okupowane przeróżnymi dystrybucjami Linuksa do testowania uniwersalności naszego oprogramowania.

Zbigniew Karkuszewski
Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.
www.instytutfotonowy.pl

Odsłony: 1854