Update MRF24J40 starhub configuration for the SAME70 Xplained.

This commit is contained in:
Gregory Nutt 2017-08-16 09:37:51 -06:00
parent 5ef33f3e58
commit 06473e89de
6 changed files with 235 additions and 13 deletions

View File

@ -2086,8 +2086,6 @@ FAR struct spi_dev_s *sam_spibus_initialize(int port)
if (!spi->initialized)
{
/* Enable clocking to the SPI block */
flags = enter_critical_section();
#if defined(CONFIG_SAMV7_SPI0_MASTER) && defined(CONFIG_SAMV7_SPI1_MASTER)
if (spino == 0)
@ -2190,8 +2188,8 @@ FAR struct spi_dev_s *sam_spibus_initialize(int port)
* be reconfigured if there is a change.
*/
offset = (unsigned int)g_csroffset[csno];
regval = spi_getreg(spi, offset);
offset = (unsigned int)g_csroffset[csno];
regval = spi_getreg(spi, offset);
regval &= ~(SPI_CSR_CPOL | SPI_CSR_NCPHA | SPI_CSR_BITS_MASK);
regval |= (SPI_CSR_NCPHA | SPI_CSR_BITS(8));
spi_putreg(spi, regval, offset);

View File

@ -1238,6 +1238,95 @@ NOTES:
Configuration sub-directories
-----------------------------
mrf24j40-starhub
This configuration implement a hub node in a 6LoWPAN start network.
It is intended for the us the mrf24j40-starpoint configuration with
the clicker2-stm32 configurations. Essentially, the SAME70 Xplained
plays the roll of the hub in the configuration and the clicker2-stm32
boards are the endpoints in the start.
NOTES:
1. The serial console is configured by default for use with and Arduino
serial shield (UART3). You will need to reconfigure if you will
to use a different U[S]ART.
2. This configuration derives from the netnsh configuration, but adds
support for IPv6, 6LoWPAN, and the MRF24J40 IEEE 802.15.4 radio.
3. This configuration uses the Mikroe BEE MRF24j40 click boards and
connects to the SAMV71-XULT using a click shield as described above.
4. You must must have also have at least two clicker2-stm32 boards each
with an MRF24J40 BEE click board in order to run these tests.
5. The network initialization thread is NOT enabled. As a result, the
startup will hang if the Ethernet cable is not plugged in. For more
information, see the paragraphs above entitled "Network Initialization
Thread" and "Network Monitor".
6. This configuration supports logging of debug output to a circular
buffer in RAM. This feature is discussed fully in this Wiki page:
http://nuttx.org/doku.php?id=wiki:howtos:syslog . Relevant
configuration settings are summarized below:
Device Drivers:
CONFIG_RAMLOG=y : Enable the RAM-based logging feature.
CONFIG_RAMLOG_CONSOLE=n : (We don't use the RAMLOG console)
CONFIG_RAMLOG_SYSLOG=y : This enables the RAM-based logger as the
system logger.
CONFIG_RAMLOG_NONBLOCKING=y : Needs to be non-blocking for dmesg
CONFIG_RAMLOG_BUFSIZE=8192 : Buffer size is 8KiB
NOTE: This RAMLOG feature is really only of value if debug output
is enabled. But, by default, no debug output is disabled in this
configuration. Therefore, there is no logic that will add anything
to the RAM buffer. This feature is configured and in place only
to support any future debugging needs that you may have.
If you don't plan on using the debug features, then by all means
disable this feature and save 8KiB of RAM!
NOTE: There is an issue with capturing data in the RAMLOG: If
the system crashes, all of the crash dump information will go into
the RAMLOG and you will be unable to access it! You can tell that
the system has crashed because (a) it will be unresponsive and (b)
the LD2 will be blinking at about 2Hz.
You can also reconfigure to use stdout for debug output be disabling
all of the CONFIG_RAMLOG* settings listed above and enabling the
following in the .config file:
CONFIG_SYSLOG_CONSOLE=y
CONFIG_SYSLOG_SERIAL_CONSOLE=y
7. Telnet: The clicker2-stm32 star point configuration supports the
Telnet daemon, but not the Telnet client; the star hub configuration
supports the Telnet client, but not the Telnet daemon. Therefore,
the star hub can Telnet to any point in the star, the star endpoints
cannot initiate telnet sessions.
8. TCP and UDP Tests: The same TCP and UDP tests as described for
the clicker2-stm32 mrf24j40-starpoint configuration are supported on
the star endpoints, but NOT on the star hub. Therefore, all network
testing is between endpoints with the hub acting, well, only like a
hub.
The nsh> dmesg command can be use at any time on any node to see
any debug output that you have selected.
Telenet sessions may be initiated only from the hub to a star
endpoint:
C: nsh> telnet <server-ip> <-- Runs the Telnet client
Where <server-ip> is the IP address of either the E1 or I2 endpoints.
STATUS:
2017-08-16: Configurations added. Currently hangs in mrf24j40_reset()
before the NSH appears on the serial console.
netnsh:
Configures the NuttShell (nsh) located at examples/nsh. There are two

View File

@ -0,0 +1,132 @@
# CONFIG_ARCH_RAMFUNCS is not set
# CONFIG_NET_IPv4 is not set
# CONFIG_NSH_DISABLE_DATE is not set
# CONFIG_SAMV7_UART0 is not set
# CONFIG_SAMV7_UART2 is not set
# CONFIG_SAMV7_UART4 is not set
CONFIG_ARCH_BOARD_SAME70_XPLAINED=y
CONFIG_ARCH_BOARD="same70-xplained"
CONFIG_ARCH_BUTTONS=y
CONFIG_ARCH_CHIP_SAME70=y
CONFIG_ARCH_CHIP_SAME70Q=y
CONFIG_ARCH_CHIP_SAME70Q21=y
CONFIG_ARCH_CHIP_SAMV7=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_IRQBUTTONS=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH="arm"
CONFIG_ARMV7M_DCACHE=y
CONFIG_ARMV7M_ICACHE=y
CONFIG_ARMV7M_LAZYFPU=y
CONFIG_AT24XX_ADDR=0x57
CONFIG_AT24XX_EXTENDED=y
CONFIG_AT24XX_EXTSIZE=160
CONFIG_AT24XX_SIZE=2
CONFIG_BOARD_LOOPSPERMSEC=51262
CONFIG_BUILTIN=y
CONFIG_DISABLE_POLL=y
CONFIG_DRIVERS_IEEE802154=y
CONFIG_DRIVERS_WIRELESS=y
CONFIG_ETH0_PHY_KSZ8061=y
CONFIG_EXAMPLES_NSH_CXXINITIALIZE=y
CONFIG_EXAMPLES_NSH=y
CONFIG_FAT_LCNAMES=y
CONFIG_FAT_LFN=y
CONFIG_FS_FAT=y
CONFIG_FS_PROCFS=y
CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_HOST_WINDOWS=y
CONFIG_IEEE802154_I8SAK=y
CONFIG_IEEE802154_IND_PREALLOC=32
CONFIG_IEEE802154_MACDEV=y
CONFIG_IEEE802154_MRF24J40=y
CONFIG_IEEE802154_NETDEV=y
CONFIG_INTELHEX_BINARY=y
CONFIG_IOB_BUFSIZE=128
CONFIG_IOB_NBUFFERS=32
CONFIG_IOB_NCHAINS=16
CONFIG_MAC802154_NNOTIF=48
CONFIG_MAC802154_NTXDESC=32
CONFIG_MAX_TASKS=16
CONFIG_MAX_WDOGPARMS=2
CONFIG_MTD_AT24XX=y
CONFIG_MTD_AT25=y
CONFIG_MTD_CONFIG=y
CONFIG_MTD=y
CONFIG_NET_6LOWPAN=y
CONFIG_NET_BROADCAST=y
CONFIG_NET_ETH_MTU=590
CONFIG_NET_ETH_TCP_RECVWNDO=536
CONFIG_NET_HOSTNAME="MRF24J40-Hub"
CONFIG_NET_ICMPv6_NEIGHBOR=y
CONFIG_NET_ICMPv6_PING=y
CONFIG_NET_ICMPv6=y
CONFIG_NET_IPv6=y
CONFIG_NET_SOCKOPTS=y
CONFIG_NET_STAR=y
CONFIG_NET_STARHUB=y
CONFIG_NET_STATISTICS=y
CONFIG_NET_TCP_WRITE_BUFFERS=y
CONFIG_NET_TCP=y
CONFIG_NET_TCPBACKLOG=y
CONFIG_NET_UDP=y
CONFIG_NET=y
CONFIG_NETDB_DNSCLIENT=y
CONFIG_NETDB_DNSSERVER_NOADDR=y
CONFIG_NETDEV_PHY_IOCTL=y
CONFIG_NETDEV_STATISTICS=y
CONFIG_NETDEV_WIRELESS_IOCTL=y
CONFIG_NETUTILS_TELNETC=y
CONFIG_NETUTILS_TELNETD=y
CONFIG_NETUTILS_WEBCLIENT=y
CONFIG_NFILE_DESCRIPTORS=8
CONFIG_NFILE_STREAMS=8
CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_DISABLE_GET=y
CONFIG_NSH_DISABLE_PUT=y
CONFIG_NSH_DISABLE_WGET=y
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_LINELEN=64
CONFIG_NSH_MACADDR=0x00fade00deadbeef
CONFIG_NSH_NOMAC=y
CONFIG_NSH_READLINE=y
CONFIG_PREALLOC_MQ_MSGS=4
CONFIG_PREALLOC_TIMERS=4
CONFIG_RAM_SIZE=393216
CONFIG_RAM_START=0x20400000
CONFIG_RAMLOG_BUFSIZE=8192
CONFIG_RAMLOG_SYSLOG=y
CONFIG_RAMLOG=y
CONFIG_RAW_BINARY=y
CONFIG_RR_INTERVAL=200
CONFIG_SAME70XPLAINED_CLICKSHIELD=y
CONFIG_SAMV7_EMAC_HPWORK=y
CONFIG_SAMV7_EMAC0_PHYSR_100FD=0x6
CONFIG_SAMV7_EMAC0_PHYSR_100HD=0x2
CONFIG_SAMV7_EMAC0_PHYSR_10FD=0x5
CONFIG_SAMV7_EMAC0_PHYSR_10HD=0x1
CONFIG_SAMV7_EMAC0_PHYSR_ALTCONFIG=y
CONFIG_SAMV7_EMAC0_PHYSR_ALTMODE=0x7
CONFIG_SAMV7_EMAC0_PHYSR=30
CONFIG_SAMV7_EMAC0_RMII=y
CONFIG_SAMV7_EMAC0=y
CONFIG_SAMV7_GPIO_IRQ=y
CONFIG_SAMV7_GPIOA_IRQ=y
CONFIG_SAMV7_GPIOC_IRQ=y
CONFIG_SAMV7_SPI0=y
CONFIG_SAMV7_UART3=y
CONFIG_SAMV7_XDMAC=y
CONFIG_SCHED_HPWORK=y
CONFIG_SCHED_HPWORKPERIOD=50000
CONFIG_SCHED_LPWORK=y
CONFIG_SCHED_LPWORKPRIORITY=160
CONFIG_SCHED_WAITPID=y
CONFIG_SDCLONE_DISABLE=y
CONFIG_START_DAY=16
CONFIG_START_MONTH=8
CONFIG_UART3_SERIAL_CONSOLE=y
CONFIG_USER_ENTRYPOINT="nsh_main"
CONFIG_WIRELESS_IEEE802154=y
CONFIG_WIRELESS=y

View File

@ -314,7 +314,7 @@ int arch_phy_irq(FAR const char *intf, xcpt_t handler, void *arg,
else
{
nerr("ERROR: Unsupported interface: %s\n", intf);
return NULL;
return -ENODEV;
}
/* Disable interrupts until we are done. This guarantees that the

View File

@ -75,7 +75,7 @@ struct sam_priv_s
uint32_t rstcfg;
#endif
uint8_t irq;
uint8_t spidev;
uint8_t csno;
};
/****************************************************************************
@ -121,7 +121,7 @@ static struct sam_priv_s g_mrf24j40_mb1_priv =
.rstcfg = CLICK_MB1_RESET,
#endif
.irq = IRQ_MB1,
.spidev = 0,
.csno = MB1_CSNO,
};
#endif
@ -135,7 +135,7 @@ static struct sam_priv_s g_mrf24j40_mb2_priv =
.rstcfg = CLICK_MB2_RESET,
#endif
.irq = IRQ_MB2,
.spidev = 0,
.csno = MB2_CSNO,
};
#endif
@ -244,10 +244,10 @@ static int sam_mrf24j40_devsetup(FAR struct sam_priv_s *priv)
/* Initialize the SPI bus and get an instance of the SPI interface */
spi = sam_spibus_initialize(priv->spidev);
spi = sam_spibus_initialize(priv->csno);
if (spi == NULL)
{
wlerr("ERROR: Failed to initialize SPI bus %d\n", priv->spidev);
wlerr("ERROR: Failed to initialize SPI bus %d\n", priv->csno);
return -ENODEV;
}
@ -256,7 +256,7 @@ static int sam_mrf24j40_devsetup(FAR struct sam_priv_s *priv)
radio = mrf24j40_init(spi, &priv->dev);
if (radio == NULL)
{
wlerr("ERROR: Failed to initialize SPI bus %d\n", priv->spidev);
wlerr("ERROR: Failed to initialize MRF24J40 radio\n");
return -ENODEV;
}
@ -271,7 +271,7 @@ static int sam_mrf24j40_devsetup(FAR struct sam_priv_s *priv)
#ifdef CONFIG_IEEE802154_NETDEV
/* Use the IEEE802.15.4 MAC interface instance to create a 6LoWPAN
* network interface by wrapping the MAC intrface instance in a
* network interface by wrapping the MAC interface instance in a
* network device driver via mac802154dev_register().
*/
@ -286,7 +286,7 @@ static int sam_mrf24j40_devsetup(FAR struct sam_priv_s *priv)
#ifdef CONFIG_IEEE802154_MACDEV
/* If want to call these APIs from userspace, you have to wrap the MAC
* interface in a character device viamac802154dev_register().
* interface in a character device via mac802154dev_register().
*/
ret = mac802154dev_register(mac, 0);

View File

@ -368,6 +368,9 @@
#define IRQ_MB1 SAM_IRQ_PA5
#define IRQ_MB2 SAM_IRQ_PA6
#define MB1_CSNO SPI0_CS0 /* REVISIT PA5 is not one of the NPCS pins */
#define MB2_CSNO SPI0_CS1 /* REVISIT PA6 is not one of the NPCS pins */
/* SP chip selects */
#define CLICK_MB1_CS (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_SET | \