?? os_cpu_c.lst
字號:
1 .file "OS_CPU_C.c"
2 .arch atmega16
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
124 .global pdata_end
125 .data
128 pdata_end:
129 0000 0000 .word __heap_start
130 .global Alarm
131 .global Alarm
132 .section .bss
135 Alarm:
136 0000 00 .skip 1,0
137 .global TaskFuction
138 .data
141 TaskFuction:
142 0002 0000 .word pm(task0)
143 0004 0000 .word pm(task1)
144 0006 0000 .word pm(task2)
145 0008 0000 .word pm(task3)
146 .text
148 .global OSIdle
150 OSIdle:
1:OS_CPU_C.c **** /**************************************************************************************************
2:OS_CPU_C.c **** **
3:OS_CPU_C.c **** **-------------------------------------------------------------------------------------------------
4:OS_CPU_C.c **** ***************************************************************************************************
5:OS_CPU_C.c **** #define IN_OS_CPU_C
6:OS_CPU_C.c **** #include "CONFIG.h"
7:OS_CPU_C.c ****
8:OS_CPU_C.c **** volatile uint8 Alarm=0;
9:OS_CPU_C.c ****
10:OS_CPU_C.c **** void* OSTaskStackBottom[OS_MAX_TASKS + 2]; /* 任務棧底位置 */
11:OS_CPU_C.c ****
12:OS_CPU_C.c ****
13:OS_CPU_C.c **** /**************************************************************************************************
14:OS_CPU_C.c **** ** 函數名稱: OSIdle
15:OS_CPU_C.c **** ** 功能描述: 優先級最低的任務
16:OS_CPU_C.c **** ** 輸 入: 無
17:OS_CPU_C.c **** ** 輸 出: 無
18:OS_CPU_C.c **** ** 全局變量: 無
19:OS_CPU_C.c **** ** 調用模塊: 無
20:OS_CPU_C.c **** **
21:OS_CPU_C.c **** ** 作 者: 徐寶田
22:OS_CPU_C.c **** ** 日 期: 2002年12月2日
23:OS_CPU_C.c **** **-------------------------------------------------------------------------------------------------
24:OS_CPU_C.c **** ** 修改人:
25:OS_CPU_C.c **** ** 日 期:
26:OS_CPU_C.c **** **-------------------------------------------------------------------------------------------------
27:OS_CPU_C.c **** ***************************************************************************************************
28:OS_CPU_C.c **** void OSIdle(void)
29:OS_CPU_C.c **** {
152 .LM1:
153 /* prologue: frame size=0 */
154 /* prologue end (size=0) */
155 .L2:
30:OS_CPU_C.c **** while(1)
157 .LM2:
158 0000 FFCF rjmp .L2
159 /* epilogue: frame size=0 */
160 /* epilogue: noreturn */
161 /* epilogue end (size=0) */
162 /* function OSIdle size 1 (1) */
164 .Lscope0:
166 .global OSInitHook
168 OSInitHook:
31:OS_CPU_C.c **** {
32:OS_CPU_C.c **** #if EN_OS_IDLE > 0 /* CPU進入休眠狀態 */
33:OS_CPU_C.c ****
34:OS_CPU_C.c **** #endif
35:OS_CPU_C.c **** }
36:OS_CPU_C.c **** }
37:OS_CPU_C.c ****
38:OS_CPU_C.c **** /**************************************************************************************************
39:OS_CPU_C.c **** ** 函數名稱: OSInitHook
40:OS_CPU_C.c **** ** 功能描述: 在開始多任務調度之前系統初始鉤掛函數
41:OS_CPU_C.c **** ** 輸 入: 無
42:OS_CPU_C.c **** ** 輸 出: 無
43:OS_CPU_C.c **** ** 全局變量: 無
44:OS_CPU_C.c **** ** 調用模塊: 無
45:OS_CPU_C.c **** **
46:OS_CPU_C.c **** ** 作 者: 徐寶田
47:OS_CPU_C.c **** ** 日 期: 2002年12月2日
48:OS_CPU_C.c **** **-------------------------------------------------------------------------------------------------
49:OS_CPU_C.c **** ** 修改人:
50:OS_CPU_C.c **** ** 日 期:
51:OS_CPU_C.c **** **-------------------------------------------------------------------------------------------------
52:OS_CPU_C.c **** ***************************************************************************************************
53:OS_CPU_C.c **** void OSInitHook(void)
54:OS_CPU_C.c **** {
170 .LM3:
171 /* prologue: frame size=0 */
172 /* prologue end (size=0) */
173 /* epilogue: frame size=0 */
174 0002 0895 ret
175 /* epilogue end (size=1) */
176 /* function OSInitHook size 1 (0) */
178 .Lscope1:
180 .global OSStart
182 OSStart:
55:OS_CPU_C.c **** //OSCCAL = 0xff ; //內部RC震蕩校正字
56:OS_CPU_C.c **** }
57:OS_CPU_C.c ****
58:OS_CPU_C.c **** /**************************************************************************************************
59:OS_CPU_C.c **** ** 函數名稱: OSStart
60:OS_CPU_C.c **** ** 功能描述: Small RTOS 初始化函數,調用此函數后多任務開始運行,首先執ID為0的任務
61:OS_CPU_C.c **** ** 輸 入: 無
62:OS_CPU_C.c **** ** 輸 出 : 無
63:OS_CPU_C.c **** ** 全局變量: OSTsakStackBotton,SP
64:OS_CPU_C.c **** ** 調用模塊: 無
65:OS_CPU_C.c **** **
66:OS_CPU_C.c **** ** 作 者: 徐寶田
67:OS_CPU_C.c **** ** 日 期: 2005年5月22日
68:OS_CPU_C.c **** **-------------------------------------------------------------------------------------------------
69:OS_CPU_C.c **** ** 修改人: 徐寶田
70:OS_CPU_C.c **** ** 日 期: 2002年6月2日
71:OS_CPU_C.c **** **-------------------------------------------------------------------------------------------------
72:OS_CPU_C.c **** ** 修改人: 徐寶田
73:OS_CPU_C.c **** ** 日 期: 2002年6月9日
74:OS_CPU_C.c **** **-------------------------------------------------------------------------------------------------
75:OS_CPU_C.c **** ** 修改人:
76:OS_CPU_C.c **** ** 日 期:
77:OS_CPU_C.c **** **-------------------------------------------------------------------------------------------------
78:OS_CPU_C.c **** ***************************************************************************************************
79:OS_CPU_C.c **** extern uint8 __heap_start; /* 連接器定義的堆起始 */
80:OS_CPU_C.c **** uint8 * pdata_end = &__heap_start;
81:OS_CPU_C.c ****
82:OS_CPU_C.c **** void OSStart(void)
83:OS_CPU_C.c **** {
184 .LM4:
185 /* prologue: frame size=0 */
186 0004 CF93 push r28
187 0006 DF93 push r29
188 /* prologue end (size=2) */
84:OS_CPU_C.c **** uint8 * cp = (uint8*)RAMEND;
190 .LM5:
191 0008 CFE5 ldi r28,lo8(1119)
192 000a D4E0 ldi r29,hi8(1119)
85:OS_CPU_C.c **** uint8 i,j;
86:OS_CPU_C.c ****
87:OS_CPU_C.c **** OSTaskStackBottom[0] = (void*)RAMEND;
194 .LM6:
195 000c D093 0000 sts (OSTaskStackBottom)+1,r29
196 0010 C093 0000 sts OSTaskStackBottom,r28
88:OS_CPU_C.c ****
89:OS_CPU_C.c **** /* 初始化優先級最高的任務堆棧,使返回地址為任務開始地址 */
90:OS_CPU_C.c **** *cp-- = ((uint8*)(&TaskFuction[0]))[HIGH_BYTE];
198 .LM7:
199 0014 8091 0000 lds r24,TaskFuction
200 0018 8093 5F04 sts 1119,r24
91:OS_CPU_C.c **** *cp-- = ((uint8*)(&TaskFuction[0]))[LOW_BYTE];
202 .LM8:
203 001c 8091 0000 lds r24,TaskFuction+1
204 0020 8093 5E04 sts 1118,r24
92:OS_CPU_C.c ****
93:OS_CPU_C.c **** cp = pdata_end ;
206 .LM9:
207 0024 C091 0000 lds r28,pdata_end
208 0028 D091 0000 lds r29,(pdata_end)+1
94:OS_CPU_C.c **** cp += 2 ;
210 .LM10:
211 002c 2296 adiw r28,2
95:OS_CPU_C.c **** /* 初始化優先級最低的任務堆棧 */
96:OS_CPU_C.c **** OSTaskStackBottom[OS_MAX_TASKS+1] = cp-1 ;
213 .LM11:
214 002e 2197 sbiw r28,1
215 0030 D093 0000 sts (OSTaskStackBottom+10)+1,r29
216 0034 C093 0000 sts OSTaskStackBottom+10,r28
217 0038 2196 adiw r28,1
97:OS_CPU_C.c ****
98:OS_CPU_C.c **** for(j=0;j<1;j++)
99:OS_CPU_C.c **** {
100:OS_CPU_C.c **** *cp++ = 0;
219 .LM12:
220 003a 1992 st Y+,__zero_reg__
101:OS_CPU_C.c **** }
102:OS_CPU_C.c ****
103:OS_CPU_C.c **** *cp++ = (uint8)((uint16)OSIdle/256) ;
222 .LM13:
223 003c 20E0 ldi r18,lo8(pm(OSIdle))
224 003e 30E0 ldi r19,hi8(pm(OSIdle))
225 0040 832F mov r24,r19
226 0042 9927 clr r25
227 0044 8993 st Y+,r24
104:OS_CPU_C.c **** OSTaskStackBottom[OS_MAX_TASKS] = cp;
229 .LM14:
230 0046 D093 0000 sts (OSTaskStackBottom+8)+1,r29
231 004a C093 0000 sts OSTaskStackBottom+8,r28
105:OS_CPU_C.c **** *cp++ = (uint8)(uint16)OSIdle ;
233 .LM15:
234 004e 2993 st Y+,r18
106:OS_CPU_C.c ****
107:OS_CPU_C.c **** /* 初始化其它優先級的任務堆棧 */
108:OS_CPU_C.c **** for(i = OS_MAX_TASKS - 1; i > 0; i--)
236 .LM16:
237 0050 93E0 ldi r25,lo8(3)
238 .L17:
109:OS_CPU_C.c **** {
110:OS_CPU_C.c **** OSTaskStackBottom[i] = cp;
240 .LM17:
241 0052 A92F mov r26,r25
242 0054 BB27 clr r27
243 0056 FD01 movw r30,r26
244 0058 EA0F add r30,r26
245 005a FB1F adc r31,r27
246 005c E050 subi r30,lo8(-(OSTaskStackBottom))
247 005e F040 sbci r31,hi8(-(OSTaskStackBottom))
248 0060 D183 std Z+1,r29
249 0062 C083 st Z,r28
250 0064 81E2 ldi r24,lo8(33)
251 .L16:
111:OS_CPU_C.c ****
112:OS_CPU_C.c **** for(j=0;j<34;j++)
113:OS_CPU_C.c **** {
114:OS_CPU_C.c **** *cp++ = 0;
253 .LM18:
254 0066 1992 st Y+,__zero_reg__
256 .LM19:
257 0068 8150 subi r24,lo8(-(-1))
258 006a 87FF sbrs r24,7
259 006c FCCF rjmp .L16
115:OS_CPU_C.c **** }
116:OS_CPU_C.c ****
117:OS_CPU_C.c **** *cp++ = ((uint8*)(&TaskFuction[i]))[LOW_BYTE];
261 .LM20:
262 006e AA0F add r26,r26
263 0070 BB1F adc r27,r27
264 0072 FD01 movw r30,r26
265 0074 E050 subi r30,lo8(-(TaskFuction+1))
266 0076 F040 sbci r31,hi8(-(TaskFuction+1))
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -