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

📄 minitos.s

📁 minitos是一个实时的嵌入式操作系统
💻 S
📖 第 1 页 / 共 5 页
字号:
	}        for ( irqno = 0 ; irqno < 32 ; irqno++ ) 100025c:	e3a01000 	mov	r1, #0	; 0x0 1000260:	e3a00102 	mov	r0, #-2147483648	; 0x80000000 1000264:	e59fe024 	ldr	lr, [pc, #24]	; 1000290 <at91_init_aic+0x68> 1000268:	e1a009c0 	mov	r0, r0, asr #19 100026c:	e59fc020 	ldr	r12, [pc, #20]	; 1000294 <at91_init_aic+0x6c>        {               __arch_putl((eb01_irq_prtable[irqno] >> 5) | eb01_irq_type[irqno],AIC_SMR(irqno)); 1000270:	e7de2001 	ldrb	r2, [lr, r1] 1000274:	e7dc3001 	ldrb	r3, [r12, r1] 1000278:	e18332a2 	orr	r3, r3, r2, lsr #5 100027c:	e7803101 	str	r3, [r0, r1, lsl #2] 1000280:	e2811001 	add	r1, r1, #1	; 0x1 1000284:	e351001f 	cmp	r1, #31	; 0x1f 1000288:	dafffff8 	ble	1000270 <at91_init_aic+0x48>														}} 100028c:	e91ba800 	ldmdb	r11, {r11, sp, pc} 1000290:	0100601c 	tsteq	r0, r12, lsl r0 1000294:	0100603c 	tsteq	r0, r12, lsr r001000298 <init_IRQ>: 1000298:	e1a0c00d 	mov	r12, sp 100029c:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 10002a0:	e24cb004 	sub	r11, r12, #4	; 0x4														 void init_IRQ(void){  at91_init_aic(); 10002a4:	ebffffdf 	bl	1000228 <at91_init_aic>  install_irqhandler(); 10002a8:	ebffff9c 	bl	1000120 <install_irqhandler> 10002ac:	e91ba800 	ldmdb	r11, {r11, sp, pc}010002b0 <init_console>: 10002b0:	e1a0c00d 	mov	r12, sp 10002b4:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 10002b8:	e24cb004 	sub	r11, r12, #4	; 0x4 10002bc:	e91ba800 	ldmdb	r11, {r11, sp, pc}010002c0 <do_IRQ>: 10002c0:	e1a0c00d 	mov	r12, sp 10002c4:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 10002c8:	e24cb004 	sub	r11, r12, #4	; 0x4}void init_console(void){ int i; i=0;}void do_IRQ(void){   atmel_timer_interrupt(); 10002cc:	ebffffc2 	bl	10001dc <atmel_timer_interrupt> 10002d0:	e91ba800 	ldmdb	r11, {r11, sp, pc}010002d4 <init_kernel>: 10002d4:	e1a0c00d 	mov	r12, sp 10002d8:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 10002dc:	e24cb004 	sub	r11, r12, #4	; 0x4 10002e0:	e91ba800 	ldmdb	r11, {r11, sp, pc}010002e4 <at91_init_kernel>: 10002e4:	e1a0c00d 	mov	r12, sp 10002e8:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 10002ec:	e24cb004 	sub	r11, r12, #4	; 0x4}void init_kernel(void){   //init_IRQ();   //init_console();   //init_timer();}void at91_init_kernel(void){   init_IRQ(); 10002f0:	ebffffe8 	bl	1000298 <init_IRQ>   init_console(); 10002f4:	ebffffed 	bl	10002b0 <init_console>   init_timer(); 10002f8:	ebffff95 	bl	1000154 <init_timer> 10002fc:	e91ba800 	ldmdb	r11, {r11, sp, pc}01000300 <UserTest>: 1000300:	e1a0c00d 	mov	r12, sp 1000304:	e92dd830 	stmdb	sp!, {r4, r5, r11, r12, lr, pc} 1000308:	e24cb004 	sub	r11, r12, #4	; 0x4int gX1,gX2;void UserTest(int argc,void*argv){        int i;	gX1=0; 100030c:	e59f3038 	ldr	r3, [pc, #38]	; 100034c <UserTest+0x4c> 1000310:	e3a02000 	mov	r2, #0	; 0x0	gX2=0; 1000314:	e59f1034 	ldr	r1, [pc, #34]	; 1000350 <UserTest+0x50>        for(i=0;i<10;i++,gX1++) 1000318:	e1a04002 	mov	r4, r2 100031c:	e5832000 	str	r2, [r3] 1000320:	e1a05003 	mov	r5, r3 1000324:	e5812000 	str	r2, [r1]        {	       // SendOneChar(1,argc);	        DelayTicks(2); 1000328:	e3a00002 	mov	r0, #2	; 0x2 100032c:	eb0002ba 	bl	1000e1c <DelayTicks> 1000330:	e2844001 	add	r4, r4, #1	; 0x1 1000334:	e5953000 	ldr	r3, [r5] 1000338:	e3540009 	cmp	r4, #9	; 0x9 100033c:	e2833001 	add	r3, r3, #1	; 0x1 1000340:	e5853000 	str	r3, [r5] 1000344:	dafffff7 	ble	1000328 <UserTest+0x28>	        if(i==5)	        {	            //    SuspendProcess(pUserTest);//挂起本进程	        }			        }} 1000348:	e91ba830 	ldmdb	r11, {r4, r5, r11, sp, pc} 100034c:	01007858 	tsteq	r0, r8, asr r8 1000350:	0100785c 	tsteq	r0, r12, asr r801000354 <UserTest2>: 1000354:	e1a0c00d 	mov	r12, sp 1000358:	e92dd810 	stmdb	sp!, {r4, r11, r12, lr, pc} 100035c:	e24cb004 	sub	r11, r12, #4	; 0x4void UserTest2(int argc,void *argv){	gX2=0; 1000360:	e59f2020 	ldr	r2, [pc, #20]	; 1000388 <UserTest2+0x34> 1000364:	e3a03000 	mov	r3, #0	; 0x0	while(1) 1000368:	e1a04002 	mov	r4, r2 100036c:	e5823000 	str	r3, [r2]	{		DelayTicks(10); 1000370:	e3a0000a 	mov	r0, #10	; 0xa 1000374:	eb0002a8 	bl	1000e1c <DelayTicks>		gX2++; 1000378:	e5943000 	ldr	r3, [r4] 100037c:	e2833001 	add	r3, r3, #1	; 0x1 1000380:	e5843000 	str	r3, [r4]	} 1000384:	eafffff9 	b	1000370 <UserTest2+0x1c> 1000388:	0100785c 	tsteq	r0, r12, asr r8} 100038c:	e91ba810 	ldmdb	r11, {r4, r11, sp, pc}01000390 <start_kernel>: 1000390:	e1a0c00d 	mov	r12, sp 1000394:	e92dd9f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r11, r12, lr, pc} 1000398:	e24cb004 	sub	r11, r12, #4	; 0x4void start_kernel(void){    gTest=0; 100039c:	e3a05000 	mov	r5, #0	; 0x0 10003a0:	e59f3078 	ldr	r3, [pc, #78]	; 1000420 <start_kernel+0x90> 10003a4:	e24dd00c 	sub	sp, sp, #12	; 0xc 10003a8:	e5835000 	str	r5, [r3]    at91_init_kernel(); 10003ac:	ebffffcc 	bl	10002e4 <at91_init_kernel>//  start miniTOS		MO_InitSystem();	//minitos init 10003b0:	eb00018f 	bl	10009f4 <MO_InitSystem>	pUserTest=CreateProcess(UserTest,'1',NULL,TaskStk+900,PROC_PRIO,5,MO_RUN); 10003b4:	e3a08009 	mov	r8, #9	; 0x9 10003b8:	e58d8000 	str	r8, [sp] 10003bc:	e3a07005 	mov	r7, #5	; 0x5 10003c0:	e58d7004 	str	r7, [sp, #4] 10003c4:	e3a06001 	mov	r6, #1	; 0x1 10003c8:	e58d6008 	str	r6, [sp, #8] 10003cc:	e59f0050 	ldr	r0, [pc, #50]	; 1000424 <start_kernel+0x94> 10003d0:	e3a01031 	mov	r1, #49	; 0x31 10003d4:	e59f304c 	ldr	r3, [pc, #4c]	; 1000428 <start_kernel+0x98> 10003d8:	e1a02005 	mov	r2, r5 10003dc:	e59f4048 	ldr	r4, [pc, #48]	; 100042c <start_kernel+0x9c> 10003e0:	eb0001f6 	bl	1000bc0 <CreateProcess> 10003e4:	e5840000 	str	r0, [r4]	pUserTest2=CreateProcess(UserTest2,'2',NULL,TaskStk2+900,PROC_PRIO,5,MO_RUN); 10003e8:	e58d8000 	str	r8, [sp] 10003ec:	e58d7004 	str	r7, [sp, #4] 10003f0:	e58d6008 	str	r6, [sp, #8] 10003f4:	e59f0034 	ldr	r0, [pc, #34]	; 1000430 <start_kernel+0xa0> 10003f8:	e3a01032 	mov	r1, #50	; 0x32 10003fc:	e59f3030 	ldr	r3, [pc, #30]	; 1000434 <start_kernel+0xa4> 1000400:	e1a02005 	mov	r2, r5 1000404:	e59f402c 	ldr	r4, [pc, #2c]	; 1000438 <start_kernel+0xa8> 1000408:	eb0001ec 	bl	1000bc0 <CreateProcess> 100040c:	e5840000 	str	r0, [r4]	SelectNewTask(); 1000410:	eb00006a 	bl	10005c0 <SelectNewTask>	unlock_int(); 1000414:	eb00016d 	bl	10009d0 <unlock_int>	begin_next_proc(); 1000418:	eb00000e 	bl	1000458 <begin_next_proc> 100041c:	ea000006 	b	100043c <start_kernel+0xac> 1000420:	01006018 	tsteq	r0, r8, lsl r0 1000424:	01000300 	tsteq	r0, r0, lsl #6 1000428:	01007404 	tsteq	r0, r4, lsl #8 100042c:	01007468 	tsteq	r0, r8, ror #8 1000430:	01000354 	tsteq	r0, r4, asr r3 1000434:	010077f0 	streqsh	r7, [r0, -r0] 1000438:	01007854 	tsteq	r0, r4, asr r8} 100043c:	e91ba9f0 	ldmdb	r11, {r4, r5, r6, r7, r8, r11, sp, pc}01000440 <IRQ_Enter>: 1000440:	e24ee004 	sub	lr, lr, #4	; 0x4 1000444:	e92d5fff 	stmdb	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} 1000448:	ebffff9c 	bl	10002c0 <do_IRQ> 100044c:	ebffff11 	bl	1000098 <IRQ_Shell> 1000450:	ea00001d 	b	10004cc <IRQ_switch_task> 1000454:	e8fd9fff 	ldmia	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, pc}^01000458 <begin_next_proc>: 1000458:	e59f00ec 	ldr	r0, [pc, #ec]	; 100054c <TisrEntry+0x4> 100045c:	e5900000 	ldr	r0, [r0] 1000460:	e8b00002 	ldmia	r0!, {r1} 1000464:	e161f001 	msr	SPSR_c, r1 1000468:	e8b00002 	ldmia	r0!, {r1} 100046c:	e121f001 	msr	CPSR_c, r1 1000470:	e8b02000 	ldmia	r0!, {sp} 1000474:	e8b00006 	ldmia	r0!, {r1, r2} 1000478:	e92d0006 	stmdb	sp!, {r1, r2} 100047c:	e8b05ffe 	ldmia	r0!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} 1000480:	e92d5ffe 	stmdb	sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, lr} 1000484:	e8bddfff 	ldmia	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, lr, pc}01000488 <switch_task>: 1000488:	e92d0001 	stmdb	sp!, {r0} 100048c:	e59f00bc 	ldr	r0, [pc, #bc]	; 1000550 <TisrEntry+0x8> 1000490:	e5900000 	ldr	r0, [r0] 1000494:	e2800048 	add	r0, r0, #72	; 0x48 1000498:	e9201ffe 	stmdb	r0!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12} 100049c:	e1a01000 	mov	r1, r0 10004a0:	e8bd0001 	ldmia	sp!, {r0} 10004a4:	e9210001 	stmdb	r1!, {r0} 10004a8:	e9214000 	stmdb	r1!, {lr} 10004ac:	e9214000 	stmdb	r1!, {lr} 10004b0:	e9212000 	stmdb	r1!, {sp} 10004b4:	e10f0000 	mrs	r0, CPSR 10004b8:	e9210001 	stmdb	r1!, {r0} 10004bc:	e14f0000 	mrs	r0, SPSR 10004c0:	e9210001 	stmdb	r1!, {r0} 10004c4:	eb00003d 	bl	10005c0 <SelectNewTask> 10004c8:	eaffffe2 	b	1000458 <begin_next_proc>010004cc <IRQ_switch_task>: 10004cc:	e1a0000d 	mov	r0, sp 10004d0:	e28dd034 	add	sp, sp, #52	; 0x34 10004d4:	e59d1000 	ldr	r1, [sp] 10004d8:	e28dd004 	add	sp, sp, #4	; 0x4 10004dc:	e25ff000 	subs	pc, pc, #0	; 0x0 10004e0:	e1a00000 	nop			(mov r0,r0) 10004e4:	e1a00000 	nop			(mov r0,r0) 10004e8:	e1a00000 	nop			(mov r0,r0) 10004ec:	e1a00000 	nop			(mov r0,r0) 10004f0:	e59f205c 	ldr	r2, [pc, #5c]	; 1000554 <TisrEntry+0xc> 10004f4:	e5922000 	ldr	r2, [r2] 10004f8:	e14f3000 	mrs	r3, SPSR 10004fc:	e8a20008 	stmia	r2!, {r3} 1000500:	e10f3000 	mrs	r3, CPSR 1000504:	e8a20008 	stmia	r2!, {r3} 1000508:	e8a22000 	stmia	r2!, {sp} 100050c:	e8a24000 	stmia	r2!, {lr} 1000510:	e8a20002 	stmia	r2!, {r1} 1000514:	e1a0e000 	mov	lr, r0 1000518:	e1a0d002 	mov	sp, r2 100051c:	e28dd034 	add	sp, sp, #52	; 0x34 1000520:	e8be1fff 	ldmia	lr!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12} 1000524:	e92d1fff 	stmdb	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12} 1000528:	e59f0028 	ldr	r0, [pc, #28]	; 1000558 <TisrEntry+0x10> 100052c:	e5900000 	ldr	r0, [r0] 1000530:	e8b00002 	ldmia	r0!, {r1} 1000534:	e8b00002 	ldmia	r0!, {r1} 1000538:	e8b02000 	ldmia	r0!, {sp} 100053c:	eb00001f 	bl	10005c0 <SelectNewTask> 1000540:	eaffffc4 	b	1000458 <begin_next_proc>01000544 <ProcEntry>: 1000544:	01000b40 	tsteq	r0, r0, asr #2201000548 <TisrEntry>: 1000548:	01001798 	streqb	r1, [r0, -r8] 100054c:	010088f4 	streqsh	r8, [r0, -r4] 1000550:	010088f4 	streqsh	r8, [r0, -r4] 1000554:	010088f4 	streqsh	r8, [r0, -r4] 1000558:	010088f4 	streqsh	r8, [r0, -r4]0100055c <SelectHightestPrioTask>: 100055c:	e1a0c00d 	mov	r12, sp 1000560:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 1000564:	e24cb004 	sub	r11, r12, #4	; 0x4*****************************************************************/
struct ProcTbl * SelectHightestPrioTask(void)
{
    int i;
    for(i=0;i<N_TASK_PRIO;i++)
 1000568:	e3a03000 	mov	r3, #0	; 0x0 100056c:	e59f203c 	ldr	r2, [pc, #3c]	; 10005b0 <SelectHightestPrioTask+0x54>    {
        if(ptrTaskRdy[i]!=NULL)
 1000570:	e7920103 	ldr	r0, [r2, r3, lsl #2] 1000574:	e3500000 	cmp	r0, #0	; 0x0 1000578:	191ba800 	ldmnedb	r11, {r11, sp, pc} 100057c:	e2833001 	add	r3, r3, #1	; 0x1 1000580:	e3530007 	cmp	r3, #7	; 0x7 1000584:	dafffff9 	ble	1000570 <SelectHightestPrioTask+0x14>            return ptrTaskRdy[i];
    }
    if(ptrServerRdy!=NULL)
 1000588:	e59f3024 	ldr	r3, [pc, #24]	; 10005b4 <SelectHightestPrioTask+0x58> 100058c:	e5930000 	ldr	r0, [r3] 1000590:	e3500000 	cmp	r0, #0	; 0x0 1000594:	191ba800 	ldmnedb	r11, {r11, sp, pc}        return ptrServerRdy;
    if(ptrProcRdy!=NULL)
 1000598:	e59f3018 	ldr	r3, [pc, #18]	; 10005b8 <SelectHightestPrioTask+0x5c> 100059c:	e5930000 	ldr	r0, [r3] 10005a0:	e3500000 	cmp	r0, #0	; 0x0        return ptrProcRdy;
    return ptrIdle;
 10005a4:	059f3010 	ldreq	r3, [pc, #10]	; 10005bc <SelectHightestPrioTask+0x60> 10005a8:	05930000 	ldreq	r0, [r3] 10005ac:	e91ba800 	ldmdb	r11, {r11, sp, pc} 10005b0:	01007860 	tsteq	r0, r0, ror #16 10005b4:	01007880 	tsteq	r0, r0, lsl #17 10005b8:	01007884 	tsteq	r0, r4, lsl #17 10005bc:	01007888 	tsteq	r0, r8, lsl #17010005c0 <SelectNewTask>:}
 10005c0:	e1a0c00d 	mov	r12, sp 10005c4:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 10005c8:	e24cb004 	sub	r11, r12, #4	; 0x4/****************************************************************
**function: 
**
*****************************************************************/
void SelectNewTask(void)
{
    ptrCurrProc=SelectHightestPrioTask();
 10005cc:	ebffffe2 	bl	100055c <SelectHightestPrioTask> 10005d0:	e59f3004 	ldr	r3, [pc, #4]	; 10005dc <SelectNewTask+0x1c> 10005d4:	e5830000 	str	r0, [r3] 10005d8:	e91ba800 	ldmdb	r11, {r11, sp, pc} 10005dc:	010088f4 	streqsh	r8, [r0, -r4]010005e0 <InitTaskRdyPtrToNULL>: 10005e0:	e1a0c00d 	mov	r12, sp 10005e4:	e92dd800 	stmdb	sp!, {r11, r12, lr, pc} 10005e8:	e24cb004 	sub	r11, r12, #4	; 0x4}
/*
why in this is error??
void InitTaskRdy(void)
{
    ptrTaskRdy[0]=&Proc[0]; //idle1
    //ptrServerRdy=&Proc[1];    //idle2
    //ptrProcRdy= &Proc[2];     //idle3
    //ptrCurrProc= &(Proc[1]);
}
*/
/*************************************************
**Function:开机启动把进程表初始化
**
*************************************************/
void InitTaskRdyPtrToNULL(void)
{
    int i;
    for(i=0;i<N_TASK_PRIO;i++)
 10005ec:	e59f3028 	ldr	r3, [pc, #28]	; 100061c <InitTaskRdyPtrToNULL+0x3c> 10005f0:	e3a01000 	mov	r1, #0	; 0x0 10005f4:	e283201c 	add	r2, r3, #28	; 0x1c    {
        ptrTaskRdy[i]=NULL;
 10005f8:	e4021004 	str	r1, [r2], -#4 10005fc:	e1520003 	cmp	r2, r3 1000600:	aafffffc 	bge	10005f8 <InitTaskRdyPtrToNULL+0x18>    }
    ptrServerRdy=NULL;

⌨️ 快捷键说明

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