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

📄 port.lst

📁 great linker script for your uC LPC 2148 with usb support
💻 LST
📖 第 1 页 / 共 2 页
字号:
 139:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	pxTopOfStack--;	
 140:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	*pxTopOfStack = ( portSTACK_TYPE ) 0x01010101;	/* R1 */
 117              	, .L3+48
 118 0052 134B     	.LVL16:
 119              		.loc 1 139 0
 120              		sub	r1, r1, #4
 121 0054 0439     		.loc 1 140 0
 122              		str	r3, [r1]
 123 0056 0B60     		.loc 1 141 0
 141:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	pxTopOfStack--;	
 124              	, r0
 125 0058 031C     	.LVL17:
 126              		sub	r3, r3, #60
 127 005a 3C3B     		.loc 1 145 0
 142:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 143:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* When the task starts is will expect to find the function parameter in
 144:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	R0. */
 145:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	*pxTopOfStack = ( portSTACK_TYPE ) pvParameters; /* R0 */
 128              		r2, [r3]
 129 005c 1A60     		.loc 1 146 0
 146:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	pxTopOfStack--;
 130              	ov	r2, r0
 131 005e 021C     	.LVL18:
 132              		sub	r2, r2, #64
 133 0060 403A     		.loc 1 155 0
 147:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 148:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* The last thing onto the stack is the status register, which is set for
 149:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	system mode, with interrupts enabled. */
 150:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	*pxTopOfStack = ( portSTACK_TYPE ) portINITIAL_SPSR;
 151:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 152:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	#ifdef THUMB_INTERWORK
 153:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	{
 154:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 		/* We want the task to start in thumb mode. */
 155:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 		*pxTopOfStack |= portTHUMB_MODE_BIT;
 134              		r3, #63
 135 0062 3F23     	.LVL19:
 136              		str	r3, [r2]
 137 0064 1360     		.loc 1 159 0
 156:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	}
 157:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	#endif
 158:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 159:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	pxTopOfStack--;
 138              		r0, r0, #68
 139 0066 4438     	.LVL20:
 140              		.loc 1 165 0
 160:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 161:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* Some optimisation levels use the stack differently to others.  This 
 162:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	means the interrupt flags cannot always be stored on the stack and will
 163:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	instead be stored in a variable, which is then saved as part of the
 164:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	tasks context. */
 165:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	*pxTopOfStack = portNO_CRITICAL_SECTION_NESTING;
 141              	v	r3, #0
 142 0068 0023     		.loc 1 100 0
 143              		@ lr needed for prologue
 144              		.loc 1 165 0
 145              		str	r3, [r0]
 146 006a 0360     	.LVL21:
 147              		.loc 1 168 0
 166:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 167:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	return pxTopOfStack;
 168:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** }
 148              	eeded for prologue
 149              		bx	lr
 150 006c 7047     	.L4:
 151              		.align	2
 152 006e 0000     	.L3:
 153              		.word	-1431655766
 154 0070 AAAAAAAA 		.word	303174162
 155 0074 12121212 		.word	286331153
 156 0078 11111111 		.word	269488144
 157 007c 10101010 		.word	151587081
 158 0080 09090909 		.word	134744072
 159 0084 08080808 		.word	117901063
 160 0088 07070707 		.word	101058054
 161 008c 06060606 		.word	84215045
 162 0090 05050505 		.word	67372036
 163 0094 04040404 		.word	50529027
 164 0098 03030303 		.word	33686018
 165 009c 02020202 		.word	16843009
 166 00a0 01010101 	.LFE2:
 168              		.align	2
 169              		.global	vPortEndScheduler
 170              		.code 16
 171              		.thumb_func
 173              	vPortEndScheduler:
 174              	.LFB4:
 175              		.loc 1 186 0
 169:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** /*-----------------------------------------------------------*/
 170:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 171:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** portBASE_TYPE xPortStartScheduler( void )
 172:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** {
 173:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* Start the timer that generates the tick ISR.  Interrupts are disabled
 174:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	here already. */
 175:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	prvSetupTimerInterrupt();
 176:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 177:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* Start the first task. */
 178:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	vPortISRStartFirstTask();	
 179:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 180:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* Should not get here! */
 181:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	return 0;
 182:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** }
 183:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** /*-----------------------------------------------------------*/
 184:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 185:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** void vPortEndScheduler( void )
 186:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** {
 176              	loc 1 189 0
 177              		@ sp needed for prologue
 187:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* It is unlikely that the ARM port will require this function as there
 188:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	is nothing to return to.  */
 189:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** }
 178              	x	lr
 179              	.LFE4:
 181              		.align	2
 182              		.global	xPortStartScheduler
 183 00a6 0000     		.code 16
 184              		.thumb_func
 186              	xPortStartScheduler:
 187              	.LFB3:
 188              		.loc 1 172 0
 189              		push	{lr}
 190              	.LCFI0:
 191 00a8 00B5     	.LBB4:
 192              	.LBB5:
 193              		.loc 1 201 0
 194              		ldr	r3, .L9
 190:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** /*-----------------------------------------------------------*/
 191:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 192:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** /*
 193:rtos/Source/portable/GCC/ARM7_LPC2000/port.c ****  * Setup the timer 0 to generate the tick interrupts at the required frequency.
 194:rtos/Source/portable/GCC/ARM7_LPC2000/port.c ****  */
 195:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** static void prvSetupTimerInterrupt( void )
 196:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** {
 197:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** unsigned portLONG ulCompareMatch;
 198:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 199:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* A 1ms tick does not require the use of the timer prescale.  This is
 200:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	defaulted to zero but can be used if necessary. */
 201:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	T0PR = portPRESCALE_VALUE;
 195              	r2, [r3]
 196 00aa 104B     		.loc 1 213 0
 197 00ac 0022     		ldr	r2, .L9+4
 198 00ae 1A60     		add	r3, r3, #12
 202:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 203:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* Calculate the match value required for our wanted tick rate. */
 204:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	ulCompareMatch = configCPU_CLOCK_HZ / configTICK_RATE_HZ;
 205:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 206:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* Protect against divide by zero.  Using an if() statement still results
 207:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	in a warning - hence the #if. */
 208:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	#if portPRESCALE_VALUE != 0
 209:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	{
 210:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 		ulCompareMatch /= ( portPRESCALE_VALUE + 1 );
 211:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	}
 212:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	#endif
 213:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	T0MR0 = ulCompareMatch;
 199              		r2, [r3]
 200 00b0 0F4A     		.loc 1 216 0
 201 00b2 0C33     		mov	r2, #3
 202 00b4 1A60     		sub	r3, r3, #4
 214:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 215:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* Generate tick with timer 0 compare match. */
 216:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	T0MCR = portRESET_COUNT_ON_MATCH | portINTERRUPT_ON_MATCH;
 203              		r2, [r3]
 204 00b6 0322     		.loc 1 219 0
 205 00b8 043B     		ldr	r2, .L9+8
 206 00ba 1A60     		ldr	r3, [r2]
 217:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 218:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* Setup the VIC for the timer. */
 219:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	VICIntSelect &= ~( portTIMER_VIC_CHANNEL_BIT );
 207              		r1, #16
 208 00bc 0D4A     		bic	r3, r3, r1
 209 00be 1368     		str	r3, [r2]
 210 00c0 1021     		.loc 1 220 0
 211 00c2 8B43     		add	r2, r2, #4
 212 00c4 1360     		ldr	r3, [r2]
 220:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	VICIntEnable |= portTIMER_VIC_CHANNEL_BIT;
 213              	3, r3, r1
 214 00c6 0432     		str	r3, [r2]
 215 00c8 1368     		.loc 1 227 0
 216 00ca 0B43     		ldr	r2, .L9+12
 217 00cc 1360     		ldr	r3, .L9+16
 221:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	
 222:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* The ISR installed depends on whether the preemptive or cooperative
 223:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	scheduler is being used. */
 224:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	#if configUSE_PREEMPTION == 1
 225:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	{
 226:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 		extern void ( vPreemptiveTick )( void );
 227:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 		VICVectAddr0 = ( portLONG ) vPreemptiveTick;
 218              	r2, [r3]
 219 00ce 0A4A     		.loc 1 236 0
 220 00d0 0A4B     		ldr	r3, .L9+20
 221 00d2 1A60     		mov	r2, #36
 228:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	}
 229:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	#else
 230:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	{
 231:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 		extern void ( vNonPreemptiveTick )( void );
 232:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 		VICVectAddr0 = ( portLONG ) vNonPreemptiveTick;
 233:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	}
 234:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	#endif
 235:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 236:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	VICVectCntl0 = portTIMER_VIC_CHANNEL | portTIMER_VIC_ENABLE;
 222              		r2, [r3]
 223 00d4 0A4B     		.loc 1 240 0
 224 00d6 2422     		ldr	r3, .L9+24
 225 00d8 1A60     		mov	r2, #1
 237:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 
 238:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	/* Start the timer - interrupts are disabled when this function is called
 239:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	so it is okay to do this here. */
 240:rtos/Source/portable/GCC/ARM7_LPC2000/port.c **** 	T0TCR = portENABLE_TIMER;
 226              		r2, [r3]
 227 00da 0A4B     	.LBE5:
 228 00dc 0122     	.LBE4:
 229 00de 1A60     		.loc 1 178 0
 230              		bl	vPortISRStartFirstTask
 231              		.loc 1 182 0
 232              		mov	r0, #0
 233 00e0 FFF7FEFF 		@ sp needed for prologue
 234              		pop	{r1}
 235 00e4 0020     		bx	r1
 236              	.L10:
 237 00e6 02BC     		.align	2
 238 00e8 0847     	.L9:
 239              		.word	-536854516
 240 00ea 0000     		.word	7500
 241              		.word	-4084
 242 00ec 0C4000E0 		.word	vPreemptiveTick
 243 00f0 4C1D0000 		.word	-3840
 244 00f4 0CF0FFFF 		.word	-3584
 245 00f8 00000000 		.word	-536854524
 246 00fc 00F1FFFF 	.LFE3:
 248 0104 044000E0 		.section	.debug_frame,"",%progbits
 249              	.Lframe0:
 250              		.4byte	.LECIE0-.LSCIE0
 298              	.LLST1:
DEFINED SYMBOLS
                            *ABS*:00000000 port.c
c:\DOCUME~1\Reggie\LOCALS~1\Temp/cc2Laaaa.s:1      .text:00000000 $t
c:\DOCUME~1\Reggie\LOCALS~1\Temp/cc2Laaaa.s:16     .text:00000000 pxPortInitialiseStack
c:\DOCUME~1\Reggie\LOCALS~1\Temp/cc2Laaaa.s:154    .text:00000070 $d
c:\DOCUME~1\Reggie\LOCALS~1\Temp/cc2Laaaa.s:174    .text:000000a4 vPortEndScheduler
c:\DOCUME~1\Reggie\LOCALS~1\Temp/cc2Laaaa.s:171    .text:000000a4 $t
c:\DOCUME~1\Reggie\LOCALS~1\Temp/cc2Laaaa.s:188    .text:000000a8 xPortStartScheduler
c:\DOCUME~1\Reggie\LOCALS~1\Temp/cc2Laaaa.s:242    .text:000000ec $d

UNDEFINED SYMBOLS
vPortISRStartFirstTask
vPreemptiveTick

⌨️ 快捷键说明

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