fix(usbh_serial): fix serial iobuffer size, remove length limit of write
Signed-off-by: sakumisu <1203593632@qq.com>
This commit is contained in:
@@ -21,7 +21,7 @@ static struct usbh_serial g_serial_class[CONFIG_USBHOST_MAX_SERIAL_CLASS];
|
|||||||
static uint32_t g_devinuse = 0;
|
static uint32_t g_devinuse = 0;
|
||||||
static uint32_t g_cdcacm_devinuse = 0;
|
static uint32_t g_cdcacm_devinuse = 0;
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_serial_iobuffer[CONFIG_USBHOST_MAX_SERIAL_CLASS][USB_ALIGN_UP((USBH_SERIAL_INT_NOCACHE_OFFSET + USBH_SERIAL_INT_NOCACHE_SIZE), CONFIG_USB_ALIGN_SIZE)];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_serial_iobuffer[CONFIG_USBHOST_MAX_SERIAL_CLASS][USB_ALIGN_UP((USBH_SERIAL_RX2_NOCACHE_OFFSET + USBH_SERIAL_RX2_NOCACHE_SIZE), CONFIG_USB_ALIGN_SIZE)];
|
||||||
|
|
||||||
/* refer to cherryrb */
|
/* refer to cherryrb */
|
||||||
static int usbh_serial_ringbuffer_init(usbh_serial_ringbuf_t *rb, void *pool, uint32_t size)
|
static int usbh_serial_ringbuffer_init(usbh_serial_ringbuf_t *rb, void *pool, uint32_t size)
|
||||||
@@ -540,7 +540,7 @@ int usbh_serial_write(struct usbh_serial *serial, const void *buffer, uint32_t b
|
|||||||
|
|
||||||
urb = &serial->bulkout_urb;
|
urb = &serial->bulkout_urb;
|
||||||
|
|
||||||
usbh_bulk_urb_fill(urb, serial->hport, serial->bulkout, (uint8_t *)buffer, serial->line_coding.dwDTERate ? MIN(buflen, serial->bulkout->wMaxPacketSize) : buflen, 0xffffffff, NULL, NULL);
|
usbh_bulk_urb_fill(urb, serial->hport, serial->bulkout, (uint8_t *)buffer, buflen, 0xffffffff, NULL, NULL);
|
||||||
ret = usbh_submit_urb(urb);
|
ret = usbh_submit_urb(urb);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
ret = urb->actual_length;
|
ret = urb->actual_length;
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
|
|
||||||
#include "usb_cdc.h"
|
#include "usb_cdc.h"
|
||||||
|
|
||||||
#define USBH_SERIAL_CTRL_NOCACHE_SIZE 32
|
|
||||||
#define USBH_SERIAL_CTRL_NOCACHE_OFFSET 0
|
#define USBH_SERIAL_CTRL_NOCACHE_OFFSET 0
|
||||||
#define USBH_SERIAL_INT_NOCACHE_SIZE 32
|
#define USBH_SERIAL_CTRL_NOCACHE_SIZE 32
|
||||||
#define USBH_SERIAL_INT_NOCACHE_OFFSET USB_ALIGN_UP(USBH_SERIAL_CTRL_NOCACHE_SIZE, CONFIG_USB_ALIGN_SIZE)
|
#define USBH_SERIAL_INT_NOCACHE_OFFSET USB_ALIGN_UP(USBH_SERIAL_CTRL_NOCACHE_SIZE, CONFIG_USB_ALIGN_SIZE)
|
||||||
|
#define USBH_SERIAL_INT_NOCACHE_SIZE 32
|
||||||
#define USBH_SERIAL_RX_NOCACHE_OFFSET USB_ALIGN_UP((USBH_SERIAL_INT_NOCACHE_OFFSET + USBH_SERIAL_INT_NOCACHE_SIZE), CONFIG_USB_ALIGN_SIZE)
|
#define USBH_SERIAL_RX_NOCACHE_OFFSET USB_ALIGN_UP((USBH_SERIAL_INT_NOCACHE_OFFSET + USBH_SERIAL_INT_NOCACHE_SIZE), CONFIG_USB_ALIGN_SIZE)
|
||||||
#define USBH_SERIAL_RX_NOCACHE_SIZE 512
|
#define USBH_SERIAL_RX_NOCACHE_SIZE 512
|
||||||
#define USBH_SERIAL_RX2_NOCACHE_OFFSET USB_ALIGN_UP((USBH_SERIAL_RX_NOCACHE_OFFSET + USBH_SERIAL_RX_NOCACHE_SIZE), CONFIG_USB_ALIGN_SIZE)
|
#define USBH_SERIAL_RX2_NOCACHE_OFFSET USB_ALIGN_UP((USBH_SERIAL_RX_NOCACHE_OFFSET + USBH_SERIAL_RX_NOCACHE_SIZE), CONFIG_USB_ALIGN_SIZE)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ volatile uint32_t serial_tx_bytes = 0;
|
|||||||
volatile uint32_t serial_rx_bytes = 0;
|
volatile uint32_t serial_rx_bytes = 0;
|
||||||
volatile bool serial_is_opened = false;
|
volatile bool serial_is_opened = false;
|
||||||
|
|
||||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t serial_tx_buffer[64];
|
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t serial_tx_buffer[SERIAL_TEST_LEN];
|
||||||
uint8_t serial_rx_data[SERIAL_TEST_LEN];
|
uint8_t serial_rx_data[SERIAL_TEST_LEN];
|
||||||
|
|
||||||
#ifdef CONFIG_TEST_USBH_CDC_SPEED
|
#ifdef CONFIG_TEST_USBH_CDC_SPEED
|
||||||
|
|||||||
@@ -206,10 +206,10 @@ usbh_serial_write
|
|||||||
|
|
||||||
- **serial** serial 结构体句柄
|
- **serial** serial 结构体句柄
|
||||||
- **buffer** 数据缓冲区指针
|
- **buffer** 数据缓冲区指针
|
||||||
- **buflen** 要写入的数据长度,如果是 USB2TTL 设备,一次最高 wMaxPacketSize
|
- **buflen** 要写入的数据长度
|
||||||
- **return** 实际写入的数据长度或者错误码
|
- **return** 实际写入的数据长度或者错误码
|
||||||
|
|
||||||
.. note:: 有无设置波特率都可以使用该 API,当未设置波特率时,长度无限制,如果设置了波特率则为 wMaxPacketSize。
|
.. note:: 如果没有开启 CONFIG_USB_DCACHE_ENABLE,则 buffer 需要是 nocache区域,否则需要是对齐到 CONFIG_USB_ALIGN_SIZE 的区域。
|
||||||
|
|
||||||
usbh_serial_read
|
usbh_serial_read
|
||||||
""""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""""
|
||||||
@@ -225,6 +225,8 @@ usbh_serial_read
|
|||||||
- **buflen** 要读取的最大数据长度
|
- **buflen** 要读取的最大数据长度
|
||||||
- **return** 实际读取的数据长度或者错误码
|
- **return** 实际读取的数据长度或者错误码
|
||||||
|
|
||||||
|
.. note:: 由于内部使用了 ringbuffer,对于用户的 buffer 属性没有限制。
|
||||||
|
|
||||||
usbh_serial_cdc_write_async
|
usbh_serial_cdc_write_async
|
||||||
""""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
@@ -241,6 +243,8 @@ usbh_serial_cdc_write_async
|
|||||||
- **arg** 回调函数参数
|
- **arg** 回调函数参数
|
||||||
- **return** 0 表示正常其他表示错误
|
- **return** 0 表示正常其他表示错误
|
||||||
|
|
||||||
|
.. note:: 如果没有开启 CONFIG_USB_DCACHE_ENABLE,则 buffer 需要是 nocache区域,否则需要是对齐到 CONFIG_USB_ALIGN_SIZE 的区域。
|
||||||
|
|
||||||
usbh_serial_cdc_read_async
|
usbh_serial_cdc_read_async
|
||||||
""""""""""""""""""""""""""""""""""""
|
""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
@@ -257,6 +261,7 @@ usbh_serial_cdc_read_async
|
|||||||
- **arg** 回调函数参数
|
- **arg** 回调函数参数
|
||||||
- **return** 0 表示正常其他表示错误
|
- **return** 0 表示正常其他表示错误
|
||||||
|
|
||||||
|
.. note:: 如果没有开启 CONFIG_USB_DCACHE_ENABLE,则 buffer 需要是 nocache区域,否则需要是对齐到 CONFIG_USB_ALIGN_SIZE 的区域。
|
||||||
|
|
||||||
HID
|
HID
|
||||||
-----------------
|
-----------------
|
||||||
|
|||||||
Reference in New Issue
Block a user