1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
|
// ************************************************
//
// XLINK configuration file for MSP430F5438A
//
// Copyright 1996-2010 IAR Systems AB
//
// $Revision: $
//
// ************************************************
// ---------------------------------------------------------
// Description
//
//
// Usage:
//
// xlink [file file ...] -f lnk430f5438a.xcl
//
// -----------------------------------------------
// Device summary
//
//
// Core: MSP430X
//
// Interrupt vectors: 64
//
// Peripheral units: 0-001FF
//
// Information memory (FLASH): 01800-019FF
//
// Read/write memory (RAM): 01C00-05BFF
//
// Read-only memory (FLASH): 05C00-0FFFF
// 10000-45BFF
//
// -----------------------------------------------
// Segments
//
// -------------------------------------
// Data read/write segments (RAM)
//
//
// The following segments are available for both
// the DATA16 and DATA20 segment groups.
//
// segment Usage
// ------- --------------------------
// DATA<nn>_Z Data initialized to zero
// DATA<nn>_I Data initialized by copying from DATA<nn>_ID
// DATA<nn>_N Data defined using __no_init
// DATA<nn>_HEAP The heap used by 'malloc' and 'free'
//
// segment Usage
// ------- --------------------------
// CSTACK Runtime stack
//
// -------------------------------------
// Program and data read-only segments (FLASH)
//
//
// The following segments are available for both
// the DATA16 and DATA20 segment groups.
//
// segment Usage
// ------- --------------------------
// DATA<nn>_C Constant data, including string literals
// DATA<nn>_ID initializers for DATA<nn>_I
//
// segment Usage
// ------- --------------------------
// INFO Information memory
// INFOA Information memory, bank A
// INFOB Information memory, bank B
// INFOC Information memory, bank C
// INFOD Information memory, bank D
// CSTART Program startup code
// CODE Program code
// ISR_CODE Program code for interrupt service routines
// DIFUNCT Dynamic initialization vector used by C++
// CHECKSUM Checksum byte(s) generated by the -J option
// INTVEC Interrupt vectors
// RESET The reset vector
//
// Notes:
//
// * The segments CSTART, ISR_CODE, and DIFUNCT, as well as the segments in
// the DATA16 segment group must be placed in in the range 0000-FFFD.
//
// * The INFOx and INFO segments overlap, this allows data either to be
// placed in a specific bank or anywhere in the info memory.
//
// * The INTVEC and RESET segments overlap. This allows an application to
// either use the reset vector provided by the runtime library, or
// provide a reset function by defining an interrupt function associated
// with the reset vector.
//
// ---------------------------------------------------------
// Configuation
//
// -----------------------------------------------
// Stack and heap sizes
//
// Uncomment for command line use
//-D_STACK_SIZE=80
//-D_DATA16_HEAP_SIZE=80
//-D_DATA20_HEAP_SIZE=80
// -----------------------------------------------
// Define cpu
//
-cmsp430
// -----------------------------------------------
// Support for placing functions in read/write memory
//
-QCODE_I=CODE_ID
// ---------------------------------------------------------
// Placement directives
//
// -----------------------------------------------
// Read/write memory
//
/* Commented out and substituted the original memory region definition */
/* for RAM to reserve the memory region from 0x2000 to 0x2021 as it is */
/* used during active mode Icc tests in "5xx_ACTIVE_test.asm" */
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,DATA16_HEAP+_DATA16_HEAP_SIZE=1C00-5BFF
//-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,DATA16_HEAP+_DATA16_HEAP_SIZE=1C00-2000,2022-5BFF
-Z(DATA)CODE_I
-Z(DATA)DATA20_I,DATA20_Z,DATA20_N,DATA20_HEAP+_DATA20_HEAP_SIZE
-Z(DATA)CSTACK+_STACK_SIZE#
// -----------------------------------------------
// Read-only memory
//
// -------------------------------------
// Information memory
//
-Z(CONST)INFO=1800-19FF
-Z(CONST)INFOA=1980-19FF
-Z(CONST)INFOB=1900-197F
-Z(CONST)INFOC=1880-18FF
-Z(CONST)INFOD=1800-187F
// -------------------------------------
// Low memory 0-0FFFF
//
// ---------------------------
// Code
//
-Z(CODE)CSTART,ISR_CODE=5C00-FF7F
// ---------------------------
// Constant data
//
-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=5C00-FF7F
// -------------------------------------
// All memory 0-FFFFF
//
// ---------------------------
// Code
//
// Can be modified to test the use of high memory.
// Original code
-P(CODE)CODE=5C00-FF7F,10000-45BFF
// Modified code
//-P(CODE)CODE=10000-45BFF
-Z(CODE)CODE_ID
// ---------------------------
// Constant data
//
// *** Modified to place code in high memory and insodoing, testing the port.
// Original code
-Z(CONST)DATA20_C,DATA20_ID=5C00-FF7F,10000-45BFF
// Modified code
//-Z(CONST)DATA20_C,DATA20_ID=10000-45BFF
// -------------------------------------
// Interrupt vectors
//
-Z(CODE)INTVEC=FF80-FFFF
-Z(CODE)RESET=FFFE-FFFF
|