
Motorola
vii
5.2.5.2
5.2.5.3
5.2.5.4
5.2.6
5.2.7
5.3
5.4
5.4.1
5.4.1.1
5.4.1.2
5.4.1.3
5.4.1.4
5.4.1.5
5.4.1.6
5.4.2
5.4.3
5.4.4
5.4.5
Calling C Subroutines from Assembly Code . . . . . . . . . . . . . . . . . . . . . 5-18
Referencing Assembly Global Variables from C. . . . . . . . . . . . . . . . . . 5-20
Referencing Global C Variables from Assembly Language . . . . . . . . . 5-21
Specifying Registers for Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-22
Optimizer Effects on Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-22
#pragma Directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-22
Out-of-line Assembly Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-25
General Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-26
Prologue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-27
Save all registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-27
Main Program. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-28
Restore all registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-28
Epilogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-29
Out-of-line Assembly Code Example. . . . . . . . . . . . . . . . . . . . . . . . . . . 5-29
Global C and Static Variables in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-33
Using Run-time Stack for Local Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-34
Calling C Routines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-35
Optimization Techniques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-36
Chapter 6
Software-Hardware Integration
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
6.9.1
6.10
6.11
6.11.1
6.11.2
6.11.3
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1
Run-Time Environment Specification Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1
crt0 File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
Bootstrapping the C program. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
Memory Configuration and Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3
Interrupt Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-6
Miscellaneous Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-8
Signal File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-9
Signal() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-10
Raise() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-11
Setjmp File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-12
Host-Supported I/O (printf (), et al). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-12
DSP functions __send () and __receive () . . . . . . . . . . . . . . . . . . . . . . . . . . 6-13
The Host-Side I/O Driver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-13
Communication between the Host and DSP . . . . . . . . . . . . . . . . . . . . . . . . 6-13
F
Freescale Semiconductor, Inc.
For More Information On This Product,
Go to: www.freescale.com
n
.