[lkml]   [2001]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: Should I use Linux to develop driver for specialized ISA card?
On Tue, 4 Sep 2001, Rastislav Stanik wrote:

> Hi,
> I'd like to know your opinion on following problem:
> I'm developing specialized plotter.
> The moving parts of the plotter are controlled by ISA card that generates
> (and responds to) interrupts on each movement or printing event.
> The interrupts can be generated quite fast; up to frequency of 4kHz.

Linux drivers have no problem with interrupt-rates up to about 150,000
per second if the CPU is 130 MHz or faster and the ISR is small.

> I need to write a driver for that.
> The 1st prototype is developed in MS-DOS,but I hit problem with memory.
> The driver needs to use (and transfer) quite big chunks of memory.
> 1MB is not enough.

Normally, a Linux driver implements open/close/read/write/poll/ioctl. It
transfers chunks of data so the large memory allocations are in
user-space while the chunks are small buffers in kernel space.

> In NT you don't develop drivers so easily. It is actually a pain.
> Therefore I'm considering Linux. The machine would be probably
> dedicated and, may be later, embeded in the plotter.
> Problems:
> - It is unlikely that my driver would ever make it to main-stream kernel source.
> - I'm just a C/C++ programmer, I have just rough idea what does it mean to
> 'develop a driver in Linux'. I'm pretty familiar with Linux as sys-admin though.

Linux drivers are quite straight-forward and they can be inserted/removed
from a running kernel (modules). This makes development run very quickly
beause you can make small portions, test them, make more, etc., without
ever having to re-boot. As long as you write code that behaves, i.e., no
buffer overflows, and proper data allocation/deallocation, you will
never have to re-boot.

> All I need is: to have piece of code executed on some interrupt,
> read/write IO ports of the card and be able to transfer big pieces
> of memory to the card.

> What do you think? Is Linux the ideal platform for me?

It's ideal. But, you have to start thinking like a Linux/Unix
programmer. For instance, you do not allocate large buffers inside
the kernel, you use poll() or select() to let user-mode code know
that some event (like an interrupt) occurred so you can get/put
data using read() or write(). You use ioctl() to send/receive
control information to your device.

Dick Johnson

Penguin : Linux version 2.4.1 on an i686 machine (799.53 BogoMips).

I was going to compile a list of innovations that could be
attributed to Microsoft. Once I realized that Ctrl-Alt-Del
was handled in the BIOS, I found that there aren't any.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:02    [W:0.175 / U:0.448 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site