diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2015-01-05 12:09:33 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2015-01-05 12:09:33 -0600 |
commit | d56309c98f97b82de7e472c9508798c40b13fb6a (patch) | |
tree | b592ae3d2c44497aa4a479c03f7dcd9ed766f896 | |
parent | fbfbf9ed9afb6ce1a5757182a76deeccbf35da54 (diff) | |
download | px4-nuttx-d56309c98f97b82de7e472c9508798c40b13fb6a.tar.gz px4-nuttx-d56309c98f97b82de7e472c9508798c40b13fb6a.tar.bz2 px4-nuttx-d56309c98f97b82de7e472c9508798c40b13fb6a.zip |
DK-TM4C129X: The network monitor is no enabled by default in NSH configuration
-rw-r--r-- | nuttx/TODO | 19 | ||||
-rw-r--r-- | nuttx/configs/dk-tm4c129x/README.txt | 145 | ||||
-rw-r--r-- | nuttx/configs/dk-tm4c129x/nsh/defconfig | 13 | ||||
-rw-r--r-- | nuttx/configs/sama5d4-ek/README.txt | 2 |
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 |