Ktorys wczesny chyba nawet na 360.
Ale w sumie to Ty chcesz prosty program wygenerowany, nie TC.
Mozna tez przygotowac CD startujacego i kopiujacego do ramdysku ..
J.
Ktorys wczesny chyba nawet na 360.
Ale w sumie to Ty chcesz prosty program wygenerowany, nie TC.
Mozna tez przygotowac CD startujacego i kopiujacego do ramdysku ..
J.
Ok. Coś tam wymyślę. Jestem bardzo ciekaw, ale musze znaleźc troche czasu i nerwów zeby zajmowac się znowu "systemami operacyjnymi" CP/M yyy, znaczy ... MSDOS.
Nie musi. Program napisz i skompiluj w DOSemu, a na dyskietkę wrzuć tylko gotowy programik + jądro FreeDOS'a z interpreterem komend. :)
Pozdrawiam, Mateusz Viste
O nie nie, być moze będe chciał się pobawić :) W każdym razie nie ma sensu dyskutować, zrobie sobie taką możliwość i sprawdzę.
Z tego co pamiętam, to konstrukcja jest taka, że nawet bezpośrednie pisanie do portu powoduje wygenerowanie sekwencji z zachowaniem czasów.
To, co opisywałem to port IBM-XT z początku lat 80tych ub. stulecia. Myślisz, że jest gorzej?
Waldek
Niemal na pewno nie ma juz tych driverow. Jest jakis chip, w technologii cmos ..
J.
Nie w podstawowym porcie - tam wszystko programowo.
A spowalniania sie procesor na samym rozkazie out.
J.
Na wyrzucanej niedawno 3-letniej płycie wszystkie druty sygnałowe LPT wchodziły do dużego chipa. Opis w google nieznany. IMHO optymalizuja co się da, przecież RS232 już dawno "zoptymalizowano" do +5/-5V. Czemu z LPT ma byc inaczej? Robi się, zeby dzialalo na aby aby i już.
Oj dlaczego od razu MS do tego mieszać! :)
Dyskusja mnie na tyle zaciekawiła, że sam przeprowadziłem test. W QuickBASIC'u napisałem następujący programik:
DIM x AS LONG DIM StartTime AS DOUBLE DIM EndTime AS DOUBLE StartTime = TIMER FOR x = 1 TO 2000000 OUT &H378, 1 OUT &H378, 0 NEXT x EndTime = TIMER PRINT "Przeprowadzono 2'000'000 cykli w czasie: "; EndTime - StartTime; "s" PRINT "Szybkosc: "; 2000000 / (EndTime - StartTime) / 1000; "KHz"
Wynik jaki otrzymałem to 332KHz. Procesor Pentium III. Wynik jest niezależny od tego, czy załaduję EMM386 czy nie (spodziewałem się spowolnienia z EMM386, a tu nic...). :-)
Pozdrawiam, Mateusz Viste
Na mojej starej plycie multiIO z AT byl driver LS573.
Tutaj masz dr dosa i kupe narzędzi, wypal płytke i testuj :)
J.F. pisze:
No wiesz, producenci płyt głównych od dawna wieszczą koniec LPT. I w gruncie rzeczy mają rację - drukarek z takim portem się już nie robi, a i programatorek AVRów na USB można zrobić samemu bardzo tanio (z USB realizowanym programowo na ATtiny). Albo kupić nieco lepszy z FT232R i AFAIR Atmegą 8.
On Thu, 13 Aug 2009 16:11:19 +0200, Sebastian Biały napisał:
przestaw sheduler na real-time:
sched_fifo_min = sched_get_priority_min(SCHED_FIFO); sched_fifo_max = sched_get_priority_max(SCHED_FIFO); sched_parms.sched_priority = sched_fifo_max - 1; // Najwyzszy mozliwy
if (0 != sched_setscheduler(getpid(), SCHED_FIFO, &sched_parms)) perror("cannot set realtime scheduling policy");
Powinno pomóc.
On Thu, 13 Aug 2009 17:52:53 +0200, Waldemar Krzok napisał:
Ale on macha nóżką, przez outb(). Problemem jest tutaj scheduler. Jasne że lepiej i bez niepotrzebnego czekania można to zrobić w przestrzeni jądra.
dawno nie ogladalem zrodel Linuxa, ale w Unixie outb powodowalo exeption, ktore bylo przechwytywane i dopiero w kernelu mapowane na "prawdziwe" outb.
Waldek
Chyba jednak nie ma :)
Patrz mój post snipped-for-privacy@mail.viste-family.net>. Programik DOSowy (w trybie real mode) zdołał wygenerować na PIII 450 MHz niewiele więcej - 332 KHz...
Pozdrawiam, Mateusz Viste
Podsumowanie uzyskanych predkości machania mojego LPT:
a) Linux - 290kHz b) Windows - 291kHz c) DOS - 297kHz
Wszystko wskazuje na to ze hardware haltuje CPU na określony czas przy dostepie do tego portu.
Jeśli mapowanie portów coś tu miesza, to jest to te 6-7kHz różnicy, czyli tyle co nic.
Moj ISA bridge to ATI SB600. Ku przestrodze :)
A spróbuj wsadzić kartę LPT na PCI - są dostępne w sklepach i to pod nazwą Multi IO ;)
Mirek.
a) nie mam miejsca b) po co? To tylko ciekawostka, wieksza prędkość osiągnę inaczej.
Have something to add? Share your thoughts — no account required.
Ask the community — no account required