aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679>2012-09-14 20:16:06 +0000
committerpatacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679>2012-09-14 20:16:06 +0000
commit7c82cf692476202eb80d4caa4122c4cd390d2b2d (patch)
treea9676ec3b373a3a02785f9279218142d7c00d41c
parent2c2ba7f0c5f99aef3fac0eaa8a2c7a79c5faa74d (diff)
downloadpx4-firmware-7c82cf692476202eb80d4caa4122c4cd390d2b2d.tar.gz
px4-firmware-7c82cf692476202eb80d4caa4122c4cd390d2b2d.tar.bz2
px4-firmware-7c82cf692476202eb80d4caa4122c4cd390d2b2d.zip
Fix ENC28J60 chip enable issue
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@5153 7fd9a85b-ad96-42d3-883c-3090e2eb8679
-rw-r--r--nuttx/configs/fire-stm32v2/README.txt10
-rw-r--r--nuttx/configs/fire-stm32v2/nsh/defconfig126
-rw-r--r--nuttx/configs/fire-stm32v2/src/up_mmcsd.c1
-rw-r--r--nuttx/drivers/mtd/sst25.c2
-rw-r--r--nuttx/drivers/net/enc28j60.c12
-rw-r--r--nuttx/include/nuttx/gran.h9
-rw-r--r--nuttx/mm/README.txt35
-rw-r--r--nuttx/mm/mm_graninit.c9
8 files changed, 128 insertions, 76 deletions
diff --git a/nuttx/configs/fire-stm32v2/README.txt b/nuttx/configs/fire-stm32v2/README.txt
index d01ba3219..3a94365af 100644
--- a/nuttx/configs/fire-stm32v2/README.txt
+++ b/nuttx/configs/fire-stm32v2/README.txt
@@ -765,10 +765,18 @@ Where <subdir> is one of the following:
contains support for some built-in applications that can be enabled by making
some additional minor change to the configuration file.
- NOTE: This configuration uses to the mconf configuration tool to control
+ Reconfiguring: This configuration uses to the mconf configuration tool to control
the configuration. See the section entitled "NuttX Configuration Tool"
in the top-level README.txt file.
+ Start Delays: If no SD card is present in the slot, or if the network is not
+ connected, then there will be long start-up delays before you get the NSH
+ prompt. If I am focused on ENC28J60 debug, I usually disable MMC/SD so that
+ I don't have to bother with the SD card:
+
+ CONFIG_STM32_SDIO=n
+ CONFIG_MMCSD=n
+
STATUS: The board port is basically functional. Not all features have been
verified. The ENC28J60 network is not yet functional. Networking is
enabled by default in this configuration for testing purposes. To use this
diff --git a/nuttx/configs/fire-stm32v2/nsh/defconfig b/nuttx/configs/fire-stm32v2/nsh/defconfig
index 1a849ad36..d7cd910a2 100644
--- a/nuttx/configs/fire-stm32v2/nsh/defconfig
+++ b/nuttx/configs/fire-stm32v2/nsh/defconfig
@@ -289,8 +289,8 @@ CONFIG_NAME_MAX=32
CONFIG_PREALLOC_MQ_MSGS=4
CONFIG_MQ_MAXMSGSIZE=32
CONFIG_MAX_WDOGPARMS=2
-CONFIG_PREALLOC_WDOGS=4
-CONFIG_PREALLOC_TIMERS=4
+CONFIG_PREALLOC_WDOGS=16
+CONFIG_PREALLOC_TIMERS=8
#
# Stack and heap information
@@ -387,12 +387,17 @@ CONFIG_USART2_BITS=8
CONFIG_USART2_PARITY=0
CONFIG_USART2_2STOP=0
CONFIG_USBDEV=y
-# CONFIG_USBDEV_COMPOSITE is not set
+
+#
+# Device Controller Driver Options
+#
# CONFIG_USBDEV_ISOCHRONOUS is not set
# CONFIG_USBDEV_DUALSPEED is not set
CONFIG_USBDEV_SELFPOWERED=y
# CONFIG_USBDEV_BUSPOWERED is not set
+# CONFIG_USBDEV_DMA is not set
# CONFIG_USBDEV_TRACE is not set
+# CONFIG_USBDEV_COMPOSITE is not set
# CONFIG_PL2303 is not set
# CONFIG_CDCACM is not set
CONFIG_USBMSC=y
@@ -521,142 +526,142 @@ CONFIG_NAMEDAPP=y
#
#
-# ADC example
+# ADC Example
#
# CONFIG_EXAMPLES_ADC is not set
#
-# Buttons example
+# Buttons Example
#
# CONFIG_EXAMPLES_BUTTONS is not set
#
-# CAN example
+# CAN Example
#
# CONFIG_EXAMPLES_CAN is not set
#
-# USB CDC/ACM class driver example
+# USB CDC/ACM Class Driver Example
#
# CONFIG_EXAMPLES_CDCACM is not set
#
-# USB composite class driver example
+# USB composite Class Driver Example
#
# CONFIG_EXAMPLES_COMPOSITE is not set
#
-# DHCP server example
+# DHCP Server Example
#
# CONFIG_EXAMPLES_DHCPD is not set
#
-# FTP client example
+# FTP Client Example
#
# CONFIG_EXAMPLES_FTPC is not set
#
-# FTP server example
+# FTP Server Example
#
# CONFIG_EXAMPLES_FTPD is not set
#
-# "Hello, World!" example
+# "Hello, World!" Example
#
# CONFIG_EXAMPLES_HELLO is not set
#
-# "Hello, World!" C++ example
+# "Hello, World!" C++ Example
#
# CONFIG_EXAMPLES_HELLOXX is not set
#
-# USB HID keyboard example
+# USB HID Keyboard Example
#
# CONFIG_EXAMPLES_HIDKBD is not set
#
-# IGMP example
+# IGMP Example
#
# CONFIG_EXAMPLES_IGMP is not set
#
-# LCD read/write example
+# LCD Read/Write Example
#
# CONFIG_EXAMPLES_LCDRW is not set
#
-# Memory management example
+# Memory Management Example
#
# CONFIG_EXAMPLES_MM is not set
#
-# File system mount example
+# File System Mount Example
#
# CONFIG_EXAMPLES_MOUNT is not set
#
-# FreeModBus example
+# FreeModBus Example
#
# CONFIG_EXAMPLES_MODBUS is not set
#
-# Network test example
+# Network Test Example
#
# CONFIG_EXAMPLES_NETTEST is not set
#
-# NuttShell (NSH) example
+# NuttShell (NSH) Example
#
CONFIG_EXAMPLES_NSH=y
#
-# NULL example
+# NULL Example
#
# CONFIG_EXAMPLES_NULL is not set
#
-# NX graphics example
+# NX Graphics Example
#
# CONFIG_EXAMPLES_NX is not set
#
-# NxConsole example
+# NxConsole Example
#
# CONFIG_EXAMPLES_NXCONSOLE is not set
#
-# NXFFS file system example
+# NXFFS File System Example
#
# CONFIG_EXAMPLES_NXFFS is not set
#
-# NXFLAT example
+# NXFLAT Example
#
# CONFIG_EXAMPLES_NXFLAT is not set
#
-# NX graphics "Hello, World!" example
+# NX Graphics "Hello, World!" Example
#
# CONFIG_EXAMPLES_NXHELLO is not set
#
-# NX graphics image example
+# NX Graphics image Example
#
# CONFIG_EXAMPLES_NXIMAGE is not set
#
-# NX graphics lines example
+# NX Graphics lines Example
#
# CONFIG_EXAMPLES_NXLINES is not set
#
-# NX graphics text example
+# NX Graphics Text Example
#
# CONFIG_EXAMPLES_NXTEXT is not set
#
-# OS test example
+# OS Test Example
#
# CONFIG_EXAMPLES_OSTEST is not set
@@ -666,81 +671,86 @@ CONFIG_EXAMPLES_NSH=y
# CONFIG_EXAMPLES_PASHELLO is not set
#
-# Pipe example
+# Pipe Example
#
# CONFIG_EXAMPLES_PIPE is not set
#
-# Poll example
+# Poll Example
#
# CONFIG_EXAMPLES_POLL is not set
#
-# Pulse width modulation (PWM) example
+# Pulse Width Modulation (PWM) Example
#
#
-# Quadrature encoder example
+# Quadrature Encoder Example
#
# CONFIG_EXAMPLES_QENCODER is not set
#
-# RGMP example
+# RGMP Example
#
# CONFIG_EXAMPLES_RGMP is not set
#
-# ROMFS example
+# ROMFS Example
#
# CONFIG_EXAMPLES_ROMFS is not set
#
-# sendmail example
+# sendmail Example
#
# CONFIG_EXAMPLES_SENDMAIL is not set
#
-# Serial loopback example
+# Serial Loopback Example
#
# CONFIG_EXAMPLES_SERLOOP is not set
#
-# Telnet daemon example
+# Telnet Daemon Example
#
# CONFIG_EXAMPLES_TELNETD is not set
#
-# THTTPD web server example
+# THTTPD Web Server Example
#
# CONFIG_EXAMPLES_THTTPD is not set
#
-# TIFF generation example
+# TIFF Generation Example
#
# CONFIG_EXAMPLES_TIFF is not set
#
-# Touchscreen example
+# Touchscreen Example
#
# CONFIG_EXAMPLES_TOUCHSCREEN is not set
#
-# UDP example
+# UDP Example
#
# CONFIG_EXAMPLES_UDP is not set
#
-# uIP web server example
+# UDP Discovery Daemon Example
+#
+# CONFIG_EXAMPLE_DISCOVER is not set
+
+#
+# uIP Web Server Example
#
# CONFIG_EXAMPLES_UIP is not set
#
-# USB serial test example
+# USB Serial Test Example
#
# CONFIG_EXAMPLES_USBSERIAL is not set
#
-# USB mass storage class example
+# USB Mass Storage Class Example
#
CONFIG_EXAMPLES_USBMSC=y
CONFIG_EXAMPLES_USBMSC_BUILTIN=y
@@ -759,26 +769,30 @@ CONFIG_EXAMPLES_USBMSC_DEVPATH3="/dev/mmcsd2"
# CONFIG_EXAMPLES_USBMSC_TRACEINTERRUPTS is not set
#
-# USB serial terminal example
+# USB Serial Terminal Example
#
# CONFIG_EXAMPLES_USBTERM is not set
#
-# Watchdog timer example
+# Watchdog timer Example
#
# CONFIG_EXAMPLES_WATCHDOG is not set
#
-# wget example
+# wget Example
#
# CONFIG_EXAMPLES_WGET is not set
#
-# WLAN example
+# WLAN Example
#
# CONFIG_EXAMPLES_WLAN is not set
#
+# XML RPC Example
+#
+
+#
# Interpreters
#
@@ -858,6 +872,16 @@ CONFIG_NETUTILS_WEBCLIENT=y
# CONFIG_NETUTILS_WEBSERVER is not set
#
+# UDP Discovery Utility
+#
+# CONFIG_NETUTILS_DISCOVER is not set
+
+#
+# XML-RPC library
+#
+# CONFIG_NETUTILS_XMLRPC is not set
+
+#
# ModBus
#
diff --git a/nuttx/configs/fire-stm32v2/src/up_mmcsd.c b/nuttx/configs/fire-stm32v2/src/up_mmcsd.c
index c0c6693d3..e06a17e89 100644
--- a/nuttx/configs/fire-stm32v2/src/up_mmcsd.c
+++ b/nuttx/configs/fire-stm32v2/src/up_mmcsd.c
@@ -47,6 +47,7 @@
#include <nuttx/sdio.h>
#include <nuttx/mmcsd.h>
+#include "stm32_sdio.h"
#include "fire-internal.h"
/****************************************************************************
diff --git a/nuttx/drivers/mtd/sst25.c b/nuttx/drivers/mtd/sst25.c
index 01838f078..66d201add 100644
--- a/nuttx/drivers/mtd/sst25.c
+++ b/nuttx/drivers/mtd/sst25.c
@@ -1,5 +1,5 @@
/************************************************************************************
- * drivers/mtd/m25px.c
+ * drivers/mtd/sst25.c
* Driver for SPI-based SST25 FLASH.
*
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
diff --git a/nuttx/drivers/net/enc28j60.c b/nuttx/drivers/net/enc28j60.c
index d3c735b11..6ac399a19 100644
--- a/nuttx/drivers/net/enc28j60.c
+++ b/nuttx/drivers/net/enc28j60.c
@@ -652,14 +652,14 @@ static uint8_t enc_rdbreg(FAR struct enc_driver_s *priv, uint8_t ctrlreg)
DEBUGASSERT(priv && priv->spi);
- /* Select ENC28J60 chip */
-
- enc_select(priv);
-
/* Set the bank */
enc_setbank(priv, GETBANK(ctrlreg));
+ /* Select ENC28J60 chip */
+
+ enc_select(priv);
+
/* Send the RCR command and collect the data. How we collect the data
* depends on if this is a PHY/CAN or not. The normal sequence requires
* 16-clocks: 8 to clock out the cmd and 8 to clock in the data.
@@ -672,10 +672,10 @@ static uint8_t enc_rdbreg(FAR struct enc_driver_s *priv, uint8_t ctrlreg)
* 8 dummy bits, and 8 to clock in the PHY/MAC data.
*/
- (void)SPI_SEND(priv->spi, 0); /* Clock in the dummy byte */
+ (void)SPI_SEND(priv->spi, 0); /* Clock in the dummy byte */
}
- rddata = SPI_SEND(priv->spi, 0); /* Clock in the data */
+ rddata = SPI_SEND(priv->spi, 0); /* Clock in the data */
/* De-select ENC28J60 chip */
diff --git a/nuttx/include/nuttx/gran.h b/nuttx/include/nuttx/gran.h
index 5390618a3..5e980dd9c 100644
--- a/nuttx/include/nuttx/gran.h
+++ b/nuttx/include/nuttx/gran.h
@@ -92,11 +92,10 @@ extern "C" {
* Set up one granule allocator instance. Allocations will be aligned to
* the alignment size (log2align; allocations will be in units of the
* granule size (log2gran). Larger granules will give better performance
- * and less overhead but more losses of memory due to alignment
- * quantization waste. Additional memory waste can occur form alignment;
- * log2align should be set to 0 unless you are using the granule allocator
- * to manage DMA memory and your hardware has specific memory alignment
- * requirements.
+ * and less overhead but more losses of memory due to quantization waste.
+ * Additional memory waste can occur from alignment; log2align should be
+ * set to 0 unless you are using the granule allocator to manage DMA memory
+ * and your hardware has specific memory alignment requirements.
*
* Geneneral Usage Summary. This is an example using the GCC section
* attribute to position a DMA heap in memory (logic in the linker script
diff --git a/nuttx/mm/README.txt b/nuttx/mm/README.txt
index b0b80deae..2668432e3 100644
--- a/nuttx/mm/README.txt
+++ b/nuttx/mm/README.txt
@@ -46,8 +46,8 @@ This directory contains the NuttX memory management logic. This include:
3) Granule Allocator. A non-standard granule allocator is also available
in this directory The granule allocator allocates memory in units
- of a fixed sized block ("granule"). All memory is aligned to the size
- of one granule.
+ of a fixed sized block ("granule"). Allocations may be aligned to a user-
+ provided address boundary.
The granule allocator interfaces are defined in nuttx/include/nuttx/gran.h.
The granule allocator consists of these files in this directory:
@@ -59,13 +59,34 @@ This directory contains the NuttX memory management logic. This include:
as of this writing. The intent of the granule allocator is to provide
a tool to support platform-specific management of aligned DMA memory.
- NOTE: Because each granule is aligned to the granule size and each
- allocations is in units of the granule size, selection of the granule
- size is important: Larger granules will give better performance and
- less overhead but more losses of memory due to alignment and quantization
- waste.
+ NOTE: Because each granule may be aligned and each allocation is in
+ units of the granule size, selection of the granule size is important:
+ Larger granules will give better performance and less overhead but more
+ losses of memory due to quantization waste. Additional memory waste
+ can occur from alignment; Of course, heap alignment should no be
+ used unless (a) you are using the granule allocator to manage DMA memory
+ and (b) your hardware has specific memory alignment requirements.
The current implementation also restricts the maximum allocation size
to 32 granules. That restriction could be eliminated with some
additional coding effort, but currently requires larger granule
sizes for larger allocations.
+
+ Geneneral Usage Example. This is an example using the GCC section
+ attribute to position a DMA heap in memory (logic in the linker script
+ would assign the section .dmaheap to the DMA memory.
+
+ FAR uint32_t g_dmaheap[DMAHEAP_SIZE] __attribute__((section(.dmaheap)));
+
+ The heap is created by calling gran_initialize. Here the granual size
+ is set to 64 bytes and the alignment to 16 bytes:
+
+ GRAN_HANDLE handle = gran_initialize(g_dmaheap, DMAHEAP_SIZE, 6, 4);
+
+ Then the GRAN_HANDLE can be used to allocate memory (There is no
+ GRAN_HANDLE if CONFIG_GRAN_SINGLE=y):
+
+ FAR uint8_t *dma_memory = (FAR uint8_t *)gran_alloc(handle, 47);
+
+ The actual memory allocates will be 64 byte (wasting 17 bytes) and
+ will be aligned at least to (1 << log2align).
diff --git a/nuttx/mm/mm_graninit.c b/nuttx/mm/mm_graninit.c
index 16cebdcf3..e43839ad6 100644
--- a/nuttx/mm/mm_graninit.c
+++ b/nuttx/mm/mm_graninit.c
@@ -158,11 +158,10 @@ gran_common_initialize(FAR void *heapstart, size_t heapsize, uint8_t log2gran,
* Set up one granule allocator instance. Allocations will be aligned to
* the alignment size (log2align; allocations will be in units of the
* granule size (log2gran). Larger granules will give better performance
- * and less overhead but more losses of memory due to alignment
- * quantization waste. Additional memory waste can occur form alignment;
- * log2align should be set to 0 unless you are using the granule allocator
- * to manage DMA memory and your hardware has specific memory alignment
- * requirements.
+ * and less overhead but more losses of memory due to quantization waste.
+ * Additional memory waste can occur from alignment; log2align should be
+ * set to 0 unless you are using the granule allocator to manage DMA memory
+ * and your hardware has specific memory alignment requirements.
*
* Geneneral Usage Summary. This is an example using the GCC section
* attribute to position a DMA heap in memory (logic in the linker script