summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2015-01-05 12:09:33 -0600
committerGregory Nutt <gnutt@nuttx.org>2015-01-05 12:09:33 -0600
commitd56309c98f97b82de7e472c9508798c40b13fb6a (patch)
treeb592ae3d2c44497aa4a479c03f7dcd9ed766f896
parentfbfbf9ed9afb6ce1a5757182a76deeccbf35da54 (diff)
downloadnuttx-d56309c98f97b82de7e472c9508798c40b13fb6a.tar.gz
nuttx-d56309c98f97b82de7e472c9508798c40b13fb6a.tar.bz2
nuttx-d56309c98f97b82de7e472c9508798c40b13fb6a.zip
DK-TM4C129X: The network monitor is no enabled by default in NSH configuration
-rw-r--r--nuttx/TODO19
-rw-r--r--nuttx/configs/dk-tm4c129x/README.txt145
-rw-r--r--nuttx/configs/dk-tm4c129x/nsh/defconfig13
-rw-r--r--nuttx/configs/sama5d4-ek/README.txt2
4 files changed, 122 insertions, 57 deletions
diff --git a/nuttx/TODO b/nuttx/TODO
index 81a32b3a3..ee503316d 100644
--- a/nuttx/TODO
+++ b/nuttx/TODO
@@ -15,7 +15,7 @@ nuttx/
(8) Kernel/Protected Builds
(4) C++ Support
(6) Binary loaders (binfmt/)
- (13) Network (net/, drivers/net)
+ (14) Network (net/, drivers/net)
(4) USB (drivers/usbdev, drivers/usbhost)
(11) Libraries (libc/, libm/)
(11) File system/Generic drivers (fs/, drivers/)
@@ -893,9 +893,10 @@ o Network (net/, drivers/net)
the network stack. The network stack supports either interrupt
level processing or normal task level processing (depending on
CONFIG_NET_NOINTS). This is really a very bad use of CPU
- resources; All of the network stack processing should be more
- to a work queue (and, all use of CONFIG_NET_NOINTS=n should
- be eliminated). This applies to almost all Ethernet drivers:
+ resources; All of the network stack processing should be
+ modified to use a work queue (and, all use of CONFIG_NET_NOINTS=n
+ should be eliminated). This applies to almost all Ethernet
+ drivers:
ARCHITECTURE CONFIG_NET_NOINTS
C5471 NO
@@ -932,6 +933,16 @@ o Network (net/, drivers/net)
Status: Open
Priority: Low, unless your logic depends on that behavior.
+ Title: NETWORK WON'T STAY DOWN
+ Description: If you enable the NSH network monitor (CONFIG_NSH_NETINIT_MONITOR)
+ then the NSH 'ifdown' command is broken. Doing 'nsh> ifconfig eth0'
+ will, indeed, bring the network down. However, the network monitor
+ notices the change in the link status and will bring the network
+ back up. There needs to be some kind of interlock between
+ cmd_ifdown() and the network monitor thread to prevent this.
+ Status: Open
+ Priority: Low, this is just a nuisance in most cases.
+
o USB (drivers/usbdev, drivers/usbhost)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/nuttx/configs/dk-tm4c129x/README.txt b/nuttx/configs/dk-tm4c129x/README.txt
index 026a7ea3d..49f356340 100644
--- a/nuttx/configs/dk-tm4c129x/README.txt
+++ b/nuttx/configs/dk-tm4c129x/README.txt
@@ -411,29 +411,7 @@ Networking Support
Networking support via the can be added to NSH by selecting the following
configuration options.
-==================================================
-file1: CONFIG_ARCH_HAVE_NET=y
-file1: CONFIG_ARP_SEND_DELAYMSEC=20
-file1: CONFIG_ARP_SEND_MAXTRIES=5
-file1: CONFIG_IOB_BUFSIZE=196
-file1: CONFIG_IOB_NBUFFERS=36
-file1: CONFIG_IOB_NCHAINS=8
-file1: CONFIG_IOB_THROTTLE=8
-file1: CONFIG_NSOCKET_DESCRIPTORS=8
-file1: CONFIG_SCHED_HPWORK=y
-file1: CONFIG_SCHED_HPWORKPERIOD=50000
-file1: CONFIG_SCHED_HPWORKPRIORITY=224
-file1: CONFIG_SCHED_HPWORKSTACKSIZE=2048
-file1: CONFIG_SCHED_WORKQUEUE=y
-file1: CONFIG_SIG_SIGWORK=17
-file1: =y
-file1:
-file1:
-file1:
-file1: =y
-file1: =y
-file1: CONFIG_WEBCLIENT_TIMEOUT=10
-==================================================
+
Selecting the EMAC peripheral
-----------------------------
@@ -573,20 +551,23 @@ f Application Configuration -> Network Utilities
Builtin Apps:
nsh>
- NOTE: If you enable this feature, you experience a delay on booting.
- That is because the start-up logic waits for the network connection
- to be established before starting NuttX. In a real application, you
- would probably want to do the network bringup on a separate thread
- so that access to the NSH prompt is not delayed.
+ NOTE: If you enable this networking as described above, you will
+ experience a delay on booting NSH. That is because the start-up logic
+ waits for the network connection to be established before starting
+ NuttX. In a real application, you would probably want to do the
+ network bringup on a separate thread so that access to the NSH prompt
+ is not delayed.
This delay will be especially long if the board is not connected to
- a network because additional time will be required to fail with timeout
- errors.
+ a network. On the order of minutes! You will probably think that
+ NuttX has crashed! And then, when it finally does come up after
+ numerous timeouts and retries, the network will not be available --
+ even if the network cable is plugged in later.
- This delay will be especially long if the board is not connected to
- a network. On the order of a minute! You will probably think that
- NuttX has crashed! And then, when it finally does come up, the
- network will not be available.
+ The long delays can be eliminated by using a separate the network
+ initialization thread discussed below. Recovering after the network
+ becomes available requires the network monitor feature, also discussed
+ below.
Network Initialization Thread
-----------------------------
@@ -606,8 +587,66 @@ f Application Configuration -> Network Utilities
thread could poll periodically for network status, but does not).
Both of these shortcomings could be eliminated by enabling the network
- monitor. See the SAMA5 configurations for a description of what it would
- take to incorporate the network monitor feature.
+ monitor:
+
+ Network Monitor
+ ---------------
+ By default the network initialization thread will bring-up the network
+ then exit, freeing all of the resources that it required. This is a
+ good behavior for systems with limited memory.
+
+ If the CONFIG_NSH_NETINIT_MONITOR option is selected, however, then the
+ network initialization thread will persist forever; it will monitor the
+ network status. In the event that the network goes down (for example, if
+ a cable is removed), then the thread will monitor the link status and
+ attempt to bring the network back up. In this case the resources
+ required for network initialization are never released.
+
+ Pre-requisites:
+
+ - CONFIG_NSH_NETINIT_THREAD as described above.
+
+ - CONFIG_TIVA_PHY_INTERRUPTS=y. The TM4C129X EMAC block supports PHY
+ interrupts. This is true whether the TM4C internal PHY is used or
+ if an external PHY is used. If this option is selected, then support
+ for the PHY interrupt will be built in and the following additional
+ settings will be automatically selected:
+
+ CONFIG_NETDEV_PHY_IOCTL. Enable PHY IOCTL commands in the Ethernet
+ device driver. Special IOCTL commands must be provided by the Ethernet
+ driver to support certain PHY operations that will be needed for link
+ management. There operations are not complex and are implemented for
+ the Atmel SAMA5 family.
+
+ CONFIG_ARCH_PHY_INTERRUPT. This is not a user selectable option.
+ Rather, it is set when you select a board that supports PHY
+ interrupts. In most architectures, the PHY interrupt is not
+ associated with the Ethernet driver at all; the Tiva architecture is
+ an exception. For most other architectures, the PHY interrupt is
+ provided via some board-specific GPIO. In any event, the board-
+ specific logic must provide support for the PHY interrupt. To do
+ this, the board logic must do two things: (1) It must provide the
+ function arch_phy_irq() as described and prototyped in the
+ nuttx/include/nuttx/arch.h, and (2) it must select
+ CONFIG_ARCH_PHY_INTERRUPT in the board configuration file to
+ advertise that it supports arch_phy_irq().
+
+ And a few other things: UDP support is required (CONFIG_NET_UDP) and
+ signals must not be disabled (CONFIG_DISABLE_SIGNALS).
+
+ Given those prerequisites, the network monitor can be selected with these
+ additional settings.
+
+ System Type -> Tiva Ethernet Configuration
+ CONFIG_TIVA_PHY_INTERRUPTS=y : Enable PHY interrupt support
+ CONFIG_ARCH_PHY_INTERRUPT=y : (auto-selected)
+ CONFIG_NETDEV_PHY_IOCTL=y : (auto-selected)
+
+ Application Configuration -> NSH Library -> Networking Configuration
+ CONFIG_NSH_NETINIT_THREAD : Enable the network initialization thread
+ CONFIG_NSH_NETINIT_MONITOR=y : Enable the network monitor
+ CONFIG_NSH_NETINIT_RETRYMSEC=2000 : Configure the network monitor as you like
+ CONFIG_NSH_NETINIT_SIGNO=18
DK-TM4129X Configuration Options
================================
@@ -776,16 +815,24 @@ Where <subdir> is one of the following:
easily disabled or reconfigured (See see the network related
configuration settings above in the section entitled "Networking").
- NOTE: In boot-up sequence is very simple in this example; all
- initialization is done sequentially (vs. in parallel) and so you will
- not see the NSH prompt until all initialization is complete. The
- network bring-up in particular will add some delay before the NSH
- prompt appears. In a real application, you would probably want to
- do the network bringup on a separate thread so that access to the
- NSH prompt is not delayed.
-
- This delay will be especially long if the board is not connected to
- a network because additional time will be required to fail with
- timeout errors. This delay can be eliminated, however, if you enable
- an NSH initialization option as described above in a paragraph
- entitled, "Network Initialization Thread."
+ By default, this configuration assumes a 10.0.0.xx network. It
+ uses a fixed IP address of 10.0.0.2 and assumes that the host is
+ at 10.0.0.1 and that the host provides the default router. The
+ network mask is 255.255.255.0. These address can be changed by
+ modifying the settings in the configuration. DHCPC can be enabled
+ be modifying this default configuration (See the "Networking"
+ section above).
+
+ The network initialization thread is enabled in this example. NSH
+ will create a separate thread when it starts to initialize the
+ network. This eliminates start-up delays to bring the network. This
+ feature may be disabled by reverting the configuration described above
+ under "Network Initialization Thread"
+
+ The persistent network monitor thread is also available in this
+ configuration. The network monitor will monitor changes in the
+ link status and gracefully take the network down when the link is
+ lost (for example, if the cable is disconnected) and bring the
+ network back up when the link becomes available again (for example,
+ if the cable is reconnected. The paragraph "Network Monitor" above
+ for additional information.
diff --git a/nuttx/configs/dk-tm4c129x/nsh/defconfig b/nuttx/configs/dk-tm4c129x/nsh/defconfig
index 781a6751c..a45029233 100644
--- a/nuttx/configs/dk-tm4c129x/nsh/defconfig
+++ b/nuttx/configs/dk-tm4c129x/nsh/defconfig
@@ -214,7 +214,7 @@ CONFIG_TIVA_GPIOP_IRQS=y
#
CONFIG_TIVA_PHY_INTERNAL=y
CONFIG_TIVA_AUTONEG=y
-# CONFIG_TIVA_PHY_INTERRUPTS is not set
+CONFIG_TIVA_PHY_INTERRUPTS=y
CONFIG_TIVA_EMAC_NRXDESC=8
CONFIG_TIVA_EMAC_NTXDESC=4
# CONFIG_TIVA_EMAC_ENHANCEDDESC is not set
@@ -451,6 +451,7 @@ CONFIG_NETDEVICES=y
# CONFIG_NET_E1000 is not set
# CONFIG_NET_SLIP is not set
# CONFIG_NET_VNET is not set
+CONFIG_ARCH_PHY_INTERRUPT=y
# CONFIG_PIPES is not set
# CONFIG_PM is not set
# CONFIG_POWER is not set
@@ -552,7 +553,7 @@ CONFIG_NET_SOLINGER=y
#
# Network Device Operations
#
-# CONFIG_NETDEV_PHY_IOCTL is not set
+CONFIG_NETDEV_PHY_IOCTL=y
#
# Raw Socket Support
@@ -928,7 +929,12 @@ CONFIG_NSH_CONSOLE=y
#
# Networking Configuration
#
-# CONFIG_NSH_NETINIT_THREAD is not set
+CONFIG_NSH_NETINIT_THREAD=y
+CONFIG_NSH_NETINIT_MONITOR=y
+CONFIG_NSH_NETINIT_SIGNO=18
+CONFIG_NSH_NETINIT_RETRYMSEC=2000
+CONFIG_NSH_NETINIT_THREAD_STACKSIZE=1568
+CONFIG_NSH_NETINIT_THREAD_PRIORITY=100
CONFIG_NSH_IPADDR=0x0a000002
CONFIG_NSH_DRIPADDR=0x0a000001
CONFIG_NSH_NETMASK=0xffffff00
@@ -1021,6 +1027,7 @@ CONFIG_READLINE_ECHO=y
#
# PHY Tool
#
+# CONFIG_SYSTEM_MDIO is not set
#
# Power Off
diff --git a/nuttx/configs/sama5d4-ek/README.txt b/nuttx/configs/sama5d4-ek/README.txt
index 6cb32fb03..532332af4 100644
--- a/nuttx/configs/sama5d4-ek/README.txt
+++ b/nuttx/configs/sama5d4-ek/README.txt
@@ -1509,7 +1509,7 @@ Networking
- And a few other things: UDP support is required (CONFIG_NET_UDP) and
signals must not be disabled (CONFIG_DISABLE_SIGNALS).
- Given those prerequisites, the newtork monitor can be selected with these additional settings.
+ Given those prerequisites, the network monitor can be selected with these additional settings.
Networking Support -> Networking Device Support
CONFIG_NETDEV_PHY_IOCTL=y : Enable PHY ioctl support