I need to move a lot of data from an ADNS-3080 to an 8051 class microcomputer, out to an x86 computer running windows or linux.
Here's my problem:
I've never written device drivers before. I need to make a windows driver or a linux kernel module that will allow me to capture video, and then write the appropriate code on the 8051 microcomputer to interface with that driver.
Anybody know of a good resource for a driver writing newbie?
Thank you sir, those look like excellent information sources.
I know this is a Linux forum, but does anybody know about the flip side of the computing coin? I'm hoping to be able to have support in both Windows and Linux.
If you bought Windows you've also bought support for it. Try those channels instead.
Rofl. Nobody at MS tech support is going to know anything about device drivers! The extent of their knowledge will be "That seems like a driver problem, please content the developer of the driver." ;-)
I've started reading the linux information posted above, and so far this is really a lot simpler than I thought it would be. I've given up trying to do the windows route. I just installed arch on my logic lab computer, triple boot with win98 and winxp.
btw, in case anybody cares, here's my setup. Upper left is a 5v homebrew power supply. Middle left is the 8051 class computer, complete with external flash, ram, and port expander. Middle is a simple breadboard for various glue. Lower right is a freebie mouse from an AMD tech tour, based on an ADNS-2051 chip.
And here's what coarse grained cloth looks like to an optical mouse:
It's the crossing of two threads, the white spot is the high point at the overlap.
woah... optical mouse tricks? what are you doing exactly, I'm curious... if you're doing alot of signal processing, I'd suggest a more specific DSP chip over a general computer... the TIs are good for that
Nah, not doing any signal processing onboard. The 8051 is just acting as a data shuffler from the ADNS to a standard x86 computer. Agilent ADNS chips operate on a very simple serial bus. The pictured ADNS-2051 uses a clock line and a data line (bidirectional) for communication. A read/write bit followed by seven address bits followed by a 100us pause followed by eight bits establishes the clock and address. Depending on read or write, the next eight bits on the data line are controlled by the 8051 for writes and the ADNS for reads.
The ADNS-3080 has separate TX and RX lines that make this work a little easier, so I would no longer need a CTS switch.
Anyway, I work in a metallurgy lab. We're researching the flow of metals through grooves, and how geometry and chemical diffusion (and thus alloy drift) affect flow velocities. Right now I'm using a standard CCD video camera on a C mount to capture video of events. I max 50 fps of uncompressed video - damned huge. I can't capture more than 750 frames before my system needs to flush its buffers.
The problem with this system is that flow events are not completely predictable (by visual inspection) and so capturing the flow through the groove isn't guaranteed, because I have to pounce the spacebar to start capturing, and I have a limited capture window. What's more, is that the stream of data is huge, and only a very small portion of the data is useful. Finally, at 50 fps, I only get between 4 and 6 data points.
The ADNS-3080 can capture 6400 fps, and its serial bus is fast enough to communicate a useful portion of those. I haven't been real precise about calculating exact framerate yet. Each frame is exactly 1 KB of pixel data, and it's more data than the parallel port can handle. At greater framerates and smaller resolutions, I should be able to get up to 32 data points with much greater timing precision.
I'll have a program on the host computer reading the images and stitching them into video, which I will then analyze on the host machine.
A fun project!