I2C Serial Port in Squeak
Ned Konz
ned at squeakland.org
Fri Oct 29 20:53:01 UTC 2004
On Wednesday 27 October 2004 8:45 am, Jon Hylands wrote:
> I have a question for the VM guys -- I'm planning on using an I2C bus on my
> next autonomous robot, and the Squeak machine I'm going to use
> (www.gumstix.com) has a hardware I2C interface, with a driver for it in
> Linux. As far as I can tell, the I2C port looks just like another device in
> Linux, so I'm hoping I can just use the serial port with a different com
> port #.
>
> Any thoughts?
Yes. It won't work. You'll have to use FFI or write a plugin.
I'd probably try using FFI first and only write a plugin if you absolutely
*have* to.
For one thing, the i2c doesn't look like serial, because of the address/data
separation (each i2c message has an address and a direction), the
master/slave separation, and the concept of messages.
I wrote a Linux kernel driver for an i2c interface, and also a Perl module for
i2c on Linux at one point. Using the 'net as my backup device since I can't
find it on my system any more, I find:
http://perlmonks.thepen.com/99568.html
It appears to concentrate on SMBus, which is a protocol on top of I2C that
smart batteries, etc. use. But it might be enlightening if you can stand the
Perl. Just substitute the non-smbus functions for the smbus ones I used.
It's easiest to look at the files in linux-whatever/Documentation/i2c/ if you
want to do this stuff. Just download the corresponding kernel source file.
The most useful is Documentation/i2c/dev-interface because it outlines what
the i2c-dev module provides as the interface for the /dev/i2c* devices. It
even gives a complete userspace example in C.
That's what I worked from to do the Perl driver.
Note that it helps to have a digital storage scope, or at least a
microcontroller set up to dump i2c bus information to a serial port.
--
Ned Konz
http://bike-nomad.com/squeak/
More information about the Squeak-dev
mailing list
|