public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: mark gross <mgross@linux.intel.com>
To: Jonathan Cameron <Jonathan.Cameron@gmail.com>
Cc: linux-kernel@vger.kernel.org,
	LM Sensors <lm-sensors@lm-sensors.org>,
	spi-devel-general@lists.sourceforge.net
Subject: Re: Accelerometer, Gyros and ADC's etc within the kernel.
Date: Tue, 20 May 2008 10:50:41 -0700	[thread overview]
Message-ID: <20080520175041.GA30909@linux.intel.com> (raw)
In-Reply-To: <4832A211.4040206@gmail.com>

On Tue, May 20, 2008 at 11:04:01AM +0100, Jonathan Cameron wrote:
> This email is basically a request for opinions on how and where such 
> sensors
> should be integrated into the kernel.
>
> To set the scene...
>
> Increasing numbers of embedded devices are being supplied attached MEMS
> devices (www.xbow.com imote2 etc). Along with more traditional sensors such
> as ADC's not being used for hardware monitoring, these do not really seem 
> to
> fit with in an particular subsystem of the kernel.  A previous discussion 
> on
> lkml in 2006 considered the accelerometers to be found within some laptop
> hard drives, but I haven't been able to track down any more general 
> discussions
> of such non hardware monitoring sensors.
>
> The obvious possibilities are:
>
> * To place the various drivers within the spi / i2c etc subsystems as 
> relevant.
>
> * To place within the hwmon subsystem as this is probably closest.
> (there is already at least one straight ADC driver in hwmon)
>
> * To create a new subsystem, or perhaps merely sysfs class to contain these
>  elements.
>
> Typical requirements within an application include simply polling for 
> current
> readings, and using device triggered interrupts to grab data continuously 
> to a
> ring buffer, for collection by suitable userspace code.  Obviously it would 
> be
> desirable to standardize sysfs controls for various calibration parameters 
> as
> much as possible across the various devices.
>
> Any other suggestions welcome!
>
> To illustrate the sort of devices here are a few I have drivers written for 
> or will
> shortly be writing  (some submitted to hwmon and spi mailing lists, some 
> not
> finished as of yet)
>
> ST Micro LIS3L02DQ 3D accelerometer.  SPI device, no buffering, interrupt 
> pin
> raised high on new data being available. Currently the driver assumes, if
> interrupts are enabled, that this is connected to a specified gpio.
> (http://www.st.com/stonline/books/pdf/docs/10175.pdf)

FWIW: I have this device talking to a PIC-18 and pushing the results
over the serial port.

WRT linux support, I can't think of a generalized way to create a driver
that would be able to be used with this device in Linux.  You need to
know witch IRQ line the DR line is connected too, and if you are
bit-banging the SPI data off the thing, then you need to know which
GPIO's of the host CPU you'll be using.  If you have SPI hardware then
you need to know where to pull the data from.  The problem doesn't seem to
generalize well.

Also, If you are playing with accelerometer data, you likely need some
real time support or at lest a reliable time stamping of the data to do
anything interesting.

Another problem area is around SPI itself.  There are variations of
device implementations around chip select polarity, clock biasing
(rising,falling, or midpoint) sampling from one SPI part to the next.

> VTI SCA3000 E05 3D accelerometer equiped with substantial ring buffer. SPI
> device.  Can operate either in buffered or direct mode.  In buffered mode, 
> interrupts
> can be used to indicate when the ring buffer is 3/4 full triggering a 
> download to
> a larger ring buffer in the kernel if necessary.
> (http://www.vti.fi/en/products-solutions/products/accelerometers/sca3000-accelerometers/)
>

ring buffered data can make RT applications harder...

> Analog Devices ADIS16350 combined 3D accelerometer and gyro unit.  SPI 
> device.
> (http://www.analog.com/en/prod/0,,764_801_ADIS16350%2C00.html)
>
> Maxim MAX1363, MAX1238 ADC's.  I2C devices. Some SPI ADC's (www.analog.com 
> for
> examples)
>
> Would be nice if practical to allow the framework to include RS232 devices 
> such
> as those from www.xsens.com, www.isense.com and others.


I'm not sure what you are asking for, you started off with SPI driver
for interfacing a handful of accelerometer devices.  Now your talking
about the serial port.

Besides the consumer of accelerometer data is user space applications
(mine attempt to be somewhat RT applications) 

--mgross


  parent reply	other threads:[~2008-05-20 17:43 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-20 10:04 Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-20 11:28 ` Jean Delvare
2008-05-20 21:40   ` Hans J. Koch
2008-05-21 10:04     ` Jonathan Cameron
2008-05-21 13:20       ` Jean Delvare
2008-05-21 13:49   ` Dmitry Torokhov
2008-05-21 14:09     ` Henrique de Moraes Holschuh
2008-05-27 17:16     ` [spi-devel-general] " Ben Dooks
2008-05-27 19:01       ` Dmitry Torokhov
2008-05-22  0:52   ` David Brownell
2008-05-22  9:35     ` [spi-devel-general] " Jonathan Cameron
2008-05-26 16:23       ` Jonathan Cameron
2008-06-26 18:01   ` Accelerometer etc subsystem (Update on progress) Jonathan Cameron
2008-06-26 18:26     ` Jonathan Cameron
2008-06-27  2:39     ` Randy Dunlap
2008-06-27  3:29     ` Ben Nizette
2008-06-27  9:45       ` [lm-sensors] " Jonathan Cameron
2008-06-28  8:34         ` Ben Nizette
2008-06-28 15:34           ` Jonathan Cameron
2008-05-20 17:50 ` mark gross [this message]
2008-05-21  9:40   ` [spi-devel-general] Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-27 15:43     ` mark gross
2008-05-29 11:57       ` Jonathan Cameron
2008-05-22  0:53   ` David Brownell
2008-05-27 15:56     ` mark gross
2008-05-27 23:42       ` David Brownell
2008-05-27 16:44 ` [spi-devel-general] " Anton Vorontsov
2008-05-27 16:50   ` Ben Dooks
2008-05-27 17:01     ` Anton Vorontsov
2008-05-27 18:00     ` Jonathan Cameron
2008-05-27 18:12       ` Ben Dooks
2008-05-27 17:59   ` Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080520175041.GA30909@linux.intel.com \
    --to=mgross@linux.intel.com \
    --cc=Jonathan.Cameron@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lm-sensors@lm-sensors.org \
    --cc=spi-devel-general@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox