CG56800E [ETC]

56800E Coding Guidlines for SMD and LDM Model ; 56800E编码Guidlines的SMD和LDM模型\n
CG56800E
型号: CG56800E
厂家: ETC    ETC
描述:

56800E Coding Guidlines for SMD and LDM Model
56800E编码Guidlines的SMD和LDM模型\n

文件: 总16页 (文件大小:315K)
中文:  中文翻译
下载:  下载PDF数据表文档文件
Freescale Semiconductor, Inc.  
56800E  
Coding  
Guidlines  
for  
Small Data Memory  
Model and  
Large Data Memory  
Model  
56F8300  
Hybrid Controller  
CG56800E  
Rev. 0, 06/2004  
MOTOROLA.COM/SEMICONDUCTORS  
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
Contents  
About This Document  
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v  
Suggested Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v  
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi  
Definitions, Acronyms, and Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii  
References. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii  
1
Introduction  
1.1  
Switching Between Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-1  
2
Coding Guidelines  
2.1  
2.2  
2.3  
2.4  
2.5  
Type Casting Pointers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-1  
Conversion of 56800 Instructions to 56800E Instructions . . . . . . . . . . . . . . . . . . .1-1  
LoadRx, StoreRx, and TestRx Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-1  
Push and Pop Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2  
Structure Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-3  
Table of Contents  
i
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
ii  
56800E Coding Guidelines for SDM and LDM  
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
List of Examples  
Code Example 2-1 Use Macros to Convert DSP56800 or DSP56800E Assembly Code . . . 1-2  
Code Example 2-2 Converting 56800 Assembly Code Using Push and Pop #1. . . . . . . . . . 1-2  
Code Example 2-3 Converting 56800 Assembly Code using Push and Pop #2 . . . . . . . . . . 1-3  
Code Example 2-4 Convert C structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-3  
Code Example 2-5 Convert Assembly Code Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4  
List of Examples  
iii  
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
iv  
56800E Coding Guidelines for SDM and LDM  
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
About This Document  
This manual describes some coding guidelines in order to generate valide code for both a Small Data  
Memory model (SDM) and a Large Data Memory model (LDM) target for a 56800E application.  
Audience  
This document targets software developers who have implemented software applications with 56800  
devices and are converting to the 56800E family of devices.  
Suggested Reading  
We recommend that you have a copy of the following references:  
DSP56800 to DSP56800E Porting Guide, DSP56800ERG/D  
DSP56800 Family Manual, DSP56800FM/AD  
DSP56800E Reference Manual, DSP56800ERM/AD  
Inside CodeWarrior: Core Tools, Metrowerks Corp.  
Preface  
v
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
Conventions  
This document uses the following notational conventions:  
Typeface,Symbol  
Meaning  
Examples  
or Term  
Courier  
Code examples  
//Process command for line flash  
Monospaced Type  
Italic  
Directory names,  
project names,  
calls,  
...and contains these core directories:  
applications contains applications software...  
functions,  
...CodeWarrior project, 3des.mcp is...  
...the pConfig argument....  
statements,  
procedures,  
routines,  
arguments,  
file names,  
applications,  
variables,  
...defined in the C header file, aec.h....  
directives,  
code snippets  
in text  
Bold  
Reference sources,  
paths,  
...refer to the Targeting DSP56F80x Platform  
manual....  
emphasis  
...see: C:\Program Files\Motorola\help\tutori-  
als  
Blue Text  
Number  
Linkable on-line  
...refer to Chapter 7, License....  
Any number is considered a  
positive value, unless pre-  
ceded by a minus symbol to  
signify a negative value  
3V  
-10  
DES-1  
ALL CAPITAL  
LETTERS  
# defines/  
defined constants  
# define INCLUDE_STACK_CHECK  
Brackets [...]  
Function keys  
...by pressing function key [F7]  
Quotation  
Returned messages  
...the message, “Test Passed” is displayed....  
marks, “...”  
...if unsuccessful for any reason, it will return  
“NULL”...  
vi  
56800E Coding Guidelines for SDM and LDM  
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
Definitions, Acronyms, and Abbreviations  
The following list defines the acronyms and abbreviations used in this document. As this template  
develops, this list will be generated from the document. As we develop more group resources, these  
acronyms will be easily defined from a common acronym dictionary. Please note that while the acronyms  
are in solid caps, terms in the definition should be initial capped ONLY IF they are trademarked names or  
proper nouns.  
DSP  
Digital Signal Processor or Digital Signal Processing  
Large Data Memory  
LDM  
SDM  
Small Data Memory  
References  
The following sources were referenced to produce this book:  
1. DSP56800 to DSP56800E Porting Guide, DSP56800ERG/D  
2. DSP56800 Family Manual, DSP56800FM/AD  
3. DSP56800E Reference Manual, DSP56800ERM/AD  
4. Inside CodeWarrior: Core Tools, Metrowerks Corp.  
Preface  
vii  
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
viii  
56800E Coding Guidelines for SDM and LDM  
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
1 Introduction  
1.1 Switching Between Models  
A Small Data Memory model (SDM) and a Large Data Memory model (LDM) are available for  
the 56800E family of hybrid controllers. The SDM has a maximum address size of 16 bits for  
both data and program addresses. This allows for smaller, compact code size, since an address can  
be stored in one 16-bit word. The LDM has a maximum address size of 19 bits for program  
addresses and 21 bits for data addresses. This allows an application to use more memory, but it  
requires two 16-bit words of memory to store each address.  
In order to switch between the different models during development, specific coding practices  
should be followed to make this as transparent as possible. The remainder of this document  
describes these practices.  
2 Coding Guidelines  
This section explains how the user’s source code should be developed in order to generate code  
for both the SDM and LDM.  
2.1 Type Casting Pointers  
When developing software for the SDM, do not type cast pointers to be 16 bits (i.e., unsigned int).  
This will work for the SDM, but if you switch to the LDM, it may not work, because your pointer  
size may be greater than 16 bits.  
2.2 Conversion of 56800 Instructions to 56800E Instructions  
When the 56800E was developed, one requirement was the ability to use all of the 56800  
instructions to easily upgrade from the 56800 to the 56800E. This approach works fine for the  
SDM; however, since the 56800 instructions are for a 16-bit DSP with 16-bit pointers, this  
approach is no longer valid when using the LDM.  
When using the LDM, the “allow legacy instructionsLanguage Settings: M56800E Assembler  
option must be turned off and the user must convert all 56800 instructions to 56800E instructions.  
Please see the DSP56800 to DSP56800E Porting Guide to learn more.  
2.3 LoadRx, StoreRx, and TestRx Macros  
When loading, storing, or testing pointers in Assembly, you must specify if it is a word or a long.  
For the SDM, pointers are a word and for the LDM, pointers are a long.  
Depending on the model, defined macros in portasm.h ease switching from SDM to LDM and  
vice versa. These assembly macros (LoadRx, StoreRx, and TestRx ) are defined based on which  
model is used, so they load, store, and test the correct size of the pointer.  
56800E Coding Guidelines for SDM and LDM  
For More Information On This Product,  
Go to: www.freescale.com  
1-1  
Freescale Semiconductor, Inc.  
Code Example 2-1. Use Macros to Convert DSP56800 or DSP56800E Assembly Code  
56800 Assembly code:  
move X:(R2+Offset_pCircBuffer),R0 ; where pCircBuffer contains a pointer  
move R0,X:(R2+Offset_pCircBuffer)  
tstw X:(R2+Offset_pCircBuffer)  
or 56800E Assembly code (SDM):  
moveu.w X:(R2+Offset_pCircBuffer),R0 ; where pCircBuffer contains a pointer  
move.w R0,X:(R2+Offset_pCircBuffer)  
tst.w X:(R2+Offset_pCircBuffer)  
or 56800E Assembly code (LDM):  
move.l X:(R2+Offset_pCircBuffer),R0 ; where pCircBuffer contains a pointer  
move.l R0,X:(R2+Offset_pCircBuffer)  
tst.l X:(R2+Offset_pCircBuffer)  
can be converted to:  
LoadRx X:(R2+Offset_pCircBuffer),R0 ; where pCircBuffer contains a pointer  
StoreRx R0,X:(R2+Offset_pCircBuffer)  
TestRx X:(R2+Offset_pCircBuffer)  
2.4 Push and Pop Instructions  
The 56800 has instructions for push and pop that save and restore 16-bit address registers. The  
push and pop instructions should not be used for the 56800E, since these instructions temporarily  
even the stack. This could cause alignment access problems for long data types, since long data  
types must be on odd addresses.  
If 56800 Assembly code is being ported to the 56800E and it contains push or pop instructions,  
this code should be rewritten so it does not use these instructions.  
Code Example 2-2. Converting 56800 Assembly Code Using Push and Pop #1  
56800 Assembly code:  
push R2  
...  
pop R2  
can be converted to:  
adda #2,sp  
move.l R2,x:(sp)  
...  
move.l x:(sp)-,R2  
2-2  
56800E Coding Guidelines for SDM and LDM  
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
Code Example 2-3. Converting 56800 Assembly Code using Push and Pop #2  
DSP56800 Assembly code:  
push Y0  
push Y1  
...  
pop Y1  
pop Y0  
can be converted to:  
adda #2,sp  
move.w Y0,x:(sp)  
move.w Y1,x:(sp-1)  
...  
move.w x:(sp-1),Y1  
move.w x:(sp),Y0  
suba #2,sp  
2.5 Structure Offsets  
If your assembly code accesses elements of a structure defined in C, offsets to the elements of the  
structure must be defined in Assembly. In portasm.h, a PTR_SIZE macro has been created that  
defines the size of a pointer (1 for SDM and 2 for LDM). To seamlessly switch from SDM to  
LDM and vice versa, assembly code that defines offsets to these elements should be relative to the  
previous element and PTR_SIZE should be used when specifying the size of a pointer.  
Also, structure elements that are longs should be the first elements in the structure, because  
CodeWarrior requires that long values start on an odd address. Structure elements that are pointers  
should follow because they will be longs for LDM. By having all of the longs and pointers first,  
the start of the structure will be on an odd address and there will be no gaps in the structure. If  
longs or pointers were placed in the middle of the structure, then gaps would be inserted to  
guarantee an odd address. Because Assembly code is written to assume no gaps, this would cause  
a problem.  
Code Example 2-4. Convert C structure  
If C structure is defined as follows:  
struct C_Structure {  
bool bStatus;  
int * pCircBuffer;  
int  
Size;  
UWord32 LongWord;  
};  
56800E Coding Guidelines for SDM and LDM  
For More Information On This Product,  
Go to: www.freescale.com  
2-3  
Freescale Semiconductor, Inc.  
then you can change the C structure to the following:  
struct C_Structure {  
UWord32 LongWord;  
int * pCircBuffer;  
bool bStatus;  
int  
Size;  
};  
Code Example 2-5. Convert Assembly Code Structure  
If Assembly code defines these offsets to each element as follows:  
Offset_bStatus  
equ 0  
Offset_pCircBuffer equ 1  
Offset_size  
Offset_LongWord  
equ 2  
equ 3  
then you can change the Assembly code to the following:  
Offset_LongWord  
equ 0  
Offset_pCircBuffer equ Offset_LongWord+2  
Offset_bStatus  
Offset_size  
equ Offset_pCircBuffer+PTR_SIZE  
equ Offset_bStatus+1  
2-4  
56800E Coding Guidelines for SDM and LDM  
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
Index  
D
DSP vii  
Digital Signal Processor vii  
L
LDM vii  
Large Data Memory Model vii  
LoadRx 1-1  
long 1-1  
longs 1-3  
M
M56800E Assembler 1-1  
P
pointers 1-3  
pop 1-2  
portasm.h 1-1, 1-3  
PTR_SIZE macro 1-3  
push 1-2  
S
SDM vii  
Small Data Memory Model vii  
StoreRx 1-1  
T
TestRx 1-1  
W
word 1-1  
Index  
i
For More Information On This Product,  
Go to: www.freescale.com  
Freescale Semiconductor, Inc.  
HOW TO REACH US:  
USA/EUROPE/LOCATIONS NOT LISTED:  
Motorola Literature Distribution;  
P.O. Box 5405, Denver, Colorado 80217  
1-303-675-2140 or 1-800-441-2447  
JAPAN:  
Motorola Japan Ltd.; SPS, Technical Information Center,  
3-20-1, Minami-Azabu Minato-ku, Tokyo 106-8573 Japan  
81-3-3440-3569  
Information in this document is provided solely to enable system and software  
implementers to use Motorola products. There are no express or implied copyright  
licenses granted hereunder to design or fabricate any integrated circuits or  
integrated circuits based on the information in this document.  
ASIA/PACIFIC:  
Motorola Semiconductors H.K. Ltd.;  
Silicon Harbour Centre, 2 Dai King Street,  
Tai Po Industrial Estate, Tai Po, N.T., Hong Kong  
852-26668334  
Motorola reserves the right to make changes without further notice to any products  
herein. Motorola makes no warranty, representation or guarantee regarding the  
suitability of its products for any particular purpose, nor does Motorola assume any  
liability arising out of the application or use of any product or circuit, and specifically  
disclaims any and all liability, including without limitation consequential or incidental  
damages. “Typical” parameters which may be provided in Motorola data sheets  
and/or specifications can and do vary in different applications and actual  
performance may vary over time. All operating parameters, including “Typicals”  
must be validated for each customer application by customer’s technical experts.  
Motorola does not convey any license under its patent rights nor the rights of  
others. Motorola products are not designed, intended, or authorized for use as  
components in systems intended for surgical implant into the body, or other  
applications intended to support or sustain life, or for any other application in which  
the failure of the Motorola product could create a situation where personal injury or  
death may occur. Should Buyer purchase or use Motorola products for any such  
unintended or unauthorized application, Buyer shall indemnify and hold Motorola  
and its officers, employees, subsidiaries, affiliates, and distributors harmless  
against all claims, costs, damages, and expenses, and reasonable attorney fees  
arising out of, directly or indirectly, any claim of personal injury or death associated  
with such unintended or unauthorized use, even if such claim alleges that Motorola  
was negligent regarding the design or manufacture of the part.  
TECHNICAL INFORMATION CENTER:  
1-800-521-6274  
HOME PAGE:  
http://motorola.com/semiconductors  
Motorola and the Stylized M Logo are registered in the U.S. Patent and Trademark  
Office. digital dna is a trademark of Motorola, Inc. This product incorporates  
SuperFlash® technology licensed from SST. All other product or service names are  
the property of their respective owners. Motorola, Inc. is an Equal  
Opportunity/Affirmative Action Employer.  
© Motorola, Inc. 2004  
CG56800E  
For More Information On This Product,  
Go to: www.freescale.com  

相关型号:

CG590L

Surge Protection Circuit, ROHS COMPLIANT, PACKAGE-2
LITTELFUSE

CG590L-03TR

Surge Protection Circuit, PACKAGE-2
LITTELFUSE

CG590LS

Surge Protection Circuit, PACKAGE-2
LITTELFUSE

CG590LSTR

Surge Protection Circuit, ROHS COMPLIANT, PACKAGE-2
LITTELFUSE

CG590LTR

Surge Protection Circuit, PACKAGE-2
LITTELFUSE

CG590MS

Surge Protection Circuit, PACKAGE-2
LITTELFUSE

CG5982AF

2K x 8 Automotive Dual-port Static RAM
CYPRESS

CG601T250V3C

Reliable Screw Terminal Aluminum Electrolytic Capacitor 85 ⅹC, Screw Terminal Capacitors
CDE

CG601T250V3C0NF

CAP,AL2O3,600UF,250VDC,10% -TOL,50% +TOL
CDE

CG601T250V3C0PN

CAP,AL2O3,600UF,250VDC,10% -TOL,50% +TOL
CDE

CG601T250V3C1PD

CAP,AL2O3,600UF,250VDC,10% -TOL,50% +TOL
CDE

CG601T250V3C1PF

CAP,AL2O3,600UF,250VDC,10% -TOL,50% +TOL
CDE