SOLVED: Prob. with Memory-Access (Framegrabber)

Thomas Niederreiter (
Sun, 24 Nov 1996 21:56:11 +0100 (MET)


I wrote some days ago about a problem with the programming of a
Its solved! Thanx to anybody who answered me, but nobody got the
real reason.
So I report it here for future usage:

Here are parts of the old message:
>I have a strange problem with programming a simple framegrabber card.
>It uses a memory-area (DOS: c800:0000 - c800:0801) and no io-ports, no
>IRQ, no DMA. Quite simple I thought.
>I "mmap" the area 0xc8000 with a size of 0x802 into an array and
>access now the memory via "buf[offset]".

>But..the strange this is, that I have to initialize the card with
>a DOS-Programm that was shipped with it, in order to get sensible
>values from the memory-area.
>I have the FULL source-code to that DOS-Programm (written in C and
>uses only pokeb and peekb-calls) and I do exactly the same things
>with my linux-program, but It won't work until I booted DOS first and
>run that DOS-Programm. (After that I can even hard-reboot - linux access
>seems to work).
>Is there a linux (I use kernel 2.0.25, 32 MB RAM) system call to
>"unlock" a certain memory-area used by an ISA-Card? (from user-space).
>Strange is, that the write-speed is same speed as DOS shows, but reads
>are MUCH faster (10 times or something like that) when card is not initialised.
>If I run the DOS-Programm first it works and read/write speed is the same.

Well..the real problem causer was in the System-BIOS!
There you can enter in the PCI/PNP-Setup a
ISA-MEM-BASE and SIZE. As I entered C800 with size 8k everything worked!!
DOS simply ignored PCI-Setup, but Linux seems to be picky here.

I don't know if this is in any FAQ, but I just wanted to tell.

Thanx for helping,


___ ___
/ | \ ___________ | REAL : Thomas Niederreiter: Munich, Germany
/ ~ \/ _ \_ __ \ | EMAIL :
\ Y ( <_> ) | \/ | MUD/IRC: Hor/_Hor
\___|_ / \____/|__| |
\/ All I want is a warm bed and a kind word and unlimited power
-- Ashleigh Brilliant