⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lpc210x_crt0.lst

📁 LPC2294开发板资源,包括源代码,BOOTLOAER,SCH,PCB和器件清单
💻 LST
字号:
   1              	# 1 "build/lpc210x_crt0.S"
   2              	# 1 "<built-in>"
   1              	        .global main                    // int main(void)
   0              	
   0              	
   2              			.global swiirqp                 // void swiirq(void)
   3              	
   4              	        .global _etext                  // -> .data initial values in ROM
   5              	        .global _data                   // -> .data area in RAM
   6              	        .global _edata                  // end of .data area
   7              	        .global __bss_start             // -> .bss area in RAM
   8              	        .global __bss_end__             // end of .bss area
   9              	        .global _stack                  // top of stack
  10              	
  11              	// Stack Sizes
  12              	        .set  UND_STACK_SIZE, 0x00000004
  13              	        .set  ABT_STACK_SIZE, 0x00000004
  14              	        .set  FIQ_STACK_SIZE, 0x00000004
  15              	        .set  IRQ_STACK_SIZE, 0X00000080
  16              	        .set  SVC_STACK_SIZE, 0x00000004
  17              	
  18              	// Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs
  19              	        .set  MODE_USR, 0x10            // User Mode
  20              	        .set  MODE_FIQ, 0x11            // FIQ Mode
  21              	        .set  MODE_IRQ, 0x12            // IRQ Mode
  22              	        .set  MODE_SVC, 0x13            // Supervisor Mode
  23              	        .set  MODE_ABT, 0x17            // Abort Mode
  24              	        .set  MODE_UND, 0x1B            // Undefined Mode
  25              	        .set  MODE_SYS, 0x1F            // System Mode
  26              	
  27              	        .equ  I_BIT, 0x80               // when I bit is set, IRQ is disabled
  28              	        .equ  F_BIT, 0x40               // when F bit is set, FIQ is disabled
  29              	
  30              	        .text
  31              	        .code 32
  32              	        .align 2
  33              	
  34              	        .global _boot
  35              	        .func   _boot	
  36              			
  37              	_boot:
  38              	
  39              	// Runtime Interrupt Vectors
  40              	// -------------------------
  41              	Vectors:
  42 0000 FEFFFFEA 	        b     _start                    // reset - _start
  43 0004 14F09FE5 	        ldr   pc,_undf                  // undefined - _undf
  44 0008 14F09FE5 	        ldr   pc,_swi		            // SWI - _swi
  45 000c 14F09FE5 	        ldr   pc,_pabt                  // program abort - _pabt
  46 0010 14F09FE5 	        ldr   pc,_dabt                  // data abort - _dabt
  47 0014 0000A0E1 	        nop
  48 0018 F0FF1FE5 	        ldr   pc,[pc,#-0xFF0]           // IRQ - read the VIC
  49 001c 10F09FE5 	        ldr   pc,_fiq                   // FIQ - _fiq
  50              	
  51              	// Use this group for development
  52 0020 04000081 	_undf:  .word 0x81000004                    // undefined
  53 0024 08000081 	_swi:   .word 0x81000008                    // SWI
  54 0028 0C000081 	_pabt:  .word 0x8100000C                    // program abort
  55 002c 10000081 	_dabt:  .word 0x81000010                    // data abort
  56 0030 18000081 	_irq:   .word 0x81000018                    // IRQ
  57 0034 1C000081 	_fiq:   .word 0x8100001C                    // FIQ
  58              	
  59 0038 FEFFFFEA 	__undf: b     .				            // undefined
  60 003c FEFFFFEA 	__swi:  b     .						    // SWI
  61 0040 FEFFFFEA 	__pabt: b     .            	   		    // program abort
  62 0044 FEFFFFEA 	__dabt: b     .       					// data abort
  63 0048 FEFFFFEA 	__irq:  b     .							// IRQ
  64 004c FEFFFFEA 	__fiq:  b     .							// FIQ
  65              	
  67              	        .endfunc
  68              	
  69              	
  70              	// Setup the operating mode & stack.
  71              	// ---------------------------------
  72              	        .global _start, start, _mainCRTStartup
  73              	        .func   _start
  74              	
  75              	_swiirq:
  76              	swiirq:
  77 0050 88A09FE5 	        ldr   r10,=swiirqp
  78 0054 0FE0A0E1 	        mov   lr,pc
  79 0058 1AFF2FE1 	        bx    r10                       // enter main()
  80              	
  81              	_start:
  82              	start:
  83              	_mainCRTStartup:
  84              	
  85              	// Initialize Interrupt System
  86              	// - Set stack location for each mode
  87              	// - Leave in System Mode with Interrupts Disabled
  88              	// -----------------------------------------------
  89 005c 80009FE5 	        ldr   r0,=_stack
  90 0060 DBF021E3 	        msr   CPSR_c,#MODE_UND|I_BIT|F_BIT // Undefined Instruction Mode
  91 0064 00D0A0E1 	        mov   sp,r0
  92 0068 040040E2 	        sub   r0,r0,#UND_STACK_SIZE
  93 006c D7F021E3 	        msr   CPSR_c,#MODE_ABT|I_BIT|F_BIT // Abort Mode
  94 0070 00D0A0E1 	        mov   sp,r0
  95 0074 040040E2 	        sub   r0,r0,#ABT_STACK_SIZE
  96 0078 D1F021E3 	        msr   CPSR_c,#MODE_FIQ|I_BIT|F_BIT // FIQ Mode
  97 007c 00D0A0E1 	        mov   sp,r0
  98 0080 040040E2 	        sub   r0,r0,#FIQ_STACK_SIZE
  99 0084 D2F021E3 	        msr   CPSR_c,#MODE_IRQ|I_BIT|F_BIT // IRQ Mode
 100 0088 00D0A0E1 	        mov   sp,r0
 101 008c 800040E2 	        sub   r0,r0,#IRQ_STACK_SIZE
 102 0090 D3F021E3 	        msr   CPSR_c,#MODE_SVC|I_BIT|F_BIT // Supervisor Mode
 103 0094 00D0A0E1 	        mov   sp,r0
 104 0098 040040E2 	        sub   r0,r0,#SVC_STACK_SIZE
 105 009c DFF021E3 	        msr   CPSR_c,#MODE_SYS|I_BIT|F_BIT // System Mode
 106 00a0 00D0A0E1 	        mov   sp,r0
 107              	
 108              	// Copy initialized data to its execution address in RAM
 109              	// -----------------------------------------------------
 110              	#ifdef ROM_RUN
 111              	        ldr   r1,=_etext                // -> ROM data start
 112              	        ldr   r2,=_data                 // -> data start
 113              	        ldr   r3,=_edata                // -> end of data
 114              	1:      cmp   r2,r3                     // check if data to move
 115              	        ldrlo r0,[r1],#4                // copy it
 116              	        strlo r0,[r2],#4
 117              	        blo   1b                        // loop until done
 118              	#endif
 119              	// Clear .bss
 120              	// ----------
 121 00a4 0000A0E3 	        mov   r0,#0                     // get a zero
 122 00a8 38109FE5 	        ldr   r1,=__bss_start           // -> bss start
 123 00ac 38209FE5 	        ldr   r2,=__bss_end__           // -> bss end
 124 00b0 020051E1 	2:      cmp   r1,r2                     // check if data to clear
 125 00b4 04008134 	        strlo r0,[r1],#4                // clear 4 bytes
 126 00b8 FCFFFF3A 	        blo   2b                        // loop until done
 127              	
 128              	// Call main program: main(0)
 129              	// --------------------------
 130 00bc 0000A0E3 	        mov   r0,#0                     // no arguments (argc = 0)
 131 00c0 0010A0E1 	        mov   r1,r0
 132 00c4 0020A0E1 	        mov   r2,r0
 133 00c8 00B0A0E1 	        mov   fp,r0                     // null frame pointer
 134 00cc 0070A0E1 	        mov   r7,r0                     // null frame pointer for thumb
 135 00d0 18A09FE5 	        ldr   r10,=main
 136 00d4 0FE0A0E1 	        mov   lr,pc
 137 00d8 1AFF2FE1 	        bx    r10                       // enter main()
 138              	
 140              	        .endfunc
 141              	
 142              	        .global _reset, reset, exit, abort
 143              	        .func   _reset
 144              	_reset:
 145              	reset:
 146              	exit:
 147              	abort:
 148              	#if 0
 149              	// Disable interrupts, then force a hardware reset by driving P23 low
 150              	// -------------------------------------------------------------------
 151              	        mrs   r0,cpsr                   // get PSR
 152              	        orr   r0,r0,#I_BIT|F_BIT        // disable IRQ and FIQ
 153              	        msr   cpsr,r0                   // set up status register
 154              	
 155              	        ldr   r1,=(PS_BASE)             // PS Base Address
 156              	        ldr   r0,=(PS_PIO)              // PIO Module
 157              	        str   r0,[r1,#PS_PCER_OFF]      // enable its clock
 158              	        ldr   r1,=(PIO_BASE)            // PIO Base Address
 159              	        ldr   r0,=(1<<23)               // P23
 160              	        str   r0,[r1,#PIO_PER_OFF]      // make sure pin is contolled by PIO
 161              	        str   r0,[r1,#PIO_CODR_OFF]     // set the pin low
 162              	        str   r0,[r1,#PIO_OER_OFF]      // make it an output
 163              	#endif
 164 00dc FEFFFFEA 	        b     .                         // loop until reset
 165              	
 167              	        .endfunc
 168              	
 169 00e0 00000000 	        .end
 169      00000000 
 169      00000000 
 169      00000000 
 169      00000000 
DEFINED SYMBOLS
                            *ABS*:00000000 build/lpc210x_crt0.S
build/lpc210x_crt0.S:12     *ABS*:00000004 UND_STACK_SIZE
build/lpc210x_crt0.S:13     *ABS*:00000004 ABT_STACK_SIZE
build/lpc210x_crt0.S:14     *ABS*:00000004 FIQ_STACK_SIZE
build/lpc210x_crt0.S:15     *ABS*:00000080 IRQ_STACK_SIZE
build/lpc210x_crt0.S:16     *ABS*:00000004 SVC_STACK_SIZE
build/lpc210x_crt0.S:19     *ABS*:00000010 MODE_USR
build/lpc210x_crt0.S:20     *ABS*:00000011 MODE_FIQ
build/lpc210x_crt0.S:21     *ABS*:00000012 MODE_IRQ
build/lpc210x_crt0.S:22     *ABS*:00000013 MODE_SVC
build/lpc210x_crt0.S:23     *ABS*:00000017 MODE_ABT
build/lpc210x_crt0.S:24     *ABS*:0000001b MODE_UND
build/lpc210x_crt0.S:25     *ABS*:0000001f MODE_SYS
build/lpc210x_crt0.S:27     *ABS*:00000080 I_BIT
build/lpc210x_crt0.S:28     *ABS*:00000040 F_BIT
build/lpc210x_crt0.S:31     .text:00000000 $a
build/lpc210x_crt0.S:37     .text:00000000 _boot
build/lpc210x_crt0.S:41     .text:00000000 Vectors
build/lpc210x_crt0.S:81     .text:0000005c _start
build/lpc210x_crt0.S:52     .text:00000020 _undf
build/lpc210x_crt0.S:53     .text:00000024 _swi
build/lpc210x_crt0.S:54     .text:00000028 _pabt
build/lpc210x_crt0.S:55     .text:0000002c _dabt
build/lpc210x_crt0.S:57     .text:00000034 _fiq
build/lpc210x_crt0.S:52     .text:00000020 $d
build/lpc210x_crt0.S:56     .text:00000030 _irq
build/lpc210x_crt0.S:59     .text:00000038 __undf
build/lpc210x_crt0.S:59     .text:00000038 $a
build/lpc210x_crt0.S:60     .text:0000003c __swi
build/lpc210x_crt0.S:61     .text:00000040 __pabt
build/lpc210x_crt0.S:62     .text:00000044 __dabt
build/lpc210x_crt0.S:63     .text:00000048 __irq
build/lpc210x_crt0.S:64     .text:0000004c __fiq
build/lpc210x_crt0.S:82     .text:0000005c start
build/lpc210x_crt0.S:83     .text:0000005c _mainCRTStartup
build/lpc210x_crt0.S:75     .text:00000050 _swiirq
build/lpc210x_crt0.S:76     .text:00000050 swiirq
build/lpc210x_crt0.S:144    .text:000000dc _reset
build/lpc210x_crt0.S:145    .text:000000dc reset
build/lpc210x_crt0.S:146    .text:000000dc exit
build/lpc210x_crt0.S:147    .text:000000dc abort
build/lpc210x_crt0.S:169    .text:000000e0 $d

UNDEFINED SYMBOLS
main
swiirqp
_etext
_data
_edata
__bss_start
__bss_end__
_stack

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -