237c0cca09
Author: Alan Carvalho de Assis <acassis@gmail.com> Run nxstyle against .c .h files and fix it Author: Adam Feuer <adam@starcat.io> Summary Adds CDC ECM Ethernet over USB High Speed for SAMA5D36-Xplained (and maybe other boards) (most of the code was there already, but didn't work out of the box for the SAMA5D36-Xplained) Only SAMA5D36-Xplained has been tested so far Impact None if you don't use the CDC ECM Ethernet driver On SAMA5D36-Xplained, this adds high-speed Internet connectivity over USB 2.0 High Speed. via the USB CDC ECM Gadget driver. It may work on other boards too. This also fixed full-speed (low-speed) mode for the board too. Limitations Hasn't been tested on anything other than SAMA5D36-Xplained board. TODO Ideally this would include a composite RNDIS device so it would also work seamlessly on Windows. That is for a future PR Ideally this would include software to help configuration via mDNS/DNS-SD for plug and play compatibility with Linux and macOS. That is for a future PR. Detail Only a few lines of C driver code needed to be changed, since the capability was there already. The rest is config and documentation. Changes the SAMA5D3-Xplained board bringup to match the SAMA5D3-EK board bringup A helper script to configure Linux routing and iptables NAT is also provided, along with documentation on how to use it. Testing Manual, on a Ubuntu Linux 19.10 system and MacOS 10.14.6 Mojave MacBook Pro. How To Verify Follow the new CDC ECM Ethernet over USB instructions in the board README.txt file Commits: remove non-UTF-8 chars in comment and reformat removed unneeded comment markers instructions for using the defconfigs removed EMAC from config - to prove this example only needs the CDC ECM Ethernet over USB to work added CDC-ECM Ethernet over USB info to README added U-Boot image added netusb helper script - this can configure the Linux network interface and routes so you can ping or access the NuttX system via TCP/IP. renamed defconfig dirs to be ethernet-over-usb - was usb-over-ethernet which is not right added USB DMA to defconfigs updated readme with autoboot and debugging info bringing ethernet-over-usb examples into parity added cdc ecm ethernet over usb with telnetd config added defconfig only use phy interrupt if netdevices is ethernet - because now netdevice could be CDC ECM ethernet over usb which has no PHY interrupt add bringup to Makefile add bringup app init cleanup init cdc ecm driver and rndis driver; some cleanup fixed some typos and odd characters usb over ethernet working over usb 2.0 hs
36 lines
1012 B
Bash
Executable File
36 lines
1012 B
Bash
Executable File
#!/bin/bash
|
|
set -x
|
|
|
|
# This script can be used to set up the USB Ethernet Gadget interfaces
|
|
# on Linux. Tested on Ubuntu 19.10, kernel 5.3.0-24-generic
|
|
|
|
# USB Ethernet Gadget interface
|
|
IF_USB=ens35u2
|
|
# external interface
|
|
IF_HOST=ens33
|
|
|
|
IP_NET="10.0.0.0/24"
|
|
IP_NETMASK="255.255.255.0"
|
|
IP_BROADCAST="10.0.0.255"
|
|
IP_HOST="10.0.0.1"
|
|
IP_NUTTX="10.0.0.2"
|
|
|
|
sudo ifconfig $IF_USB up
|
|
ifconfig -a
|
|
sudo ifconfig $IF_USB add $IP_HOST
|
|
sudo ifconfig $IF_USB:0 broadcast $IP_BROADCAST netmask $IP_NETMASK
|
|
sudo ip route delete $IP_NET
|
|
ip route add $IP_NET dev $IF_USB src $IP_HOST
|
|
sudo ip route add $IP_NET dev $IF_USB src $IP_HOST
|
|
sudo ip route add $IP_NUTTX/32 dev ens35u2 src $IP_HOST
|
|
|
|
# nat to allow NuttX to access the internet
|
|
sudo iptables -t nat -A POSTROUTING -o $IF_HOST -j MASQUERADE
|
|
sudo iptables -A FORWARD -i $IF_HOST -o $IF_USB -m state --state RELATED,ESTABLISHED -j ACCEPT
|
|
sudo iptables -A FORWARD -i $IF_USB -o $IF_HOST -j ACCEPT
|
|
|
|
ip route show
|
|
|
|
# pinging the nuttx system should work now
|
|
#ping -c 1 $IP_NUTTX
|