⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstract.txt

📁 UART I/O and Memory Allocation Example for GNU The project GNU_IODemo shows how to use memory alloc
💻 TXT
字号:

The projects Keil_IODemo and GNU_IODemo show how to use 
memory allocation routines (malloc) and char I/O (printf,
scanf) with the Keil and the GNU toolchain.
\
The I/O functions are adapted for the Analog Devices ADuC7000
series using the SERIAL.C module.

KEIL CA ARM COMPILER - RUN-TIME SYSTEM
======================================
The Keil CA ARM Compiler implements very efficient run-time
libraries that are compiled in Thumb mode for optimium code
density.  The memory pool for the malloc function is defined
in the file main.c.  It should be noted that no I/O functions
of the Keil ARM run-time library require 


GNU GCC uLIBC RUN-TIME SYSTEM
=============================
The GNU run-time libraries are configured with the file
SYSCALL.C that implements the memory pool.  At mimium the
GNU libraries require 16KB memory pool size (which is too
much for most single-chip devices).  

Several of the GNU run-time library functions (i.e. scanf)
require a memory pool.  Such I/O functions can be only operated
if the memory pool is correctly configured.

In the example GNU_IODemo the memory heap for malloc functions 
is configured from 0x10000000 - 0x10010000. This memory is not 
available on single-chip devices like the ADuC7024. Therefore 
this GNU example can only be executed under the Simulator. 


CODE / DATA SIZE COMPARISON
===========================
Project includes the library functions: printf, scanf, malloc.

                     Total             
                   Code Size         Data Size      Stack Size
-----------------------------------------------------------------------
KEIL CA Beta 1    3.672 Bytes          8 Bytes       124 Bytes

GNU 3.22         30.748 Bytes      1.544 Bytes		 812 Bytes
-----------------------------------------------------------------------

Notes: 
- The Keil LA Linker/Locater map file includes all require memory,
  including heap (1024 bytes) and the defined stack space (1168 bytes). 
  The complete  run-time system of this example needs just 8 bytes for 
  the heap root and the getchar buffer. The run-time library itself is
  fully reentrant and allocates temporary variables on the stack.
  The linker has full control of available memory.

- The GNU Linker memory map report does not include the stack space
  (which is defined with absolute addresses in the startup file) and 
  the memory heap (defined as constant values in the SYSCALL.C file).


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -