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