mirror of
https://github.com/apache/nuttx.git
synced 2025-01-13 08:38:38 +08:00
Add mm/README.txt
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5140 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
ca306c29d1
commit
b94212a272
5 changed files with 84 additions and 3 deletions
|
@ -3332,4 +3332,6 @@
|
|||
Not all features have been verified. The ENC28J60 network
|
||||
is not yet functional.
|
||||
* configs/stm3240g-eval/discover: A configuration for testing
|
||||
the UDP discovery utility. Contributed by Max Holtzberg.
|
||||
the UDP discovery utility. Contributed by Max Holtzberg.
|
||||
* mm/README.txt: Add a new README file.
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<tr align="center" bgcolor="#e4e4e4">
|
||||
<td>
|
||||
<h1><big><font color="#3c34ec"><i>NuttX README Files</i></font></big></h1>
|
||||
<p>Last Updated: August 1, 2012</p>
|
||||
<p>Last Updated: September 12, 2012</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -237,6 +237,8 @@
|
|||
| | `- <a href="http://nuttx.svn.sourceforge.net/viewvc/nuttx/trunk/nuttx/lib/README.txt?view=log"><b><i>README.txt</i></b></a>
|
||||
| |- libxx/
|
||||
| | `- <a href="http://nuttx.svn.sourceforge.net/viewvc/nuttx/trunk/nuttx/libxx/README.txt?view=log"><b><i>README.txt</i></b></a>
|
||||
| |- mm/
|
||||
| | `- <a href="http://nuttx.svn.sourceforge.net/viewvc/nuttx/trunk/nuttx/mm/README.txt?view=log"><b><i>README.txt</i></b></a>
|
||||
| |- syscall/
|
||||
| | `- <a href="http://nuttx.svn.sourceforge.net/viewvc/nuttx/trunk/nuttx/syscall/README.txt?view=log"><b><i>README.txt</i></b></a>
|
||||
| `- tools/
|
||||
|
|
|
@ -806,6 +806,8 @@ nuttx
|
|||
| `- README.txt
|
||||
|- libxx/
|
||||
| `- README.txt
|
||||
|- mm/
|
||||
| `- README.txt
|
||||
|- syscall/
|
||||
| `- README.txt
|
||||
`- tools/
|
||||
|
|
71
mm/README.txt
Normal file
71
mm/README.txt
Normal file
|
@ -0,0 +1,71 @@
|
|||
mm/README.txt
|
||||
=============
|
||||
|
||||
This directory contains the NuttX memory management logic. This include:
|
||||
|
||||
1) The standard memory management functions as prototyped in stdlib.h as
|
||||
specified in the Base definitions volume of IEEE Std 1003.1-2001. This
|
||||
include the files:
|
||||
|
||||
o Standard Interfaces: mm_malloc.c, mm_calloc.c, mm_realloc.c,
|
||||
mm_memalign.c, mm_free.c
|
||||
o Less-Standard Interfaces: mm_zalloc.c, mm_mallinfo.c
|
||||
o Internal Implementation: mm_initialize.c mm_sem.c mm_addfreechunk.c
|
||||
mm_size2ndx.c mm_shrinkchunk.c, mm_internal.h
|
||||
o Build and Configuration files: Kconfig, Makefile
|
||||
|
||||
Memory Models:
|
||||
|
||||
o Small Memory Model. If the MCU supports only 16-bit data addressing
|
||||
then the small memory model is automatically used. The maximum size
|
||||
of the heap is then 64K. The small memory model can also be forced
|
||||
MCUs with wider addressing by defining CONFIG_SMALL_MEMORY in the
|
||||
NuttX configuration file.
|
||||
o Large Memory Model. Otherwise, the allocator uses a model that
|
||||
supports a heap of up to 4G.
|
||||
|
||||
This implementation uses a variable length allocator with the following
|
||||
properties:
|
||||
|
||||
o Overhead: Either 8- or 4-bytes per allocation for large and small
|
||||
models, respectively.
|
||||
o Alignment: All allocations are aligned to 8- or 4-bytes for large
|
||||
and small models, respectively.
|
||||
|
||||
2) Test Program. There is also a host-best test program that can be
|
||||
used to verify the memory manager. These are the file:
|
||||
|
||||
Makefile.test, mm_test.c, and mm_environment.h.
|
||||
|
||||
Build instructions:
|
||||
|
||||
make -f Makefile.test
|
||||
|
||||
The executable will be built in the top-level directory as nuttx/mm_text
|
||||
(or mm_test.exe under Cygwin).
|
||||
|
||||
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.
|
||||
|
||||
The granule allocator interfaces are defined in nuttx/include/nuttx/gran.h.
|
||||
The granule allocator consists of these files in this directory:
|
||||
|
||||
mm_gran.h, mm_granalloc.c, mm_grancritical.c, mm_granfree.c
|
||||
mm_graninit.c
|
||||
|
||||
The granule allocator is not used anywhere within the base NuttX code
|
||||
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.
|
||||
|
||||
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.
|
|
@ -105,12 +105,16 @@ extern void mm_addregion(FAR void *heapstart, size_t heapsize);
|
|||
|
||||
/* Debug macros are always on */
|
||||
|
||||
# define CONFIG_DEBUG
|
||||
# define CONFIG_DEBUG 1
|
||||
|
||||
# undef mdbg
|
||||
# define mdbg(format, arg...) printf(format, ##arg)
|
||||
# undef mvdg
|
||||
# define mvdbg(format, arg...) printf(format, ##arg)
|
||||
# undef mlldbg
|
||||
# define mlldbg(format, arg...) printf(format, ##arg)
|
||||
# undef mllvdg
|
||||
# define mllvdbg(format, arg...) printf(format, ##arg)
|
||||
|
||||
#else
|
||||
# define mm_errno get_errno()
|
||||
|
|
Loading…
Reference in a new issue