DK-TM4C129X: The network monitor is no enabled by default in NSH configuration
This commit is contained in:
parent
5752f301de
commit
67bcdf5514
19
TODO
19
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)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
@ -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.
|
||||
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).
|
||||
|
||||
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."
|
||||
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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user