[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] Mem. mapped I/O



Mads Andresen wrote:
> 
> Hej Liste
> 
> >Hvorfor vil du ikke skrive en driver? Det er det mest naturlige når
> du
> >har med et stykke hardware at gøre at adskille dit program i en
> hardware
> >driver kernemodul, og et applikationsprogram. Ikke at forglemme den
> >varme og bløde følelse man får af kerne programmering ;-)
> 
> >
> >Desværre er kortet ISA. At programmere disse er som at få lavet
> >rodbehandling og rygmarvsbiopsi på samme tid :( Ihvertfald
> sammenlignet
> >med PCI.
> 
> Ja jeg tænkte nok den ville komme;-)
> 
> Det er dette CAN-modul jeg bruger:
> http://www.advantech.com/epc/products/pcm3680.htm
> 
> Det er et PC-104 modul - det er derfor vi bruger ISA-bussen! Jeg gik
> bare ud fra at det ville glide lettere ned når jeg skrev ISA-bus.

Det forstår jeg ikke helt. Der er heller ikke nogen ISA konnektor på
kortet?

> APPLIKATIONEN:
> Jeg bruger et realtids-patch til linux kernen (www.rtlinux.org) - så
> man kan lave nogle realtids-processer der kommunikerer med
> ikke-realtids-processer gennem shared-mem. eller nogle RT-Fifo'er.
> Mit mål er at lave en RT-proces der poller på CAN-modulet med en eller
> anden samplingfrekvens (måske 250 hz).
> Mit krav det er real tid og RT-processerne kan ikke bruge alm. device
> drivere (da RT-processer selv kører i kernelmode - RTLinux har magten
> over maskinen og kan preempte alle andre processer).
> Derfor bruger jeg ikke device driver.

Ahh, det skulle du have sagt. RT processor skrives jo som kernemoduler,
og er derfor i den forstand næsten ækvivalente med alm. device drivere.
Dvs. du kan bruge readb/writeb oa. ligesom i device drivere.
 
> >Jeg kunne ikke helt se det af din beskrivelse, men hvis hukommelses
> >området ligger imellem 640kb-1MB området, ligesom fx. VGA
> textbufferen,
> >så er det ikke svært.
> 
> Ja der er her mit problem er! Hvordan ser jeg det?? Jeg har kun en
> MEGET dårlig manual (pjece). Det vildeste der står er en hel tabel med
> DIP-switch conf.
> 
> Address    A12    A13    A14    A15    A16    A17
> C800H        on        on        on        off    on        on
> C900H        off        on        on        off    on        on
> CA00H        on        off        on        off    on        on
> .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
> .  .  .  .
> .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
> .  .  .  .
> .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
> .  .  .  .
> EF00H        off         off        off         off    on        off
> 
> >
> >Du skal blot benytte readb/writeb funktionerne til at tilgå
> hukommelsen
> >direkte. Det skyldes at dette område altid er reserveret, og ikke
> bruges
> >til alm. hukommelse,.
> 
> Der er også nogle der hedder inb og outb - men de bruges hvis det er
> I/O port addresser - har jeg forstået det rigtigt???

Ja. 

> Skal jeg ikke gøre noget i programmet for at mappe kortet ind i
> hukommelsen??

Nej, det er kun ved PCI dette er nødvendigt, da PCI kort har hukommelse
mmap'ed i det høje addresseområde.

> Eller kan jeg bare tilgå det direkte, når jeg har sat DIP-switchene??

Ja. Som sagt er de 384kb fra 640kb-1MB reserveret. Dvs. at ramklodserne
der sidder i MB'et, slet ikke bliver tilgået i dette område. Hardwaren
router disse addresser ud på ISA bussen. Du skal bruge readb/writeb,
idet addressen OR'es med en PAGE_OFFSET (noget med hukommelses layoutet,
se /usr/include/asm/io.h)
 
> >Hvis addressen ligger i området 14-16MB, så er du på numser,
> medmindre
> >du har mindre end 14MB ram i maskinen, eller laver skumle
> kerne-hacks.
> >Da kortet er et CAN bus kort, lyder det til at være af nyere dato, så
> >det bruger nok ikke dette område.
> 
> Det tror jeg heller ikke.
> 
> >"Linux Device Drivers" af Allesandro Rubini er en rigtig god bog,
> omend
> >den mest omhandler 2.0.x kerner, så er der forklaring til hvad der er
> >anderledes i 2.1.43+
> 
> Den har jeg faktisk - men jeg mangler stadig lidt starthjælp;-)

Kig på side 170-176, der står faktisk meget af det jeg har skrevet.
Problemet er at finde hukommelsesområdet. At dømme efter addresserne
ligner det nu I/O porte for mig.
 
Mvh Morten


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:07 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *