ULINKPRO Keil, ULINKPRO Datasheet - Page 32

KIT DEBUG/TRACE UNIT HIGH SPEED

ULINKPRO

Manufacturer Part Number
ULINKPRO
Description
KIT DEBUG/TRACE UNIT HIGH SPEED
Manufacturer
Keil
Type
In-Circuit, Real-Time Debugger/Programmerr
Datasheets

Specifications of ULINKPRO

Contents
Module
For Use With/related Products
ARM7, ARM9, Cortex
Lead Free Status / RoHS Status
Lead free / RoHS Compliant
Getting Started: Creating Applications with µVision
Coding Hints for the ARM7 and ARM9 Architecture
Hint
When possible, use 32-bit
data types for automatic and
parameter variables.
Use the Thumb instruction
set.
Use __swi software interrupt
functions for atomic
sequences.
Enhance struct pointer
access by placing scalars at
the beginning and arrays as
subsequent struct
members.
Assign high speed interrupt
code to RAM.
Optimize for Size
MicroLIB
Optimize for Speed
Description
Parameter passing is performed in 32-bit CPU registers. All ARM
instructions operate on 32-bit values. In Thumb mode, all stack
instructions operate only on 32-bit values. By using 32-bit data
types (signed/unsigned int/long), additional data type cast
operations are eliminated.
Thumb mode is about 65% of the code size and 160% faster than
ARM mode when executing from a 16-bit memory system. The
MDK-ARM Compiler automatically inserts required ARM / Thumb
interworking instructions.
Via the __swi function attribute, the MDK-ARM Compiler offers a
method to generate software interrupt functions directly, which
cannot be interrupted by IRQ (__swi functions can be interrupted
by FIQ interrupts). In contrast to other embedded architectures,
ARM prevents access to the interrupt disable bits I and F in User
mode.
Thumb and ARM instructions encode a limited displacement for
memory access. When a struct is accessed via a pointer, scalar
variables at the beginning of a struct can be accessed directly.
Arrays always require address calculation. Consequently, it is
more efficient to place scalar variables at the beginning of a
struct.
Code executed from Flash ROM typically requires wait states or
CPU stalls. Code execution from RAM does not. Consequently,
time critical functions (like high-speed interrupt code) can be
located in RAM directly using the Memory Assignment feature in
Options for File – Properties available via the Context Menu of
that file.
To optimize an application for minimal program size select under
Options for Target the following toolchain:
The compiler offers a MicroLIB to be used for further reducing the
code size of an application. MicroLIB is tailored for deeply
embedded systems, but is not fully ANSI compliant.
Do not use MicroLIB when execution speed is your primary goal.
To optimize an application for maximum execution speed, under
Options for Target select the following toolchain:
In the dialog page Target enable Code Generation - Use
Cross-Module Optimization
In the dialog page C/C++ select Optimization: Level 2 (-O2)
and disable the options Optimize for Time, Split Load and
Store Multiple, and One ELF Section per Function
In the dialog pageTarget enable Code Generation - Use
Cross-Module Optimization
In the dialog page C/C++ select Optimization: Level 3 (-O3),
enable Optimize for Time, and disable Split Load and Store
Multiple
31

Related parts for ULINKPRO