...
Table of Contents | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Serial Device
Kernel Setup
Enter the kernel configuration by running the following command in the top directory of project.
...
Select submenus for USB 2.0 controller : Device Drivers > USB support > USB support > USB Gadget Support > USB Peripheral Controller. Select <*> for “Sunplus USB 2.0 Device Controller“.
...
Select submenus for USB 3.0 controller : Device Drivers > USB support > USB support >. Select <*> for “DesignWare USB3 DRD Core Support“ and select “Dual Role mode“ for “Deware USB3 DRD Core Support“.
...
Select submenus for USB Gadget configfs : Device Drivers > USB support > USB support > USB Gadget Support. Select <M> for “USB Gadget functions configurable through configfs“. Select [*] for “Generic serial bulk in/out”, “Abstract Control Model (CDC ACM)“ or “Object Exchange Model (CDC OBEX)“.
...
Execute the make command to build the Linux image.
ConfigFS (CDC ACM)
Configure serial gadget through configfs saved as a file named setup_serial.
Code Block |
---|
#!/bin/sh USB2_ACM_EN=on USB3_ACM_EN=on KERNEL_PATH=/lib/modules/`uname -r`/kernel GADGET_PATH=$KERNEL_PATH/drivers/usb/gadget FUNCTION_PATH=$GADGET_PATH/function COMPOSITE=$GADGET_PATH/libcomposite.ko U_SERIAL=$FUNCTION_PATH/u_serial.ko insmod $COMPOSITE insmod $U_SERIAL # disable debug message echo 0 > /sys/module/sunplus_udc/parameters/dmsg mkdir -p /sys/kernel/config mount -t configfs none /sys/kernel/config if [ $USB2_ACM_EN = on ] then # USB2.0 configurations cd /sys/kernel/config/usb_gadget # create gadget folder mkdir g1 cd g1 # setup gadget 1 echo 64 > bMaxPacketSize0 echo 0x200 > bcdUSB # composite class echo 0x02 > bDeviceClass mkdir -p configs/c.1 mkdir -p configs/c.1/strings/0x409 echo "USB2.0 Serial Console" > configs/c.1/strings/0x409/configuration mkdir strings/0x409 echo "1234" > strings/0x409/serialnumber echo "Sunplus" > strings/0x409/manufacturer echo "SP7350" > strings/0x409/product mkdir functions/acm.gs0 ln -s functions/acm.gs0 configs/c.1 # bind UDC echo "f8102800.usb" > UDC fi if [ $USB3_ACM_EN = on # USB3.0 configurations] then cd /sys/kernel/config/usb_gadget # create gadget folder if [ $USB2_ACM_EN = on ] then mkdir g2 cd g2 else mkdir g1 cd g1 fi # setup gadget 2 echo 64 > bMaxPacketSize0 echo 0x300 > bcdUSB # composite class echo 0x02 > bDeviceClass mkdir -p configs/c.1 mkdir -p configs/c.1/strings/0x409 echo "USB3.0 Serial Console" > configs/c.1/strings/0x409/configuration mkdir strings/0x409 echo "5678" > strings/0x409/serialnumber echo "Sunplus" > strings/0x409/manufacturer echo "SP7350" > strings/0x409/product mkdir functions/acm.gs1 ln -s functions/acm.gs1 configs/c.1 # bind UDC echo "f80a1000.dwc3" > UDC fi |
Test (CDC ACM) Configuartions
Use sh setup_serial command to configure USB 2.0 and USB3.0 device controllers as serial gadgets.
Code Block |
---|
# sh /setup_serial |
ttyGS0 and ttyGS1 in /dev are represented for the USB2.0 serial gadget and the USB3.0 one.
...
...
After connecting the USB2.0 serial gadget and the USB3.0 one to a Windows PC with USB cables, “USB Serial Device (COM17COM6)“ (USB2.0 serial gadget) and “USB Serial Device (COM18COM7)“ (USB3.0 serial gadget) will show up in “Ports (COM & LPT)” in Device Manager.
...
“Prolific UBS-to-Serial Comm Port (COM9)” is the default terminal (UART0) of the SP7350 platform.
...
Serial Device Test
Use the communication tool of Putty Tera Term for the test with a the Windows PC.
TX Test for USB2.0 Serial Gadget
Use the following command to transfer characters of “SP7350 USB2.0 Serial Gadget TX Test“ to COM17 through from ttyGS0 (USB2.0 serial gadget) to COM6.
Code Block |
---|
# echo "SP7350 USB2.0 Serial Gadget TX Test" > /dev/ttyGS0 |
...
The characters will be received by COM17 open in PuttyCOM6 open by Tera Term.
...
TX Test for USB3.0 Serial Gadget
Use the following command to transfer characters of “SP7350 USB3.0 Serial Gadget TX Test“ to COM18 through from ttyGS1 (USB3.0 serial gadget) to COM7.
Code Block |
---|
# echo "SP7350 USB3.0 Serial Gadget TX Test" > /dev/ttyGS1 |
...
The characters will be received by COM18 open in PuttyCOM7 open by Tera Term.
...
RX Test for USB2.0 Serial Gadget
Use the following command to be ready to receive characters transferred from COM17 COM6 through ttyGS0 (USB2.0 serial gadget).
...
Input the characters of “SP7350 USB2.0 Serial Gadget RX Test" in Putty with COM17 COM6 open by Tera Term and press “Enter”.
Code Block |
---|
SP7350 USB2.0 Serial Gadget RX Test
|
The characters will be received by
...
ttyGS0.
...
RX Test for USB3.0 Serial Gadget
Use the following command to be ready to receive characters transferred from COM18 COM7 through ttyGS1 (USB3.0 serial gadget).
...
Input the characters of “SP7350 USB3.0 Serial Gadget RX Test" in Putty with COM18 COM7 open by Tera Term and press “Enter”. The characters will be received by COM4 (console) open in Putty.
...
Serial Gadget Console
For console support, it is more convenient to use precomposed configurations (build-in) instead of configfs. Take USB2.0 Serial Gadget for example.
Kernel Setup
Enter the kernel configuration by running the following command in the top directory of project.
Code Block |
---|
# make kconfig |
Select submenus for USB 2.0 controller : Device Drivers > USB support > USB support > USB Gadget Support > USB Peripheral Controller. Select <*> for “Sunplus USB 2.0 Device Controller“.
...
Select submenus for precomposed configurations : Device Drivers > USB support > USB support > USB Gadget Support > USB Gadget precomposed configurations. Select <*> for “Serial Gadget (with CDC ACM and CDC OBEX support)”.
...
Select submenus for precomposed configurations : Device Drivers > USB support > USB support > USB Gadget Support. Select <*> for “Serial gadget console support“.
Test Configurations
Add an entry in linux/rootfs/initramfs/disk/etc/inittab to set the terminal to connect to ttyGS0.
...
Add “ttyGS0” in linux/rootfs/initramfs/disk/etc/securetty
...
Execute the make command to build the Linux image.
Serial Gadget Console Test
After updating the image to a SP7350 platform and booting the system, kernel messages during boot are shown in COM4 of Putty which is the default console set in uboot.
...
After connecting the SP7350 platform to the Windows PC with an USB OTG cable, “login[144]: root login on 'ttyGS0'“ will show up in COM4 of Putty. There is an USB serial device appearing in Device Manager.
...
Open Putty with COM8 and it can receive text input from the user.
...
Code Block |
---|
SP7350 USB3.0 Serial Gadget RX Test
|
The characters will be received by ttyGS1.
...