📄 framework.lst
字号:
146:framework.c ****
147:framework.c **** consolSendString("FIQ exception !!!\nAddress: 0x");
195 .loc 1 147 0 196 00d4 24009FE5 ldr r0, .L24 197 .loc 1 143 0 198 00d8 04D04DE2 sub sp, sp, #4 199 .LCFI9: 200 .LVL17: 201 .loc 1 147 0 202 00dc FEFFFFEB bl consolSendString 148:framework.c **** consolSendNumber(16, 8, 0, '0', value);
203 .loc 1 148 0 204 00e0 1000A0E3 mov r0, #16 205 .LVL18: 206 00e4 04E04EE2 sub lr, lr, #4 207 .LVL19: 208 00e8 0810A0E3 mov r1, #8 209 00ec 0020A0E3 mov r2, #0 210 00f0 3030A0E3 mov r3, #48 211 00f4 00E08DE5 str lr, [sp, #0] 212 00f8 FEFFFFEB bl consolSendNumber 213 .L22: 214 00fc 3D0000EA b .L22 215 .L25: 216 .align 2 217 .L24: 218 0100 98000000 .word .LC4 219 .LFE6: 220 .size exceptionHandlerFiq, .-exceptionHandlerFiq 221 .align 2 222 .global exceptionHandlerInit 223 .type exceptionHandlerInit, %function 224 exceptionHandlerInit: 225 .LFB7: 149:framework.c **** while(1)
150:framework.c **** ;
ARM GAS /cygdrive/c/DOCUME~1/HOWARD~1/LOCALS~1/Temp/ccP8AgD9.s page 8 151:framework.c **** }
152:framework.c ****
153:framework.c **** #if (IRQ_HANDLER == 0)
154:framework.c **** /*****************************************************************************
155:framework.c **** *
156:framework.c **** * Description:
157:framework.c **** * Default exception handler for normal interrupts. This handler should
158:framework.c **** * normally never be used.
159:framework.c **** * Prints information and halt. Observe that code execture in exception
160:framework.c **** * mode (as opposed to supervisor mode, which is the normal execution mode).
161:framework.c **** *
162:framework.c **** ****************************************************************************/
163:framework.c **** static void
164:framework.c **** exceptionHandlerIrq(void)
165:framework.c **** {
166:framework.c **** register unsigned int programCounter asm ("lr");
167:framework.c **** unsigned int value = programCounter - (unsigned int)0x04;
168:framework.c ****
169:framework.c **** consolSendString("IRQ exception !!!\nAddress: 0x");
170:framework.c **** consolSendNumber(16, 8, 0, '0', value);
171:framework.c **** while(1)
172:framework.c **** ;
173:framework.c **** }
174:framework.c **** #endif
175:framework.c ****
176:framework.c **** /******************************************************************************
177:framework.c **** * Implementation of public functions
178:framework.c **** *****************************************************************************/
179:framework.c ****
180:framework.c **** /*****************************************************************************
181:framework.c **** *
182:framework.c **** * Description:
183:framework.c **** * Connect all default exception handlers.
184:framework.c **** * The application can overwrite these handlers with new ones.
185:framework.c **** *
186:framework.c **** ****************************************************************************/
187:framework.c **** void
188:framework.c **** exceptionHandlerInit(void)
189:framework.c **** {
226 .loc 1 189 0 227 @ Function supports interworking. 228 @ args = 0, pretend = 0, frame = 0 229 @ frame_needed = 0, uses_anonymous_args = 0 230 @ link register save eliminated. 231 .LVL20: 190:framework.c **** pISR_UNDEF = (unsigned int)exceptionHandlerUndef;
232 .loc 1 190 0 233 0104 50209FE5 ldr r2, .L28 234 0108 9131A0E3 mov r3, #1073741860 235 010c 002083E5 str r2, [r3, #0] 191:framework.c **** pISR_SWI = (unsigned int)exceptionHandlerSwi;
236 .loc 1 191 0 237 0110 48209FE5 ldr r2, .L28+4 238 0114 043083E2 add r3, r3, #4 239 0118 002083E5 str r2, [r3, #0] 192:framework.c **** pISR_PABORT = (unsigned int)exceptionHandlerPabort;
240 .loc 1 192 0ARM GAS /cygdrive/c/DOCUME~1/HOWARD~1/LOCALS~1/Temp/ccP8AgD9.s page 9 241 011c 40209FE5 ldr r2, .L28+8 242 0120 043083E2 add r3, r3, #4 243 0124 002083E5 str r2, [r3, #0] 193:framework.c **** pISR_DABORT = (unsigned int)exceptionHandlerDabort;
244 .loc 1 193 0 245 0128 38209FE5 ldr r2, .L28+12 246 012c 043083E2 add r3, r3, #4 247 0130 002083E5 str r2, [r3, #0] 194:framework.c **** pISR_FIQ = (unsigned int)exceptionHandlerFiq;
248 .loc 1 194 0 249 0134 30209FE5 ldr r2, .L28+16 250 0138 083083E2 add r3, r3, #8 251 013c 002083E5 str r2, [r3, #0] 195:framework.c ****
196:framework.c **** #if (IRQ_HANDLER == 0)
197:framework.c **** pISR_IRQ = (unsigned int)exceptionHandlerIrq;
198:framework.c **** #endif
199:framework.c ****
200:framework.c **** //set heap limits
201:framework.c **** pHeapStart = &end;
252 .loc 1 201 0 253 0140 28209FE5 ldr r2, .L28+20 254 0144 28309FE5 ldr r3, .L28+24 255 0148 002083E5 str r2, [r3, #0] 202:framework.c **** pHeapEnd = (unsigned char*)((STK_SADDR - 1) & 0xfffffffc);
256 .loc 1 202 0 257 014c 24209FE5 ldr r2, .L28+28 258 0150 24309FE5 ldr r3, .L28+32 259 .loc 1 189 0 260 @ lr needed for prologue 261 .loc 1 202 0 262 0154 002083E5 str r2, [r3, #0] 203:framework.c **** }
263 .loc 1 203 0 264 0158 1EFF2FE1 bx lr 265 .L29: 266 .align 2 267 .L28: 268 015c 00000000 .word exceptionHandlerUndef 269 0160 34000000 .word exceptionHandlerSwi 270 0164 68000000 .word exceptionHandlerPabort 271 0168 9C000000 .word exceptionHandlerDabort 272 016c D0000000 .word exceptionHandlerFiq 273 0170 00000000 .word end 274 0174 00000000 .word pHeapStart 275 0178 E0F70040 .word 1073805280 276 017c 00000000 .word pHeapEnd 277 .LFE7: 278 .size exceptionHandlerInit, .-exceptionHandlerInit 279 .align 2 280 .global lowLevelInit 281 .type lowLevelInit, %function 282 lowLevelInit: 283 .LFB8: 204:framework.c ****
205:framework.c **** /*****************************************************************************
206:framework.c **** *
ARM GAS /cygdrive/c/DOCUME~1/HOWARD~1/LOCALS~1/Temp/ccP8AgD9.s page 10 207:framework.c **** * Description:
208:framework.c **** * Initialize system functions and GPIO
209:framework.c **** *
210:framework.c **** ****************************************************************************/
211:framework.c **** void
212:framework.c **** lowLevelInit(void)
213:framework.c **** {
284 .loc 1 213 0 285 @ Function supports interworking. 286 @ args = 0, pretend = 0, frame = 0 287 @ frame_needed = 0, uses_anonymous_args = 0 288 @ link register save eliminated. 289 .LVL21: 214:framework.c **** PINSEL0 = 0x00000000;
290 .loc 1 214 0 291 0180 B0309FE5 ldr r3, .L32 292 0184 0020A0E3 mov r2, #0 293 0188 042083E4 str r2, [r3], #4 215:framework.c **** PINSEL1 = 0x00000000;
294 .loc 1 215 0 295 018c 002083E5 str r2, [r3, #0] 216:framework.c ****
217:framework.c **** IOSET = 0x00000000; //Initialize pins to high level
296 .loc 1 217 0 297 0190 013943E2 sub r3, r3, #16384 298 0194 002083E5 str r2, [r3, #0] 218:framework.c **** IOCLR = 0xffffffff; //Initialize pins to low level
299 .loc 1 218 0 300 0198 0000E0E3 mvn r0, #0 301 019c 083083E2 add r3, r3, #8 302 01a0 040003E4 str r0, [r3], #-4 219:framework.c **** IODIR = 0x00000000; //Set pin direction
303 .loc 1 219 0 304 01a4 002083E5 str r2, [r3, #0] 220:framework.c ****
221:framework.c **** //initialize the MAM (Memory Accelerator Module)
222:framework.c **** MAMTIM = MAM_TIMING; //number of CCLK to read from the FLASH
305 .loc 1 222 0 306 01a8 8C309FE5 ldr r3, .L32+4 307 01ac 0310A0E3 mov r1, #3 308 01b0 001083E5 str r1, [r3, #0] 223:framework.c **** MAMCR = MAM_SETTING; //0=disabled, 1=partly enabled (enabled for code prefetch, but not for 309 .loc 1 223 0 310 01b4 0210A0E3 mov r1, #2 311 01b8 043043E2 sub r3, r3, #4 312 01bc 001083E5 str r1, [r3, #0] 224:framework.c ****
225:framework.c **** //initialize the exception vector mapping
226:framework.c **** MAMMAP = MAM_MAP;
313 .loc 1 226 0 314 01c0 0110A0E3 mov r1, #1 315 01c4 403083E2 add r3, r3, #64 316 01c8 001083E5 str r1, [r3, #0] 227:framework.c ****
228:framework.c **** //set the peripheral bus speed, PCLK = CCLK / PBSD
229:framework.c **** VPBDIV = PBSD;
317 .loc 1 229 0ARM GAS /cygdrive/c/DOCUME~1/HOWARD~1/LOCALS~1/Temp/ccP8AgD9.s page 11 318 01cc 031081E2 add r1, r1, #3 319 01d0 C03083E2 add r3, r3, #192 320 01d4 001083E5 str r1, [r3, #0] 230:framework.c ****
231:framework.c **** //initialize VIC
232:framework.c **** VICIntEnClr = 0xFFFFFFFF; /* Disable ALL interrupts */
321 .loc 1 232 0 322 01d8 60309FE5 ldr r3, .L32+8 323 01dc 0C0083E4 str r0, [r3], #12 233:framework.c **** VICProtection = 0; /* Setup interrupt controller */
324 .loc 1 233 0 325 01e0 142083E4 str r2, [r3], #20 234:framework.c **** VICDefVectAddr = (unsigned int)0; /* Direct unvectored IRQs to reset, i.e., address 0x0 */
326 .loc 1 234 0 327 01e4 CC2083E4 str r2, [r3], #204 235:framework.c ****
236:framework.c **** VICVectAddr0 = (unsigned int)0; /* Set the vector address */
328 .loc 1 236 0 329 01e8 042083E4 str r2, [r3], #4 237:framework.c **** VICVectAddr1 = (unsigned int)0; /* Set the vector address */
330 .loc 1 237 0 331 01ec 042083E4 str r2, [r3], #4 238:framework.c **** VICVectAddr2 = (unsigned int)0; /* Set the vector address */
332 .loc 1 238 0 333 01f0 042083E4 str r2, [r3], #4 239:framework.c **** VICVectAddr3 = (unsigned int)0; /* Set the vector address */
334 .loc 1 239 0 335 01f4 042083E4 str r2, [r3], #4 240:framework.c **** VICVectAddr4 = (unsigned int)0; /* Set the vector address */
336 .loc 1 240 0 337 01f8 042083E4 str r2, [r3], #4 241:framework.c **** VICVectAddr5 = (unsigned int)0; /* Set the vector address */
338 .loc 1 241 0 339 01fc 042083E4 str r2, [r3], #4 242:framework.c **** VICVectAddr6 = (unsigned int)0; /* Set the vector address */
340 .loc 1 242 0 341 0200 042083E4 str r2, [r3], #4 243:framework.c **** VICVectAddr7 = (unsigned int)0; /* Set the vector address */
342 .loc 1 243 0 343 0204 042083E4 str r2, [r3], #4 244:framework.c **** VICVectAddr8 = (unsigned int)0; /* Set the vector address */
344 .loc 1 244 0 345 0208 042083E4 str r2, [r3], #4 245:framework.c **** VICVectAddr9 = (unsigned int)0; /* Set the vector address */
346 .loc 1 245 0 347 020c 042083E4 str r2, [r3], #4 246:framework.c **** VICVectAddr10 = (unsigned int)0; /* Set the vector address */
348 .loc 1 246 0 349 0210 042083E4 str r2, [r3], #4 247:framework.c **** VICVectAddr11 = (unsigned int)0; /* Set the vector address */
350 .loc 1 247 0 351 0214 042083E4 str r2, [r3], #4 248:framework.c **** VICVectAddr12 = (unsigned int)0; /* Set the vector address */
352 .loc 1 248 0 353 0218 042083E4 str r2, [r3], #4 249:framework.c **** VICVectAddr13 = (unsigned int)0; /* Set the vector address */
354 .loc 1 249 0ARM GAS /cygdrive/c/DOCUME~1/HOWARD~1/LOCALS~1/Temp/ccP8AgD9.s page 12 355 021c 042083E4 str r2, [r3], #4 250:framework.c **** VICVectAddr14 = (unsigned int)0; /* Set the vector address */
356 .loc 1 250 0 357 0220 042083E4 str r2, [r3], #4 358 .loc 1 213 0 359 @ lr needed for prologue 251:framework.c **** VICVectAddr15 = (unsigned int)0; /* Set the vector address */
360 .loc 1 251 0 361 0224 002083E5 str r2, [r3, #0] 252:framework.c ****
253:framework.c **** //enable interrupts (both IRQ and FIQ)
254:framework.c **** asm volatile ("mrs r3, cpsr \n\t"
362 .loc 1 254 0 363 0228 00300FE1 mrs r3, cpsr 364 022c C030C3E3 bic r3, r3, #0xC0 365 0230 03F029E1 msr cpsr, r3 366 255:framework.c **** "bic r3, r3, #0xC0 \n\t"
256:framework.c **** "msr cpsr, r3 \n\t"
257:framework.c **** :
258:framework.c **** :
259:framework.c **** : "r3" );
260:framework.c **** }
367 .loc 1 260 0 368 0234 1EFF2FE1 bx lr 369 .L33: 370 .align 2 371 .L32: 372 0238 00C002E0 .word -536690688 373 023c 04C01FE0 .word -534790140 374 0240 14F0FFFF .word -4076 375 .LFE8: 376 .size lowLevelInit, .-lowLevelInit 377 .align 2 378 .global eaInit 379 .type eaInit, %function 380 eaInit: 381 .LFB9: 261:framework.c ****
262:framework.c **** /*****************************************************************************
263:framework.c **** *
264:framework.c **** * Description:
265:framework.c **** * Initialize the consol
266:framework.c **** *
267:framework.c **** ****************************************************************************/
268:framework.c **** void
269:framework.c **** eaInit(void)
270:framework.c **** {
382 .loc 1 270 0 383 @ Function supports interworking. 384 @ args = 0, pretend = 0, frame = 0 385 @ frame_needed = 0, uses_anonymous_args = 0 386 .LVL22: 387 0244 04E02DE5 str lr, [sp, #-4]! 388 .LCFI10: 271:framework.c **** //initialize the consol
272:framework.c **** consolInit();
ARM GAS /cygdrive/c/DOCUME~1/HOWARD~1/LOCALS~1/Temp/ccP8AgD9.s page 13 389 .loc 1 272 0 390 0248 FEFFFFEB bl consolInit 273:framework.c ****
274:framework.c **** #ifdef CONSOL_STARTUP_DELAY
275:framework.c **** /* 276:framework.c **** * setup timer #1 for a short delay 277:framework.c **** */ 278:framework.c **** TIMER1_TCR = 0x02; //stop and reset timer 391 .loc 1 278 0 392 024c 50109FE5 ldr r1, .L40 393 0250 0230A0E3 mov r3, #2 394 0254 003081E5 str r3, [r1, #0] 279:framework.c **** TIMER1_PR = 0x00; //set prescaler to zero 395 .loc 1 279 0 396 0258 48309FE5 ldr r3, .L40+4 397 025c 0020A0E3 mov r2, #0 398 0260 002083E5 str r2, [r3, #0] 280:framework.c **** TIMER1_MR0 = CONSOL_STARTUP_DELAY_LENGTH * ((FOSC * PLL_MUL)/ (1000000 * PBSD)); 399 .loc 1 280 0 400 0264 40209FE5 ldr r2, .L40+8 401 0268 0C3083E2 add r3, r3, #12 402 026c 002083E5 str r2, [r3, #0] 281:framework.c **** TIMER1_IR = 0xff; //reset all interrrupt flags 403 .loc 1 281 0 404 0270 FF20A0E3 mov r2, #255 405 0274 183043E2 sub r3, r3, #24 406 0278 142083E4 str r2, [r3], #20 282:framework.c **** TIMER1_MCR = 0x04; //stop timer on match 407 .loc 1 282 0 408 027c 0420A0E3 mov r2, #4 409 0280 002083E5 str r2, [r3, #0] 283:framework.c **** TIMER1_TCR = 0x01; //start timer 410 .loc 1 283 0 411 0284 0130A0E3 mov r3, #1 412 0288 003081E5 str r3, [r1, #0] 413 .L35: 284:framework.c **** 285:framework.c **** //wait until delay time has elapsed 286:framework.c **** while (TIMER1_TCR & 0x01) 414 .loc 1 286 0 415 028c 10309FE5 ldr r3, .L40 416 0290 003093E5 ldr r3, [r3, #0] 417 0294 010013E3 tst r3, #1 418 0298 A100001A bne .L35 287:framework.c **** ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -