prędkość machania LPT

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.

Reply to
J.F.
Loading thread data ...

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.

Reply to
Sebastian Biały

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

Reply to
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ę.

Reply to
Sebastian Biały

Z tego co pamiętam, to konstrukcja jest taka, że nawet bezpośrednie pisanie do portu powoduje wygenerowanie sekwencji z zachowaniem czasów.

Reply to
RoMan Mandziejewicz

To, co opisywałem to port IBM-XT z początku lat 80tych ub. stulecia. Myślisz, że jest gorzej?

Waldek

Reply to
Waldemar Krzok

Niemal na pewno nie ma juz tych driverow. Jest jakis chip, w technologii cmos ..

J.

Reply to
J.F.

Nie w podstawowym porcie - tam wszystko programowo.

A spowalniania sie procesor na samym rozkazie out.

J.

Reply to
J.F.

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ż.

Reply to
Sebastian Biały

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

Reply to
Mateusz Viste

Na mojej starej plycie multiIO z AT byl driver LS573.

Reply to
T.M.F.

Tutaj masz dr dosa i kupe narzędzi, wypal płytke i testuj :)

formatting link

Reply to
JanuszK

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.

Reply to
Adam Dybkowski

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.

Reply to
Verox

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.

Reply to
Verox

dawno nie ogladalem zrodel Linuxa, ale w Unixie outb powodowalo exeption, ktore bylo przechwytywane i dopiero w kernelu mapowane na "prawdziwe" outb.

Waldek

Reply to
Waldemar Krzok

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

Reply to
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 :)

Reply to
Sebastian Biały

A spróbuj wsadzić kartę LPT na PCI - są dostępne w sklepach i to pod nazwą Multi IO ;)

Mirek.

Reply to
Mirek

a) nie mam miejsca b) po co? To tylko ciekawostka, wieksza prędkość osiągnę inaczej.

Reply to
Sebastian Biały

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.