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

📄 at91drivers.s

📁 基于ARM7微控制器AT91X40开发板的定时器程序
💻 S
📖 第 1 页 / 共 2 页
字号:
AT91Drivers:     file format elf32-littlearmAT91Driversarchitecture: arm, flags 0x00000112:EXEC_P, HAS_SYMS, D_PAGEDstart address 0x01000000???:    LOAD off    0x00008000 vaddr 0x01000000 paddr 0x01000000 align 2**15         filesz 0x00004038 memsz 0x000040b8 flags rwx???? = 0: [interworking not enabled] [APCS-32] [????????????] [????]Sections:Idx Name          Size      VMA       LMA       File off  Algn  0 .text         00000590  01000000  01000000  00008000  2**4                  CONTENTS, ALLOC, LOAD, READONLY, CODE  1 .data         00002038  01002000  01002000  0000a000  2**4                  CONTENTS, ALLOC, LOAD, DATA  2 .bss          00000080  01004038  01004038  0000c038  2**2                  ALLOC  3 .debug_abbrev 0000039b  00000000  00000000  0000c038  2**0                  CONTENTS, READONLY, DEBUGGING  4 .debug_info   00001154  00000000  00000000  0000c3d3  2**0                  CONTENTS, READONLY, DEBUGGING  5 .debug_line   0000057e  00000000  00000000  0000d527  2**0                  CONTENTS, READONLY, DEBUGGING  6 .debug_pubnames 00000173  00000000  00000000  0000daa5  2**0                  CONTENTS, READONLY, DEBUGGING  7 .debug_aranges 000000a0  00000000  00000000  0000dc18  2**0                  CONTENTS, READONLY, DEBUGGINGSYMBOL TABLE:01000000 l    d  .text	00000000 01002000 l    d  .data	00000000 01004038 l    d  .bss	00000000 00000000 l    d  .debug_abbrev	00000000 00000000 l    d  .debug_info	00000000 00000000 l    d  .debug_line	00000000 00000000 l    d  .debug_pubnames	00000000 00000000 l    d  .debug_aranges	00000000 00000000 l    d  *ABS*	00000000 00000000 l    d  *ABS*	00000000 00000000 l    d  *ABS*	00000000 00000000 l    df *ABS*	00000000 start.S01002000 l       .data	00000000 irq_stack01003004 l       .data	00000000 svc_stack00000000 l    df *ABS*	00000000 at91_aic.c0100004c l       .text	00000000 .gcc2_compiled.01004008 l     O .data	00000020 at91_irq_prtable00000000 l    df *ABS*	00000000 at91_timer.c01000190 l       .text	00000000 .gcc2_compiled.00000000 l    df *ABS*	00000000 at91.c010002f0 l       .text	00000000 .gcc2_compiled.00000000 l    df *ABS*	00000000 at91_usart.c0100038c l       .text	00000000 .gcc2_compiled.01004028 l     O .data	00000008 usarts0100038c l     F .text	00000054 usart_init01000400 l     F .text	00000018 usart_printf00000000 l    df *ABS*	00000000 main.c01000460 l       .text	00000000 .gcc2_compiled.01004030 l     O .data	00000004 cnt.301004034 l     O .data	00000004 count.7010004c4 g     F .text	000000bc maintest01000418 g     F .text	00000048 printf010001ec g     F .text	00000104 at91_set_timer010000e4 g     F .text	00000048 at91_release_irq01000460 g     F .text	00000064 deal_TimerIrq01000590 g     O .text	00000000 _etext01000590 g     O .text	00000000 __stop___kallsyms01000090 g     F .text	00000020 at91_mask_ack_irq0100004c g     F .text	00000020 at91_mask_irq0100012c g     F .text	00000064 at91_init_aic010000b0 g     F .text	00000034 at91_request_irq0100031c g     F .text	00000058 do_irq010003e0 g     F .text	00000020 at91_init_usart01000374 g     F .text	00000018 at91_init01004038 g     O .bss	00000080 svr0100006c g     F .text	00000024 at91_unmask_irq01000000 g     F .text	00000000 begin01000590 g     O .text	00000000 __stop___ex_table01004038 g     O .bss	00000000 __bss_start01000590 g     O .text	00000000 __start___kallsyms01000190 g     F .text	0000005c at91_del_timer010002f0 g     F .text	0000002c at91_install_irqhandler01000590 g     O .text	00000000 __stop___ksymtab01000024 g     F .text	00000000 irq_handler01000000 g     O .text	00000000 _begin01000590 g     O .text	00000000 __start___ex_table01004038 g     O .data	00000000 _edata010040b8 g     O .bss	00000000 _end01006000 g     O *ABS*	00000000 _end_kernel01000590 g     O .text	00000000 __start___ksymtabDisassembly of section .text:01000000 <begin>: 1000000:	e3a000d2 	mov	r0, #210	; 0xd2 1000004:	e129f000 	msr	CPSR_all, r0 1000008:	e59fd034 	ldr	sp, [pc, #34]	; 1000044 <irq_handler+0x20> 100000c:	e3a000d3 	mov	r0, #211	; 0xd3 1000010:	e129f000 	msr	CPSR_all, r0 1000014:	e59fd02c 	ldr	sp, [pc, #2c]	; 1000048 <irq_handler+0x24> 1000018:	e3a00013 	mov	r0, #19	; 0x13 100001c:	e129f000 	msr	CPSR_all, r0 1000020:	ea000127 	b	10004c4 <maintest>01000024 <irq_handler>: 1000024:	e24ee004 	sub	lr, lr, #4	; 0x4 1000028:	e92d5fff 	stmdb	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} 100002c:	e14f4000 	mrs	r4, SPSR 1000030:	e92d0010 	stmdb	sp!, {r4} 1000034:	eb0000b8 	bl	100031c <do_irq> 1000038:	e8bd0010 	ldmia	sp!, {r4} 100003c:	e169f004 	msr	SPSR_all, r4 1000040:	e8fd9fff 	ldmia	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, pc}^ 1000044:	01002000 	tsteq	r0, r0 1000048:	01003004 	tsteq	r0, r40100004c <at91_mask_irq>: 100004c:	e1a0c00d 	mov	r12, sp 1000050:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 1000054:	e24cb004 	sub	r11, r12, #4	; 0x47,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0};void at91_mask_irq(unsigned int irq){  unsigned long mask=1<<irq; 1000058:	e3a03001 	mov	r3, #1	; 0x1 100005c:	e1a03013 	mov	r3, r3, lsl r0  *(volatile unsigned int  *)AIC_IDCR=mask;   1000060:	e3e02eed 	mvn	r2, #3792	; 0xed0 1000064:	e502300b 	str	r3, [r2, -#11]} 1000068:	e91ba800 	ldmdb	r11, {r11, sp, pc}0100006c <at91_unmask_irq>: 100006c:	e1a0c00d 	mov	r12, sp 1000070:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 1000074:	e24cb004 	sub	r11, r12, #4	; 0x4void at91_unmask_irq(unsigned int irq){   unsigned long mask=1<<irq;   *(volatile unsigned int  *)AIC_IECR=mask; 1000078:	e3a02489 	mov	r2, #-1996488704	; 0x89000000 100007c:	e1a029c2 	mov	r2, r2, asr #19 1000080:	e3a03001 	mov	r3, #1	; 0x1 1000084:	e1a03013 	mov	r3, r3, lsl r0 1000088:	e5823000 	str	r3, [r2]} 100008c:	e91ba800 	ldmdb	r11, {r11, sp, pc}01000090 <at91_mask_ack_irq>: 1000090:	e1a0c00d 	mov	r12, sp 1000094:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 1000098:	e24cb004 	sub	r11, r12, #4	; 0x4void at91_mask_ack_irq(unsigned int irq){   at91_mask_irq(irq); 100009c:	ebffffea 	bl	100004c <at91_mask_irq>   *(volatile unsigned int  *)AIC_EOICR=0x00; 10000a0:	e3e02d3b 	mvn	r2, #3776	; 0xec0 10000a4:	e3a03000 	mov	r3, #0	; 0x0 10000a8:	e502300f 	str	r3, [r2, -#15] 10000ac:	e91ba800 	ldmdb	r11, {r11, sp, pc}010000b0 <at91_request_irq>: 10000b0:	e1a0c00d 	mov	r12, sp 10000b4:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 10000b8:	e24cb004 	sub	r11, r12, #4	; 0x4}int at91_request_irq(unsigned int irq_num,void *irq_isr){ 10000bc:	e1a02000 	mov	r2, r0   if(irq_num>0&&irq_num<32) 10000c0:	e2423001 	sub	r3, r2, #1	; 0x1 10000c4:	e353001e 	cmp	r3, #30	; 0x1e   {     svr[irq_num] = (unsigned long)irq_isr;     return 1;   }   else   return -1; 10000c8:	83e00000 	mvnhi	r0, #0	; 0x0 10000cc:	891ba800 	ldmhidb	r11, {r11, sp, pc} 10000d0:	e59f3008 	ldr	r3, [pc, #8]	; 10000e0 <at91_request_irq+0x30> 10000d4:	e3a00001 	mov	r0, #1	; 0x1 10000d8:	e7831102 	str	r1, [r3, r2, lsl #2] 10000dc:	e91ba800 	ldmdb	r11, {r11, sp, pc} 10000e0:	01004038 	tsteq	r0, r8, lsr r0010000e4 <at91_release_irq>: 10000e4:	e1a0c00d 	mov	r12, sp 10000e8:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 10000ec:	e24cb004 	sub	r11, r12, #4	; 0x4}int at91_release_irq(unsigned int irq_num){	    if(irq_num>0&&irq_num<32) 10000f0:	e2403001 	sub	r3, r0, #1	; 0x1 10000f4:	e353001e 	cmp	r3, #30	; 0x1e 10000f8:	8a000008 	bhi	1000120 <at91_release_irq+0x3c>   {   	 if( svr[irq_num] != 0) 10000fc:	e59f1024 	ldr	r1, [pc, #24]	; 1000128 <at91_release_irq+0x44> 1000100:	e1a02100 	mov	r2, r0, lsl #2 1000104:	e7913002 	ldr	r3, [r1, r2] 1000108:	e3530000 	cmp	r3, #0	; 0x0   	 	{        svr[irq_num] = (unsigned long)0;        return 1; 100010c:	13a00001 	movne	r0, #1	; 0x1 1000110:	13a03000 	movne	r3, #0	; 0x0 1000114:	17813002 	strne	r3, [r1, r2]      }      else      	return -1; 1000118:	03e00000 	mvneq	r0, #0	; 0x0 100011c:	e91ba800 	ldmdb	r11, {r11, sp, pc}   }   else     return -1; 1000120:	e3e00000 	mvn	r0, #0	; 0x0 1000124:	e91ba800 	ldmdb	r11, {r11, sp, pc} 1000128:	01004038 	tsteq	r0, r8, lsr r00100012c <at91_init_aic>: 100012c:	e1a0c00d 	mov	r12, sp 1000130:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 1000134:	e24cb004 	sub	r11, r12, #4	; 0x4}void at91_init_aic(void){   int irqnum;   *(volatile unsigned int  *)AIC_IDCR=0xffffffff;   *(volatile unsigned int  *)AIC_ICCR=0xffffffff;   for(irqnum=0;irqnum<32;irqnum++) *(volatile unsigned int  *)AIC_EOICR=irqnum; 1000138:	e3a01000 	mov	r1, #0	; 0x0 100013c:	e3e02eed 	mvn	r2, #3792	; 0xed0 1000140:	e3e03000 	mvn	r3, #0	; 0x0 1000144:	e502300b 	str	r3, [r2, -#11] 1000148:	e3e00d3b 	mvn	r0, #3776	; 0xec0 100014c:	e5023007 	str	r3, [r2, -#7] 1000150:	e500100f 	str	r1, [r0, -#15] 1000154:	e2811001 	add	r1, r1, #1	; 0x1 1000158:	e351001f 	cmp	r1, #31	; 0x1f 100015c:	dafffffb 	ble	1000150 <at91_init_aic+0x24>   for(irqnum=0;irqnum<32;irqnum++) *(volatile unsigned int  *)(AIC_SMR(irqnum))=at91_irq_prtable[irqnum] | EdgeTriggered; 1000160:	e3a01000 	mov	r1, #0	; 0x0 1000164:	e3a02102 	mov	r2, #-2147483648	; 0x80000000 1000168:	e1a029c2 	mov	r2, r2, asr #19 100016c:	e59f0018 	ldr	r0, [pc, #18]	; 100018c <at91_init_aic+0x60> 1000170:	e7d03001 	ldrb	r3, [r0, r1] 1000174:	e3833020 	orr	r3, r3, #32	; 0x20 1000178:	e7823101 	str	r3, [r2, r1, lsl #2] 100017c:	e2811001 	add	r1, r1, #1	; 0x1 1000180:	e351001f 	cmp	r1, #31	; 0x1f 1000184:	dafffff9 	ble	1000170 <at91_init_aic+0x44>} 1000188:	e91ba800 	ldmdb	r11, {r11, sp, pc} 100018c:	01004008 	tsteq	r0, r801000190 <at91_del_timer>: 1000190:	e1a0c00d 	mov	r12, sp 1000194:	e92dd8f0 	stmdb	sp!, {r4, r5, r6, r7, r11, r12, lr, pc} 1000198:	e24cb004 	sub	r11, r12, #4	; 0x4extern unsigned long svr[32];int at91_del_timer(unsigned char TimerNum){  register volatile struct at91_timers* tt=(struct at91_timers*)(AT91_TC_BASE); 100019c:	e3a05102 	mov	r5, #-2147483648	; 0x80000000 10001a0:	e1a05745 	mov	r5, r5, asr #14 10001a4:	e20000ff 	and	r0, r0, #255	; 0xff  register volatile struct at91_timer_channel* tc = &tt->chans[TimerNum].ch; 10001a8:	e1a06300 	mov	r6, r0, lsl #6 10001ac:	e0867005 	add	r7, r6, r5  if(TimerNum>2) 10001b0:	e3500002 	cmp	r0, #2	; 0x2 10001b4:	8a00000a 	bhi	10001e4 <at91_del_timer+0x54>  	 return -1;   at91_mask_irq(TimerNum+4); 10001b8:	e2804004 	add	r4, r0, #4	; 0x4 10001bc:	e1a00004 	mov	r0, r4 10001c0:	ebffffa1 	bl	100004c <at91_mask_irq>  tc->ccr= 0x02;  tc->rc = 0;  at91_release_irq(TimerNum+4); 10001c4:	e1a00004 	mov	r0, r4 10001c8:	e3a03002 	mov	r3, #2	; 0x2 10001cc:	e7863005 	str	r3, [r6, r5] 10001d0:	e3a02000 	mov	r2, #0	; 0x0 10001d4:	e587201c 	str	r2, [r7, #28] 10001d8:	ebffffc1 	bl	10000e4 <at91_release_irq>      return 1; 	 10001dc:	e3a00001 	mov	r0, #1	; 0x1 10001e0:	e91ba8f0 	ldmdb	r11, {r4, r5, r6, r7, r11, sp, pc} 10001e4:	e3e00000 	mvn	r0, #0	; 0x0} 10001e8:	e91ba8f0 	ldmdb	r11, {r4, r5, r6, r7, r11, sp, pc}010001ec <at91_set_timer>: 10001ec:	e1a0c00d 	mov	r12, sp 10001f0:	e92dd830 	stmdb	sp!, {r4, r5, r11, r12, lr, pc} 10001f4:	e24cb004 	sub	r11, r12, #4	; 0x4int at91_set_timer(at91_timer_param param){ 10001f8:	e24b3020 	sub	r3, r11, #32	; 0x20 10001fc:	e24dd00c 	sub	sp, sp, #12	; 0xc 1000200:	e8830007 	stmia	r3, {r0, r1, r2}  register volatile struct at91_timers* tt=(struct at91_timers*)(AT91_TC_BASE); 1000204:	e3a04102 	mov	r4, #-2147483648	; 0x80000000  register volatile struct at91_timer_channel* tc = &tt->chans[param.TimerNum].ch; 1000208:	e51b0020 	ldr	r0, [r11, -#32] 100020c:	e1a04744 	mov	r4, r4, asr #14  unsigned long v;  if(param.TimerNum>2 || param.CycleTime==0 || param.irq_svr==0) 1000210:	e3500002 	cmp	r0, #2	; 0x2 1000214:	e0845300 	add	r5, r4, r0, lsl #6 1000218:	8a00001c 	bhi	1000290 <at91_set_timer+0xa4> 100021c:	e51b301c 	ldr	r3, [r11, -#28] 1000220:	e3530000 	cmp	r3, #0	; 0x0 1000224:	0a000019 	beq	1000290 <at91_set_timer+0xa4> 1000228:	e51b1018 	ldr	r1, [r11, -#24] 100022c:	e3510000 	cmp	r1, #0	; 0x0 1000230:	0a000016 	beq	1000290 <at91_set_timer+0xa4>  	 return -1;   	   at91_request_irq(param.TimerNum+4,param.irq_svr); 1000234:	e2800004 	add	r0, r0, #4	; 0x4 1000238:	ebffff9c 	bl	10000b0 <at91_request_irq>  tt->bcr=0; 100023c:	e3a03000 	mov	r3, #0	; 0x0 1000240:	e58430c0 	str	r3, [r4, #192]  switch(param.TimerNum) 1000244:	e51b3020 	ldr	r3, [r11, -#32] 1000248:	e3530001 	cmp	r3, #1	; 0x1 100024c:	0a000007 	beq	1000270 <at91_set_timer+0x84> 1000250:	3a000002 	bcc	1000260 <at91_set_timer+0x74> 1000254:	e3530002 	cmp	r3, #2	; 0x2 1000258:	0a000008 	beq	1000280 <at91_set_timer+0x94> 100025c:	ea00000b 	b	1000290 <at91_set_timer+0xa4>  {  	case 0:   		v=tt->bmr&0xfc;

⌨️ 快捷键说明

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