USB controller driver usb_dc_ep_write
Mark Wang
Hi all, I see many USB controller drivers implement usb_dc_ep_write function with one copy, copy the data (passed to usb_dc_ep_write) to one self’s buffer then do the transfer. Do I need do this when implementing one new USB controller driver? Does the Zephyr USB stack limit the data (pass to usb_dc_ep_write) is in RAM? The function prototype is as follow: int usb_dc_ep_write(const u8_t ep, const u8_t *const data, const u32_t data_len, u32_t *const ret_bytes)
Mark Wang Thanks
|
|
Carles Cufi
+ Johann, Andrei, Pawel
From: devel@...
<devel@...> On Behalf Of Mark Wang
Sent: 10 December 2018 13:37 To: devel@... Subject: [Zephyr-devel] USB controller driver usb_dc_ep_write
Hi all, I see many USB controller drivers implement usb_dc_ep_write function with one copy, copy the data (passed to usb_dc_ep_write) to one self’s buffer then do the transfer. Do I need do this when implementing one new USB controller driver? Does the Zephyr USB stack limit the data (pass to usb_dc_ep_write) is in RAM? The function prototype is as follow: int usb_dc_ep_write(const u8_t ep, const u8_t *const data, const u32_t data_len, u32_t *const ret_bytes)
Mark Wang Thanks
|
|
Loic Poulain
On Tue, 11 Dec 2018 at 12:28, Cufi, Carles <carles.cufi@...> wrote:
There is no requirement to copy the data, but usually, usb device drivers copy the data to the controller FIFO.
There is no defined data size limit when calling the function, but at
then end, driver decides how much data is written (e.g. size of the
FIFO).
For USB users (e.g. class/gadget drivers, app) the high level usb_transfer() function can be used to execute USB data transfer. Regards, Loic
|
|