📄 abstract.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 + -