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

📄 sosos.lst

📁 基于AVR平台的RTOS
💻 LST
📖 第 1 页 / 共 5 页
字号:
 210:sosos.c       ****      if((mutex->INHERIT_PRI)>SOSOS_RUNNING_TASK_PRI){
 614               	0
 615               		rjmp .L61
 617 0242 6281      	.LM77:
 618 0244 A616      		mov r6,r22
 211:sosos.c       ****        break;
 212:sosos.c       ****        }
 213:sosos.c       ****      else{
 214:sosos.c       ****        if(test_1(SOSOS_TASK_READY[mutex->OWN_TASK_PRI],mutex->OWN_TASK_ID)){
 620               	
 621               		mov r10,r21
 623 024a E52F      	.LM79:
 624 024c FF27      		mov r11,r20
 626 0250 F040      	.LM80:
 627 0252 8081      		movw r24,r28
 628 0254 9927      		rjmp 2f
 629 0256 FD01      	1:	lsl r24
 630 0258 4481      		rol r25
 631 025a 242F      	2:	dec r18
 632 025c 3327      		brpl 1b
 633 025e 022E      		mov r12,r24
 634 0260 00C0      	.L61:
 636 0264 8795      	.LM81:
 637 0266 0A94      		ld r24,X+
 638 0268 02F4      		ld r25,X
 640 026c 00C0      	.LM82:
 215:sosos.c       ****          SOSOS_RUNNING_INHERIT_PRI=mutex->INHERIT_PRI;
 641               	58
 643 026e 662E      	.LM83:
 216:sosos.c       ****          SOSOS_RUNNING_TASK_PRI=mutex->OWN_TASK_PRI;
 644               	vw r26,r24
 645               		rjmp .L59
 646 0270 A52E      	.L58:
 217:sosos.c       ****          SOSOS_RUNNING_TASK_ID=mutex->OWN_TASK_ID;
 647               	E2:
 649 0272 B42E      	.LM84:
 218:sosos.c       ****          SOSOS_RUNNING_TASK_ID_INDEX=1<<SOSOS_RUNNING_TASK_ID;
 650               	v r30,r10
 651               		clr r31
 652 0274 CE01      		lsl r30
 653 0276 00C0      		rol r31
 654 0278 880F      		add r30,r11
 655 027a 991F      		adc r31,__zero_reg__
 656 027c 2A95      		movw r24,r30
 657 027e 02F4      		ldi r22,3
 658 0280 C82E      	1:	lsl r24
 659               		rol r25
 219:sosos.c       ****          }
 220:sosos.c       ****        }
 221:sosos.c       ****      mutex=(SOSOS_MUTEX *)(mutex->NEXT_MUTEX);
 660               	brne 1b
 661               		lsl r30
 662 0282 8D91      		rol r31
 663 0284 9C91      		add r30,r24
 664               		adc r31,r25
 665               		subi r30,lo8(-(TCB))
 666 0286 0097      		sbci r31,hi8(-(TCB))
 667 0288 01F0      		ld r24,Z
 668               		ldd r25,Z+1
 669               		out (93)+1-0x20,r25
 670 028a DC01      		out 93-0x20,r24
 672               	.LM85:
 673               	/* #APP */
 222:sosos.c       ****      }
 223:sosos.c       ****    }//互斥型信号量队列有成员
 224:sosos.c       **** #endif
 225:sosos.c       ****   SP=TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STACK_POINT;//切
 674               	OP R28 
 675               		
 676 028e EA2D      		POP R31 
 677 0290 FF27      		
 678 0292 EE0F      		POP R30 
 679 0294 FF1F      		
 680 0296 EB0D      		POP R27 
 681 0298 F11D      		
 682 029a CF01      		POP R26 
 683 029c 63E0      		
 684 029e 880F      		POP R25 
 685 02a0 991F      		
 686 02a2 6A95      		POP R24 
 687 02a4 01F4      		
 688 02a6 EE0F      		POP R23 
 689 02a8 FF1F      		
 690 02aa E80F      		POP R22 
 691 02ac F91F      		
 692 02ae E050      		POP R21 
 693 02b0 F040      		
 694 02b2 8081      		POP R20 
 695 02b4 9181      		
 696 02b6 9EBF      		POP R19 
 697 02b8 8DBF      		
 226:sosos.c       **** //寄存器出栈
 227:sosos.c       ****   SOSOS_POP_REGISTER();
 698               		OUT __SREG__,R16 
 699               		
 700               		POP R16 
 701 02ba DF91      		
 702               		POP __tmp_reg__ 
 703 02bc CF91      		
 704               		POP __zero_reg__ 
 705 02be FF91      		
 707 02c0 EF91      	.LM86:
 708               		RET 
 709 02c2 BF91      		
 710               	/* #NOAPP */
 711 02c4 AF91      	/* epilogue: frame size=0 */
 712               	/* epilogue: naked */
 713 02c6 9F91      	/* epilogue end (size=0) */
 714               	/* function SososSched size 227 (227) */
 724               	.Lscope4:
 726               	.global	SososScheder
 728               	SososScheder:
 730               	.LM87:
 731 02d8 0FBF      	/* prologue: frame size=0 */
 732               	/* prologue: naked */
 733 02da 0F91      	/* prologue end (size=0) */
 735 02dc 0F90      	.LM88:
 736               	/* #APP */
 737 02de 1F90      		PUSH __zero_reg__ 
 738               		
 228:sosos.c       ****   __asm__ __volatile__("RET \n\t");
 739               	,__SREG__ 
 740               		
 741 02e0 0895      		PUSH R16 
 742               		
 743               		EOR __zero_reg__,__zero_reg__ 
 744               		
 745               		PUSH R18 
 746               		
 747               		PUSH R19 
 748               		
 749               		PUSH R20 
 750               		
 751               		PUSH R21 
 752               		
 753               		PUSH R22 
 754               		
 755               		PUSH R23 
 756               		
 757               		PUSH R24 
 758               		
 759               		PUSH R25 
 760               		
 761               		PUSH R26 
 229:sosos.c       **** }
 230:sosos.c       **** #endif
 231:sosos.c       **** 
 232:sosos.c       **** #if SOSOS_TASK_ENALBE == 1
 233:sosos.c       **** void SososScheder(void) __attribute__ ((naked));//任务调度器
 234:sosos.c       **** void SososScheder(void)//任务调度器
 235:sosos.c       **** //本函数只在系统内部使用,进入时中断是关闭的
 236:sosos.c       **** {
 762               	0 
 763               		
 764               		PUSH R31 
 765               		
 766               		PUSH R28 
 237:sosos.c       **** //寄存器入栈
 238:sosos.c       ****   SOSOS_PUSH_REGISTER();
 767               	SH R29 
 768               		
 770 02e2 1F92      	.LM89:
 771               	/* #NOAPP */
 772 02e4 0F92      		in r24,93-0x20
 773               		in r25,(93)+1-0x20
 774 02e6 0F93      		mov r30,r10
 775               		clr r31
 776 02e8 0FB7      		lsl r30
 777               		rol r31
 778 02ea 0F93      		add r30,r11
 779               		adc r31,__zero_reg__
 780 02ec 1124      		movw r18,r30
 781               		ldi r27,3
 782 02ee 2F93      	1:	lsl r18
 783               		rol r19
 784 02f0 3F93      		dec r27
 785               		brne 1b
 786 02f2 4F93      		lsl r30
 787               		rol r31
 788 02f4 5F93      		add r30,r18
 789               		adc r31,r19
 790 02f6 6F93      		subi r30,lo8(-(TCB))
 791               		sbci r31,hi8(-(TCB))
 792 02f8 7F93      		std Z+1,r25
 793               		st Z,r24
 795               	.LM90:
 796 02fc 9F93      		rcall SososSched
 797               	/* epilogue: frame size=0 */
 798 02fe AF93      	/* epilogue: naked */
 799               	/* epilogue end (size=0) */
 800 0300 BF93      	/* function SososScheder size 103 (103) */
 802 0302 EF93      	.Lscope5:
 804 0304 FF93      	.global	__vector_9
 806 0306 CF93      	__vector_9:
 808 0308 DF93      	.LM91:
 809               	/* prologue: frame size=0 */
 239:sosos.c       **** 
 240:sosos.c       ****   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STACK_POINT=SP;//保
 810               	=0) */
 812               	.LM92:
 813 030a 8DB7      	/* #APP */
 814 030c 9EB7      		PUSH __zero_reg__ 
 815 030e EA2D      		
 816 0310 FF27      		PUSH __tmp_reg__ 
 817 0312 EE0F      		
 818 0314 FF1F      		PUSH R16 
 819 0316 EB0D      		
 820 0318 F11D      		IN R16,__SREG__ 
 821 031a 9F01      		
 822 031c B3E0      		PUSH R16 
 823 031e 220F      		
 824 0320 331F      		EOR __zero_reg__,__zero_reg__ 
 825 0322 BA95      		
 826 0324 01F4      		PUSH R18 
 827 0326 EE0F      		
 828 0328 FF1F      		PUSH R19 
 829 032a E20F      		
 830 032c F31F      		PUSH R20 
 831 032e E050      		
 832 0330 F040      		PUSH R21 
 833 0332 9183      		
 834 0334 8083      		PUSH R22 
 241:sosos.c       ****   SososSched();
 835               	
 836               		
 837 0336 00D0      		PUSH R25 
 838               		
 839               		PUSH R26 
 840               		
 841               		PUSH R27 
 842               		
 843               		PUSH R30 
 844               		
 845               		PUSH R31 
 846               		
 847               		PUSH R28 
 242:sosos.c       **** 
 243:sosos.c       **** }
 244:sosos.c       **** #endif
 245:sosos.c       **** 
 246:sosos.c       **** #if SOSOS_TASK_ENALBE == 1
 247:sosos.c       **** SOSOS_ISR(SIG_OVERFLOW0)//定时器0溢出中断处理
 248:sosos.c       **** //提供系统的时间基准,中间开了下中断,以允许响应其他中断
 249:sosos.c       **** {
 848               	
 849               		
 850               	/* #NOAPP */
 851               		tst r13
 852               		brne .L72
 250:sosos.c       **** //进入中断
 251:sosos.c       ****  SOSOS_ENTER_INTERRUPT();
 853               	abn	68,0,251,.LM93-__vector_9
 854               	.LM93:
 855               		sbrc r17,1
 856 0338 1F92      		rjmp .L74
 857               		in r24,93-0x20
 858 033a 0F92      		in r25,(93)+1-0x20
 859               		mov r30,r10
 860 033c 0F93      		clr r31
 861               		lsl r30
 862 033e 0FB7      		rol r31
 863               		add r30,r11
 864 0340 0F93      		adc r31,__zero_reg__
 865               		movw r18,r30
 866 0342 1124      		lsl r18
 867               		rol r19
 868 0344 2F93      		lsl r18
 869               		rol r19
 870 0346 3F93      		lsl r18
 871               		rol r19
 872 0348 4F93      		lsl r30
 873               		rol r31
 874 034a 5F93      		add r30,r18
 875               		adc r31,r19
 876 034c 6F93      		subi r30,lo8(-(TCB))
 877               		sbci r31,hi8(-(TCB))
 878 034e 7F93      		std Z+1,r25
 879               		st Z,r24
 880 0350 8F93      	.L74:
 881               	/* #APP */
 882 0352 9F93      		IN r30 ,__SP_L__ 
 883               		
 884 0354 AF93      		IN r31 ,__SP_H__ 
 885               		
 886 0356 BF93      		OUT __SP_L__,r14 
 887               		
 888 0358 EF93      		OUT __SP_H__,r15 
 889               		
 890 035a FF93      		PUSH R30 
 891               		
 892 035c CF93      		PUSH R31 
 893               		
 894 035e DF93      	/* #NOAPP */
 895               	.L72:
 896               		inc r13
 898 0362 01F4      	.LM94:
 899               		ldi r24,lo8(-39)
 900               		out 82-0x20,r24
 902 0366 00C0      	.LM95:
 903 0368 8DB7      		inc r7
 905 036c EA2D      	.LM96:
 906 036e FF27      	/* #APP */
 907 0370 EE0F      		SEI 
 908 0372 FF1F      		
 910 0376 F11D      	.LM97:
 911 0378 9F01      	/* #NOAPP */
 912 037a 220F      		rcall SososTimer0
 914 037e 220F      	.LM98:
 915 0380 331F      	/* #APP */
 916 0382 220F      		CLI 
 917 0384 331F      		
 918 0386 EE0F      	/* #NOAPP */
 919 0388 FF1F      		cpse r13,__zero_reg__
 920 038a E20F      		dec r13
 921 038c F31F      	.L76:
 922 038e E050      		tst r13
 923 0390 F040      		brne .L78
 924 0392 9183      	/* #APP */
 925 0394 8083      		POP R31 
 926               		
 927               		POP R30 
 928 0396 EDB7      		
 929               		OUT __SP_L__,r30 
 930 0398 FEB7      		
 931               		OUT __SP_H__,r31 
 932 039a EDBE      		
 933               	/* #NOAPP */
 934 039c FEBE      		sbrs r17,0
 935               		rjmp .L78
 936 039e EF93      		sbrs r17,1
 937               		rcall SososSched
 938 03a0 FF93      	.L78:

⌨️ 快捷键说明

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