RTEMS sound device driver

Aaron J. Grier aaron at frye.com
Fri Feb 8 00:09:39 UTC 2002


On Fri, Feb 08, 2002 at 12:02:33AM +0100, Pattara Kiatisevi wrote:

> But how exactly is this "registering" process? I took a look at the
> existing driver code as suggested and draft the steps as follow.

rtems_io_register_name binds a name in filesystem space to the device
driver.

> -I create a file contained device driver's code: sound-driver.c
> 	-Which should contain initialize(), open(), close(), read(),
> write(), and control(). Arguments of these functions = like in console.c?

yes.

> 	-In the initialize() I would have sth. like:
> 
> 	rtems_io_register_name( "/dev/dsp", major, 0 );
> 
> -In my application file, I do open(), ioctl(), write(), close() to
> /dev/dsp as usual.

you understand correctly.

> -And then how can I tell RTEMS to call this sound device driver when there
> is access to /dev/dsp?

after registering the device with rtems_io_register_name, you can
perform standard operations like open(), close(), lseek(), dup(), etc.
on your file.  RTEMS handles the "mid level" between these calls and
your device driver calls.

> Something to do with #def CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE and I
> have to create my own Device_drivers? (Hmm, but how and where? :) )

look at c/src/lib/include/console.h.  you define a table entry, and the
extern declarations for your driver entry points, then somewhere in your
confdefs.h:

#define CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE

#include <console.h>

rtems_driver_address_table Device_drivers[] = {
        CONSOLE_DRIVER_TABLE_ENTRY,
        { NULL, NULL, NULL, NULL, NULL, NULL }
};

getting everything glued in to autoconf/automake so that they will be
compiled and linked into your BSP is a whole other story.  :)  let us
know if you need help with that.

-- 
  Aaron J. Grier  |   Frye Electronics, Tigard, OR   |  aaron at frye.com
     "In a few thousand years people will be scratching their heads
       wondering how on earth the first computer was invented and
          bootstrapped without a prior computer to do it with."
                    --  Chris Malcolm, on comp.arch



More information about the users mailing list