mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 16:50:55 +08:00
Fix heap setup problem
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1793 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
@@ -130,7 +130,7 @@ int lm3s_hardfault(int irq, FAR void *context)
|
|||||||
|
|
||||||
if (insn == INSN_SVC0)
|
if (insn == INSN_SVC0)
|
||||||
{
|
{
|
||||||
llvdbg("Forward SVCall\n");
|
sllvdbg("Forward SVCall\n");
|
||||||
return lm3s_svcall(LM3S_IRQ_SVCALL, context);
|
return lm3s_svcall(LM3S_IRQ_SVCALL, context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ CONFIG_ARCH_BOARD=eagle100
|
|||||||
CONFIG_ARCH_BOARD_EAGLE100=y
|
CONFIG_ARCH_BOARD_EAGLE100=y
|
||||||
CONFIG_BOARD_LOOPSPERMSEC=4531
|
CONFIG_BOARD_LOOPSPERMSEC=4531
|
||||||
CONFIG_DRAM_SIZE=0x00010000
|
CONFIG_DRAM_SIZE=0x00010000
|
||||||
CONFIG_DRAM_START=0x00000000
|
CONFIG_DRAM_START=0x20000000
|
||||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||||
CONFIG_ARCH_IRQPRIO=y
|
CONFIG_ARCH_IRQPRIO=y
|
||||||
CONFIG_DRAM_NUTTXENTRY=0x00002000
|
CONFIG_DRAM_NUTTXENTRY=0x00002000
|
||||||
|
|||||||
@@ -64,6 +64,8 @@
|
|||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
static boolean g_nest;
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: up_ledinit
|
* Name: up_ledinit
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -78,6 +80,7 @@ void up_ledinit(void)
|
|||||||
/* Configure Port E, Bit 1 as an output, initial value=OFF */
|
/* Configure Port E, Bit 1 as an output, initial value=OFF */
|
||||||
|
|
||||||
lm3s_configgpio(GPIO_FUNC_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTE | 1);
|
lm3s_configgpio(GPIO_FUNC_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORTE | 1);
|
||||||
|
g_nest = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -92,12 +95,14 @@ void up_ledon(int led)
|
|||||||
case LED_HEAPALLOCATE:
|
case LED_HEAPALLOCATE:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
case LED_IRQSENABLED:
|
|
||||||
case LED_STACKCREATED:
|
|
||||||
case LED_INIRQ:
|
case LED_INIRQ:
|
||||||
case LED_SIGNAL:
|
case LED_SIGNAL:
|
||||||
case LED_ASSERTION:
|
case LED_ASSERTION:
|
||||||
case LED_PANIC:
|
case LED_PANIC:
|
||||||
|
g_nest++;
|
||||||
|
case LED_IRQSENABLED:
|
||||||
|
case LED_STACKCREATED:
|
||||||
modifyreg32(LM3S_GPIOE_DATA, 0, (1 << 1));
|
modifyreg32(LM3S_GPIOE_DATA, 0, (1 << 1));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -113,16 +118,19 @@ void up_ledoff(int led)
|
|||||||
{
|
{
|
||||||
case LED_IRQSENABLED:
|
case LED_IRQSENABLED:
|
||||||
case LED_STACKCREATED:
|
case LED_STACKCREATED:
|
||||||
|
case LED_STARTED:
|
||||||
|
case LED_HEAPALLOCATE:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LED_STARTED:
|
|
||||||
case LED_HEAPALLOCATE:
|
|
||||||
case LED_INIRQ:
|
case LED_INIRQ:
|
||||||
case LED_SIGNAL:
|
case LED_SIGNAL:
|
||||||
case LED_ASSERTION:
|
case LED_ASSERTION:
|
||||||
case LED_PANIC:
|
case LED_PANIC:
|
||||||
modifyreg32(LM3S_GPIOE_DATA, (1 << 1), 0);
|
if (--g_nest <= 0)
|
||||||
|
{
|
||||||
|
modifyreg32(LM3S_GPIOE_DATA, (1 << 1), 0);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-16
@@ -1,7 +1,7 @@
|
|||||||
/************************************************************
|
/****************************************************************************
|
||||||
* mm_initialize.c
|
* mm_initialize.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved.
|
||||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
* notice, this list of conditions and the following disclaimer in
|
* notice, this list of conditions and the following disclaimer in
|
||||||
* the documentation and/or other materials provided with the
|
* the documentation and/or other materials provided with the
|
||||||
* distribution.
|
* distribution.
|
||||||
* 3. Neither the name Gregory Nutt nor the names of its contributors may be
|
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||||
* used to endorse or promote products derived from this software
|
* used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
* without specific prior written permission.
|
||||||
*
|
*
|
||||||
@@ -31,22 +31,22 @@
|
|||||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Included Files
|
* Included Files
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "mm_environment.h"
|
#include "mm_environment.h"
|
||||||
#include "mm_internal.h"
|
#include "mm_internal.h"
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Definitions
|
* Definitions
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Public Variables
|
* Public Variables
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/* This is the size of the heap provided to mm */
|
/* This is the size of the heap provided to mm */
|
||||||
|
|
||||||
@@ -68,11 +68,11 @@ int g_nregions;
|
|||||||
|
|
||||||
FAR struct mm_freenode_s g_nodelist[MM_NNODES];
|
FAR struct mm_freenode_s g_nodelist[MM_NNODES];
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Function: mm_initialize
|
* Function: mm_initialize
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
@@ -88,12 +88,14 @@ FAR struct mm_freenode_s g_nodelist[MM_NNODES];
|
|||||||
*
|
*
|
||||||
* Assumptions:
|
* Assumptions:
|
||||||
*
|
*
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void mm_initialize(FAR void *heapstart, size_t heapsize)
|
void mm_initialize(FAR void *heapstart, size_t heapsize)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
mlldbg("Heap: start=%p size=%u\n", heapstart, heapsize);
|
||||||
|
|
||||||
/* The following two lines have cause problems for some ZiLog compilers
|
/* The following two lines have cause problems for some ZiLog compilers
|
||||||
* in the past. Life is easier if we just the suppress them for those
|
* in the past. Life is easier if we just the suppress them for those
|
||||||
* tools.
|
* tools.
|
||||||
@@ -132,7 +134,7 @@ void mm_initialize(FAR void *heapstart, size_t heapsize)
|
|||||||
mm_addregion(heapstart, heapsize);
|
mm_addregion(heapstart, heapsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Function: mm_addregion
|
* Function: mm_addregion
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
@@ -148,7 +150,7 @@ void mm_initialize(FAR void *heapstart, size_t heapsize)
|
|||||||
*
|
*
|
||||||
* Assumptions:
|
* Assumptions:
|
||||||
*
|
*
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void mm_addregion(FAR void *heapstart, size_t heapsize)
|
void mm_addregion(FAR void *heapstart, size_t heapsize)
|
||||||
{
|
{
|
||||||
|
|||||||
+19
-17
@@ -1,7 +1,7 @@
|
|||||||
/************************************************************
|
/****************************************************************************
|
||||||
* mm_mallinfo.c
|
* mm/mm_mallinfo.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved.
|
||||||
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
* notice, this list of conditions and the following disclaimer in
|
* notice, this list of conditions and the following disclaimer in
|
||||||
* the documentation and/or other materials provided with the
|
* the documentation and/or other materials provided with the
|
||||||
* distribution.
|
* distribution.
|
||||||
* 3. Neither the name Gregory Nutt nor the names of its contributors may be
|
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||||
* used to endorse or promote products derived from this software
|
* used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
* without specific prior written permission.
|
||||||
*
|
*
|
||||||
@@ -31,39 +31,39 @@
|
|||||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Included Files
|
* Included Files
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "mm_environment.h"
|
#include "mm_environment.h"
|
||||||
#include "mm_internal.h"
|
#include "mm_internal.h"
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Definitions
|
* Definitions
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Private Data
|
* Private Data
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Private Functions
|
* Private Functions
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/************************************************************
|
/****************************************************************************
|
||||||
* mallinfo
|
* mallinfo
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* mallinfo returns a copy of updated current mallinfo.
|
* mallinfo returns a copy of updated current mallinfo.
|
||||||
*
|
*
|
||||||
************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifdef CONFIG_CAN_PASS_STRUCTS
|
#ifdef CONFIG_CAN_PASS_STRUCTS
|
||||||
struct mallinfo mallinfo(void)
|
struct mallinfo mallinfo(void)
|
||||||
@@ -103,6 +103,7 @@ int mallinfo(struct mallinfo *info)
|
|||||||
node < g_heapend[region];
|
node < g_heapend[region];
|
||||||
node = (struct mm_allocnode_s *)((char*)node + node->size))
|
node = (struct mm_allocnode_s *)((char*)node + node->size))
|
||||||
{
|
{
|
||||||
|
mvdbg("region=%d node=%p preceding=%p\n", region, node, node->preceding);
|
||||||
if (node->preceding & MM_ALLOC_BIT)
|
if (node->preceding & MM_ALLOC_BIT)
|
||||||
{
|
{
|
||||||
uordblks += node->size;
|
uordblks += node->size;
|
||||||
@@ -118,6 +119,7 @@ int mallinfo(struct mallinfo *info)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mvdbg("region=%d node=%p g_heapend=%p\n", region, node, g_heapend[region]);
|
||||||
DEBUGASSERT(node == g_heapend[region]);
|
DEBUGASSERT(node == g_heapend[region]);
|
||||||
uordblks += SIZEOF_MM_ALLOCNODE; /* account for the tail node */
|
uordblks += SIZEOF_MM_ALLOCNODE; /* account for the tail node */
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user