usb_serial: Fixed up the nomenclature for the USB serial interfaces
This commit is contained in:
parent
0a6621a322
commit
1a7af52edc
|
@ -78,7 +78,7 @@ enum BMP_DEBUG {
|
||||||
# define DEBUG_WIRE(...) do {} while(0)
|
# define DEBUG_WIRE(...) do {} while(0)
|
||||||
# define DEBUG_GDB_WIRE(...) do {} while(0)
|
# define DEBUG_GDB_WIRE(...) do {} while(0)
|
||||||
|
|
||||||
void debug_uart_send_stdout(const uint8_t *data, size_t len);
|
void debug_serial_send_stdout(const uint8_t *data, size_t len);
|
||||||
#else
|
#else
|
||||||
# include <stdarg.h>
|
# include <stdarg.h>
|
||||||
extern int cl_debuglevel;
|
extern int cl_debuglevel;
|
||||||
|
|
|
@ -335,7 +335,7 @@ static void aux_serial_receive_isr(const uint32_t usart, const uint8_t dma_irq)
|
||||||
#ifdef USART_ICR
|
#ifdef USART_ICR
|
||||||
USART_ICR(usart) = USART_ICR_IDLECF;
|
USART_ICR(usart) = USART_ICR_IDLECF;
|
||||||
#endif
|
#endif
|
||||||
debug_uart_run();
|
debug_serial_run();
|
||||||
}
|
}
|
||||||
|
|
||||||
nvic_enable_irq(dma_irq);
|
nvic_enable_irq(dma_irq);
|
||||||
|
@ -370,7 +370,7 @@ static void aux_serial_dma_receive_isr(const uint8_t usart_irq, const uint8_t dm
|
||||||
|
|
||||||
/* Clear flags and transmit a packet*/
|
/* Clear flags and transmit a packet*/
|
||||||
dma_clear_interrupt_flags(USBUSART_DMA_BUS, dma_rx_channel, DMA_CGIF);
|
dma_clear_interrupt_flags(USBUSART_DMA_BUS, dma_rx_channel, DMA_CGIF);
|
||||||
debug_uart_run();
|
debug_serial_run();
|
||||||
|
|
||||||
nvic_enable_irq(usart_irq);
|
nvic_enable_irq(usart_irq);
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,12 +57,12 @@
|
||||||
#include <libopencm3/stm32/dma.h>
|
#include <libopencm3/stm32/dma.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool gdb_uart_dtr = true;
|
static bool gdb_serial_dtr = true;
|
||||||
|
|
||||||
static void usb_serial_set_state(usbd_device *dev, uint16_t iface, uint8_t ep);
|
static void usb_serial_set_state(usbd_device *dev, uint16_t iface, uint8_t ep);
|
||||||
|
|
||||||
static void debug_uart_send_callback(usbd_device *dev, uint8_t ep);
|
static void debug_serial_send_callback(usbd_device *dev, uint8_t ep);
|
||||||
static void debug_uart_receive_callback(usbd_device *dev, uint8_t ep);
|
static void debug_serial_receive_callback(usbd_device *dev, uint8_t ep);
|
||||||
|
|
||||||
static bool debug_serial_send_complete = true;
|
static bool debug_serial_send_complete = true;
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ static uint8_t debug_serial_debug_write_index;
|
||||||
static uint8_t debug_serial_debug_read_index;
|
static uint8_t debug_serial_debug_read_index;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static enum usbd_request_return_codes gdb_uart_control_request(usbd_device *dev, struct usb_setup_data *req,
|
static enum usbd_request_return_codes gdb_serial_control_request(usbd_device *dev, struct usb_setup_data *req,
|
||||||
uint8_t **buf, uint16_t *const len, void (**complete)(usbd_device *dev, struct usb_setup_data *req))
|
uint8_t **buf, uint16_t *const len, void (**complete)(usbd_device *dev, struct usb_setup_data *req))
|
||||||
{
|
{
|
||||||
(void)buf;
|
(void)buf;
|
||||||
|
@ -92,7 +92,7 @@ static enum usbd_request_return_codes gdb_uart_control_request(usbd_device *dev,
|
||||||
switch (req->bRequest) {
|
switch (req->bRequest) {
|
||||||
case USB_CDC_REQ_SET_CONTROL_LINE_STATE:
|
case USB_CDC_REQ_SET_CONTROL_LINE_STATE:
|
||||||
usb_serial_set_state(dev, req->wIndex, CDCACM_GDB_ENDPOINT);
|
usb_serial_set_state(dev, req->wIndex, CDCACM_GDB_ENDPOINT);
|
||||||
gdb_uart_dtr = req->wValue & 1;
|
gdb_serial_dtr = req->wValue & 1;
|
||||||
return USBD_REQ_HANDLED;
|
return USBD_REQ_HANDLED;
|
||||||
case USB_CDC_REQ_SET_LINE_CODING:
|
case USB_CDC_REQ_SET_LINE_CODING:
|
||||||
if (*len < sizeof(struct usb_cdc_line_coding))
|
if (*len < sizeof(struct usb_cdc_line_coding))
|
||||||
|
@ -102,7 +102,12 @@ static enum usbd_request_return_codes gdb_uart_control_request(usbd_device *dev,
|
||||||
return USBD_REQ_NOTSUPP;
|
return USBD_REQ_NOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum usbd_request_return_codes debug_uart_control_request(usbd_device *dev, struct usb_setup_data *req,
|
bool gdb_serial_get_dtr(void)
|
||||||
|
{
|
||||||
|
return gdb_serial_dtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static enum usbd_request_return_codes debug_serial_control_request(usbd_device *dev, struct usb_setup_data *req,
|
||||||
uint8_t **buf, uint16_t *const len, void (**complete)(usbd_device *dev, struct usb_setup_data *req))
|
uint8_t **buf, uint16_t *const len, void (**complete)(usbd_device *dev, struct usb_setup_data *req))
|
||||||
{
|
{
|
||||||
(void)complete;
|
(void)complete;
|
||||||
|
@ -129,11 +134,6 @@ static enum usbd_request_return_codes debug_uart_control_request(usbd_device *de
|
||||||
return USBD_REQ_NOTSUPP;
|
return USBD_REQ_NOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool gdb_uart_get_dtr(void)
|
|
||||||
{
|
|
||||||
return gdb_uart_dtr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void usb_serial_set_state(usbd_device *const dev, const uint16_t iface, const uint8_t ep)
|
void usb_serial_set_state(usbd_device *const dev, const uint16_t iface, const uint8_t ep)
|
||||||
{
|
{
|
||||||
uint8_t buf[10];
|
uint8_t buf[10];
|
||||||
|
@ -163,9 +163,9 @@ void usb_serial_set_config(usbd_device *dev, uint16_t value)
|
||||||
usbd_ep_setup(dev, (CDCACM_GDB_ENDPOINT + 1) | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_INTERRUPT, 16, NULL);
|
usbd_ep_setup(dev, (CDCACM_GDB_ENDPOINT + 1) | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_INTERRUPT, 16, NULL);
|
||||||
|
|
||||||
/* Serial interface */
|
/* Serial interface */
|
||||||
usbd_ep_setup(dev, CDCACM_UART_ENDPOINT, USB_ENDPOINT_ATTR_BULK, CDCACM_PACKET_SIZE / 2, debug_uart_receive_callback);
|
usbd_ep_setup(dev, CDCACM_UART_ENDPOINT, USB_ENDPOINT_ATTR_BULK, CDCACM_PACKET_SIZE / 2, debug_serial_receive_callback);
|
||||||
usbd_ep_setup(
|
usbd_ep_setup(
|
||||||
dev, CDCACM_UART_ENDPOINT | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_BULK, CDCACM_PACKET_SIZE, debug_uart_send_callback);
|
dev, CDCACM_UART_ENDPOINT | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_BULK, CDCACM_PACKET_SIZE, debug_serial_send_callback);
|
||||||
usbd_ep_setup(dev, (CDCACM_UART_ENDPOINT + 1) | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_INTERRUPT, 16, NULL);
|
usbd_ep_setup(dev, (CDCACM_UART_ENDPOINT + 1) | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_INTERRUPT, 16, NULL);
|
||||||
|
|
||||||
#ifdef PLATFORM_HAS_TRACESWO
|
#ifdef PLATFORM_HAS_TRACESWO
|
||||||
|
@ -174,9 +174,9 @@ void usb_serial_set_config(usbd_device *dev, uint16_t value)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
usbd_register_control_callback(dev, USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE,
|
usbd_register_control_callback(dev, USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE,
|
||||||
USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT, debug_uart_control_request);
|
USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT, debug_serial_control_request);
|
||||||
usbd_register_control_callback(dev, USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE,
|
usbd_register_control_callback(dev, USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE,
|
||||||
USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT, gdb_uart_control_request);
|
USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT, gdb_serial_control_request);
|
||||||
|
|
||||||
/* Notify the host that DCD is asserted.
|
/* Notify the host that DCD is asserted.
|
||||||
* Allows the use of /dev/tty* devices on *BSD/MacOS
|
* Allows the use of /dev/tty* devices on *BSD/MacOS
|
||||||
|
@ -189,7 +189,7 @@ void usb_serial_set_config(usbd_device *dev, uint16_t value)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void debug_uart_send_stdout(const uint8_t *const data, const size_t len)
|
void debug_serial_send_stdout(const uint8_t *const data, const size_t len)
|
||||||
{
|
{
|
||||||
for (size_t offset = 0; offset < len; offset += CDCACM_PACKET_SIZE) {
|
for (size_t offset = 0; offset < len; offset += CDCACM_PACKET_SIZE) {
|
||||||
const size_t count = MIN(len - offset, CDCACM_PACKET_SIZE);
|
const size_t count = MIN(len - offset, CDCACM_PACKET_SIZE);
|
||||||
|
@ -230,7 +230,7 @@ static bool debug_serial_fifo_buffer_empty(void)
|
||||||
* Runs deferred processing for AUX serial RX, draining RX FIFO by sending
|
* Runs deferred processing for AUX serial RX, draining RX FIFO by sending
|
||||||
* characters to host PC via the debug serial interface.
|
* characters to host PC via the debug serial interface.
|
||||||
*/
|
*/
|
||||||
static void debug_uart_send_aux_serial_data(void)
|
static void debug_serial_send_data(void)
|
||||||
{
|
{
|
||||||
debug_serial_send_complete = false;
|
debug_serial_send_complete = false;
|
||||||
aux_serial_update_receive_buffer_fullness();
|
aux_serial_update_receive_buffer_fullness();
|
||||||
|
@ -255,7 +255,7 @@ static void debug_uart_send_aux_serial_data(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void debug_uart_run(void)
|
void debug_serial_run(void)
|
||||||
{
|
{
|
||||||
nvic_disable_irq(USB_IRQ);
|
nvic_disable_irq(USB_IRQ);
|
||||||
|
|
||||||
|
@ -264,7 +264,7 @@ void debug_uart_run(void)
|
||||||
|
|
||||||
/* Try to send a packet if usb is idle */
|
/* Try to send a packet if usb is idle */
|
||||||
if (debug_serial_send_complete)
|
if (debug_serial_send_complete)
|
||||||
debug_uart_send_aux_serial_data();
|
debug_serial_send_data();
|
||||||
|
|
||||||
nvic_enable_irq(USB_IRQ);
|
nvic_enable_irq(USB_IRQ);
|
||||||
}
|
}
|
||||||
|
@ -277,7 +277,7 @@ static void debug_serial_append_char(const char c)
|
||||||
debug_serial_debug_write_index %= AUX_UART_BUFFER_SIZE;
|
debug_serial_debug_write_index %= AUX_UART_BUFFER_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t debug_uart_write(const char *buf, const size_t len)
|
size_t debug_serial_debug_write(const char *buf, const size_t len)
|
||||||
{
|
{
|
||||||
if (nvic_get_active_irq(USB_IRQ) || nvic_get_active_irq(USBUSART_IRQ) || nvic_get_active_irq(USBUSART_DMA_RX_IRQ))
|
if (nvic_get_active_irq(USB_IRQ) || nvic_get_active_irq(USBUSART_IRQ) || nvic_get_active_irq(USBUSART_DMA_RX_IRQ))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -296,21 +296,21 @@ size_t debug_uart_write(const char *buf, const size_t len)
|
||||||
debug_serial_append_char(buf[offset]);
|
debug_serial_append_char(buf[offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
debug_uart_run();
|
debug_serial_run();
|
||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void debug_uart_send_callback(usbd_device *dev, uint8_t ep)
|
static void debug_serial_send_callback(usbd_device *dev, uint8_t ep)
|
||||||
{
|
{
|
||||||
(void) ep;
|
(void) ep;
|
||||||
(void) dev;
|
(void) dev;
|
||||||
#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32F4)
|
#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32F4)
|
||||||
debug_uart_send_aux_serial_data();
|
debug_serial_send_data();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef ENABLE_RTT
|
#ifndef ENABLE_RTT
|
||||||
static void debug_uart_receive_callback(usbd_device *dev, uint8_t ep)
|
static void debug_serial_receive_callback(usbd_device *dev, uint8_t ep)
|
||||||
{
|
{
|
||||||
char *const transmit_buffer = aux_serial_current_transmit_buffer() + aux_serial_transmit_buffer_fullness();
|
char *const transmit_buffer = aux_serial_current_transmit_buffer() + aux_serial_transmit_buffer_fullness();
|
||||||
const uint16_t len = usbd_ep_read_packet(dev, ep, transmit_buffer, CDCACM_PACKET_SIZE);
|
const uint16_t len = usbd_ep_read_packet(dev, ep, transmit_buffer, CDCACM_PACKET_SIZE);
|
||||||
|
@ -347,7 +347,7 @@ int _write(const int file, const void *const ptr, const size_t len)
|
||||||
(void)file;
|
(void)file;
|
||||||
#ifdef PLATFORM_HAS_DEBUG
|
#ifdef PLATFORM_HAS_DEBUG
|
||||||
if (debug_bmp)
|
if (debug_bmp)
|
||||||
return debug_uart_write(ptr, len);
|
return debug_serial_debug_write(ptr, len);
|
||||||
#endif
|
#endif
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,6 @@
|
||||||
|
|
||||||
void usb_serial_set_config(usbd_device *dev, uint16_t value);
|
void usb_serial_set_config(usbd_device *dev, uint16_t value);
|
||||||
|
|
||||||
bool gdb_uart_get_dtr(void);
|
bool gdb_serial_get_dtr(void);
|
||||||
|
|
||||||
#endif /*USB_SERIAL_H*/
|
#endif /*USB_SERIAL_H*/
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
|
|
||||||
void debug_uart_run(void);
|
void debug_serial_run(void);
|
||||||
uint32_t debug_serial_fifo_send(const char *const fifo, const uint32_t fifo_begin, const uint32_t fifo_end);
|
uint32_t debug_serial_fifo_send(const char *const fifo, const uint32_t fifo_begin, const uint32_t fifo_end);
|
||||||
|
|
||||||
#define TX_LED_ACT (1 << 0)
|
#define TX_LED_ACT (1 << 0)
|
||||||
|
|
|
@ -45,7 +45,7 @@ void gdb_if_putchar(unsigned char c, int flush)
|
||||||
if (flush || (count_in == CDCACM_PACKET_SIZE)) {
|
if (flush || (count_in == CDCACM_PACKET_SIZE)) {
|
||||||
/* Refuse to send if USB isn't configured, and
|
/* Refuse to send if USB isn't configured, and
|
||||||
* don't bother if nobody's listening */
|
* don't bother if nobody's listening */
|
||||||
if (usb_get_config() != 1 || !gdb_uart_get_dtr()) {
|
if (usb_get_config() != 1 || !gdb_serial_get_dtr()) {
|
||||||
count_in = 0;
|
count_in = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,7 @@ unsigned char gdb_if_getchar(void)
|
||||||
|
|
||||||
while (!(out_ptr < count_out)) {
|
while (!(out_ptr < count_out)) {
|
||||||
/* Detach if port closed */
|
/* Detach if port closed */
|
||||||
if (!gdb_uart_get_dtr()) {
|
if (!gdb_serial_get_dtr()) {
|
||||||
__WFI();
|
__WFI();
|
||||||
return 0x04;
|
return 0x04;
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ unsigned char gdb_if_getchar_to(int timeout)
|
||||||
|
|
||||||
if (!(out_ptr < count_out)) do {
|
if (!(out_ptr < count_out)) do {
|
||||||
/* Detach if port closed */
|
/* Detach if port closed */
|
||||||
if (!gdb_uart_get_dtr()) {
|
if (!gdb_serial_get_dtr()) {
|
||||||
__WFI(); /* systick will wake up too!*/
|
__WFI(); /* systick will wake up too!*/
|
||||||
return 0x04;
|
return 0x04;
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,10 +59,10 @@ inline static bool recv_set_nak()
|
||||||
return recv_bytes_free() < 2 * CDCACM_PACKET_SIZE;
|
return recv_bytes_free() < 2 * CDCACM_PACKET_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* debug_uart_receive_callback is called when usb uart has received new data for target.
|
/* debug_serial_receive_callback is called when usb uart has received new data for target.
|
||||||
this routine has to be fast */
|
this routine has to be fast */
|
||||||
|
|
||||||
void debug_uart_receive_callback(usbd_device *dev, uint8_t ep)
|
void debug_serial_receive_callback(usbd_device *dev, uint8_t ep)
|
||||||
{
|
{
|
||||||
(void)dev;
|
(void)dev;
|
||||||
(void)ep;
|
(void)ep;
|
||||||
|
@ -121,7 +121,7 @@ bool rtt_nodata()
|
||||||
/* rtt target to host: write string */
|
/* rtt target to host: write string */
|
||||||
uint32_t rtt_write(const char *buf, uint32_t len)
|
uint32_t rtt_write(const char *buf, uint32_t len)
|
||||||
{
|
{
|
||||||
if (len != 0 && usbdev && usb_get_config() && gdb_uart_get_dtr()) {
|
if (len != 0 && usbdev && usb_get_config() && gdb_serial_get_dtr()) {
|
||||||
for (uint32_t p = 0; p < len; p += CDCACM_PACKET_SIZE) {
|
for (uint32_t p = 0; p < len; p += CDCACM_PACKET_SIZE) {
|
||||||
uint32_t plen = MIN(CDCACM_PACKET_SIZE, len - p);
|
uint32_t plen = MIN(CDCACM_PACKET_SIZE, len - p);
|
||||||
while(usbd_ep_write_packet(usbdev, CDCACM_UART_ENDPOINT, buf + p, plen) <= 0);
|
while(usbd_ep_write_packet(usbdev, CDCACM_UART_ENDPOINT, buf + p, plen) <= 0);
|
||||||
|
|
|
@ -47,7 +47,7 @@ uint16_t traceswo_decode(usbd_device *usbd_dev, uint8_t addr,
|
||||||
if (swo_print) {
|
if (swo_print) {
|
||||||
swo_buf[swo_buf_len++]=ch;
|
swo_buf[swo_buf_len++]=ch;
|
||||||
if (swo_buf_len == sizeof(swo_buf)) {
|
if (swo_buf_len == sizeof(swo_buf)) {
|
||||||
if (usb_get_config() && gdb_uart_get_dtr()) /* silently drop if usb not ready */
|
if (usb_get_config() && gdb_serial_get_dtr()) /* silently drop if usb not ready */
|
||||||
usbd_ep_write_packet(usbd_dev, addr, swo_buf, swo_buf_len);
|
usbd_ep_write_packet(usbd_dev, addr, swo_buf, swo_buf_len);
|
||||||
swo_buf_len=0;
|
swo_buf_len=0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ void gdb_if_putchar(unsigned char c, int flush)
|
||||||
if (flush || count_in == CDCACM_PACKET_SIZE) {
|
if (flush || count_in == CDCACM_PACKET_SIZE) {
|
||||||
/* Refuse to send if USB isn't configured, and
|
/* Refuse to send if USB isn't configured, and
|
||||||
* don't bother if nobody's listening */
|
* don't bother if nobody's listening */
|
||||||
if (usb_get_config() != 1 || !gdb_uart_get_dtr()) {
|
if (usb_get_config() != 1 || !gdb_serial_get_dtr()) {
|
||||||
count_in = 0;
|
count_in = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ unsigned char gdb_if_getchar(void)
|
||||||
{
|
{
|
||||||
while (tail_out == head_out) {
|
while (tail_out == head_out) {
|
||||||
/* Detach if port closed */
|
/* Detach if port closed */
|
||||||
if (!gdb_uart_get_dtr())
|
if (!gdb_serial_get_dtr())
|
||||||
return 0x04;
|
return 0x04;
|
||||||
|
|
||||||
while (usb_get_config() != 1)
|
while (usb_get_config() != 1)
|
||||||
|
@ -86,7 +86,7 @@ unsigned char gdb_if_getchar_to(int timeout)
|
||||||
if (head_out == tail_out)
|
if (head_out == tail_out)
|
||||||
do {
|
do {
|
||||||
/* Detach if port closed */
|
/* Detach if port closed */
|
||||||
if (!gdb_uart_get_dtr())
|
if (!gdb_serial_get_dtr())
|
||||||
return 0x04;
|
return 0x04;
|
||||||
|
|
||||||
while (usb_get_config() != 1)
|
while (usb_get_config() != 1)
|
||||||
|
|
|
@ -702,7 +702,7 @@ int tc_write(target *t, int fd, target_addr buf, unsigned int count)
|
||||||
if (cnt > count)
|
if (cnt > count)
|
||||||
cnt = count;
|
cnt = count;
|
||||||
target_mem_read(t, tmp, buf, cnt);
|
target_mem_read(t, tmp, buf, cnt);
|
||||||
debug_uart_send_stdout(tmp, cnt);
|
debug_serial_send_stdout(tmp, cnt);
|
||||||
count -= cnt;
|
count -= cnt;
|
||||||
buf += cnt;
|
buf += cnt;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue