Configuring an USB2.0 / USB3.0 Serial Gadget as a Console

In this document, it will demonstrate how to use an USB2.0 / USB3.0 serial gadget as a console.

 

Table of Contents

Kernel Setup

It is more convenient to adapt precomposed configurations than configfs for the serial gadget console support.

Enter the kernel configuration by running the following command in the top directory of project.

# make kconfig

 

  1. Select submenus for USB 2.0 controller : Device Drivers > USB support > USB Gadget Support > USB Peripheral Controller. Select <*> for “Sunplus USB 2.0 Device Controller“.

image-20240624-061527.png

 

  1. Select submenus for USB 3.0 controller : Device Drivers > USB support. Select <*> for “DesignWare USB3 DRD Core Support“ and select “Gadget Only mode“ for “DWC3 Mode Selection“. Note that for USB gadget precomposed configurations, there is only 1 UDC configured as a gadget. Here selecting “Gadget Only mode“ for “DWC3 Mode Selection“ will configure USB3 as the serial gadget and selecting “Dual Role mode“ for “DWC3 Mode Selection“ will configure USB2 as the serial gadget due to the USB2 and USB3 device drivers probed sequence.

image-20240624-054804.png

 

  1. Select submenus for USB Gadget procomposed configurations : Device Drivers > USB support > USB Gadget Support > USB Gadget precomposed configurations. Select <*> for “Serial Gadget (with CDC ACM and CDC OBEX support)“.

 

  1. Select submenus for USB Gadget Support : Device Drivers > USB support. Select <*> for “Serial gadget console support“.

 

  1. Configure the environment variable bootargs by modifying b_c as “b_c=console=ttyGS0,115200 earlycon\0“ in boot\uboot\include\configfs\pentagram_common_sp7350.h.

If bootargs is not determined in pentagram_common_sp7350.h, configure it as “bootargs = “console=ttyGS0, 115200 earlycon loglevel=8 no_console_suspend “; in sp7350-dev.dts, sp7350-dm.dts, sp7350-ev.dts or sp7350-xink.dts.

 

  1. Execute the make command to build the Linux image.

Serial Gadget Console Implementation

Take USB2.0 serial gadget for example.

  1. Update the image and boot the system, the kernel messages will stop when “printk: console [ttyGS0] enabled“ and “printk: bootconsole [sunplus_uart0] disabled“. Here sunplus_uart0 is COM9, and it is the default terminal of the SP7350 platform.

 

  1. Connect the SP7350 platform to a Windows PC with an USB OTG cable, “USB Serial Device (COM10)“ will show up in “Ports (COM & LPT)” of Device Manager.

 

  1. Open Tera Term in COM10 and it can send text output to the user and receive text input from the user.