public inbox for ecos-devel@sourceware.org
 help / color / mirror / Atom feed
From: Chris Holgate <chris@zynaptic.com>
To: GaurangT <gtamakuwala@intriguetechsolutions.com>
Cc: ecos-devel@ecos.sourceware.org
Subject: Re: Updated version of the STM32 USB driver.
Date: Mon, 08 Jun 2009 10:15:00 -0000	[thread overview]
Message-ID: <4A2CE4C2.9010108@zynaptic.com> (raw)
In-Reply-To: <23867737.post@talk.nabble.com>

GaurangT wrote:
> Hi Chris,
> 
>        I tried your latest STM32 driver and was successfully add USB
> slave-side serial drivers package.
> when I select enable control the endpoint 0 and enable all usb slave serial
> support in configtool.
> What is defined data structure in USB IN and OUT endpoint structure in stm32
> evel board.

This was discussed a while ago here...

http://ecos.sourceware.org/ml/ecos-devel/2009-05/msg00033.html

In summary, while you can just use something like &usbs_at91_ep1 to get
a pointer to endpoint one of a driver with statically assigned fixed
endpoints, with the STM32 you need to use an 'endpoint getter' function
to return the pointer.  The 'endpoint getter' functions only return
valid endpoint pointers once the USB device has been configured by the host.

So for OUT endpoint 1 it would be a case of replacing...

&usbs_at91_ep1

with...

cyg_usbs_cortexm_stm32_rx_endpoint(1)

This results in me having to use knarly code like the following in my
own class driver:

#if (defined CYGPKG_DEVS_USB_AT91)
#include "cyg/io/usb/usbs_at91.h"
#define  EP1_DATA_STRUCT &usbs_at91_ep1
#define  EP1_INIT_FUNC   usbs_at91_endpoint_init

#elif (defined CYGPKG_DEVS_USB_CORTEXM_STM32)
#include "cyg/io/usb/usb_stm32.h"
#define  EP1_DATA_STRUCT cyg_usbs_cortexm_stm32_rx_endpoint(1)
#define  EP1_INIT_FUNC(_args_...) {}

And then I can use something like:

usbs_start_rx_buffer (EP1_DATA_STRUCT, cmd_buf, MAX_FRAME_SIZE,
completion_handler, 0);

Unfortunately the CDL settings for the serial class driver currently
require you to specify static endpoint names, so it will not work out of
the box with the STM32 driver.

> If I mention default data structure,I got compile error (like undefined
> reference to usbs_at91_ep1 and usbs_at91_ep2)  in usb2serial test program. 

Hopefully the above information explains why this is and what you would
need to do to fix it.  We are stuck with this approach of exposing the
low-level driver API for any drivers which are compatible with the
release 3.0 USB framework.  However, it would be nice to clean this up
for future versions.

Chris.

  reply	other threads:[~2009-06-08 10:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-01  9:52 Chris Holgate
2009-06-04 11:00 ` GaurangT
2009-06-08 10:15   ` Chris Holgate [this message]
2009-06-09 11:44     ` GaurangT
2011-05-17 11:16       ` Sunder819

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=4A2CE4C2.9010108@zynaptic.com \
    --to=chris@zynaptic.com \
    --cc=ecos-devel@ecos.sourceware.org \
    --cc=gtamakuwala@intriguetechsolutions.com \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).