📄 mem_task.lst
字号:
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 1
C51 COMPILER V6.20c, COMPILATION OF MODULE MEM_TASK
OBJECT MODULE PLACED IN ..\obj\mem_task.obj
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE ..\src\mem\mem_task.c BROWSE INCDIR(..\src\system;..\..\..\lib) DEFINE(KEIL
-) DEBUG OBJECTEXTEND PRINT(.\mem_task.lst) OBJECT(..\obj\mem_task.obj)
stmt level source
1 /*C**************************************************************************
2 * $RCSfile: mem_task.c,v $
3 *----------------------------------------------------------------------------
4 * Copyright (c) 2002 Atmel.
5 *----------------------------------------------------------------------------
6 * RELEASE: $Name: DEMO_FAT_1_2_5 $
7 * REVISION: $Revision: 1.8 $
8 * FILE_CVSID: $Id: mem_task.c,v 1.8 2002/06/07 15:46:17 ffosse Exp $
9 *----------------------------------------------------------------------------
10 * PURPOSE:
11 * This file contains the memory task and attached routines
12 *
13 * NOTES:
14 * Global Variables:
15 * - gl_memory: bit in bdata space
16 * - gl_mem_tick: byte in data space
17 *****************************************************************************/
18
19 /*_____ I N C L U D E S ____________________________________________________*/
20
21 #include "config.h" /* system configuration */
22 #include "..\display\disp.h" /* display definition */
23 #include "..\file\file.h" /* file definition */
24 #include "..\..\..\..\lib_mem\df\df.h" /* dataflash definition */
25 #include "..\..\..\..\lib_mem\mmc\mmc.h" /* mmc definition */
26 #include "mem_task.h" /* memory task definition */
27
28
29 /*_____ M A C R O S ________________________________________________________*/
30
31
32 /*_____ D E F I N I T I O N ________________________________________________*/
33
34 extern bdata bit gl_memory; /* selected memory */
35 extern data Byte gl_mem_tick; /* memory tick counter */
36
37 static Byte mem_state; /* task state */
38 static bit mem_force_mmc;
39
40 /*_____ D E C L A R A T I O N ______________________________________________*/
41
42
43
44 /*F**************************************************************************
45 * NAME: mem_task_init
46 *----------------------------------------------------------------------------
47 * PARAMS:
48 *
49 * return:
50 *----------------------------------------------------------------------------
51 * PURPOSE:
52 * Memory task initialization
53 *----------------------------------------------------------------------------
54 * EXAMPLE:
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 2
55 *----------------------------------------------------------------------------
56 * NOTE:
57 *----------------------------------------------------------------------------
58 * REQUIREMENTS:
59 *****************************************************************************/
60 void mem_task_init (void)
61 {
62 1 gl_memory = MEM_DF; /* select on-board memory */
63 1 mem_state = MEM_INIT;
64 1 mem_force_mmc = FALSE;
65 1 }
66
67
68 /*F**************************************************************************
69 * NAME: mem_task
70 *----------------------------------------------------------------------------
71 * PARAMS:
72 *
73 * return:
74 *----------------------------------------------------------------------------
75 * PURPOSE:
76 * Memory management task
77 *----------------------------------------------------------------------------
78 * EXAMPLE:
79 *----------------------------------------------------------------------------
80 * NOTE:
81 * STATES:
82 * MEM_DF_INIT DF memory selection
83 * MEM_DF_IDLE DF memory is selected
84 * MEM_MMC1_ACQ MMC1 card acquisition
85 * MEM_MMC1_SETUP MMC1 card setup
86 * MEM_MMC1_IDLE MMC1 card selected
87 * MEM_MMC2_ACQ MMC2 card acquisition
88 * MEM_MMC2_SETUP MMC2 card setup
89 * MEM_MMC2_IDLE MMC2 card selected
90 * MEM_MMC1_ERROR MMC1 card error
91 * MEM_MMC2_ERROR MMC2 card error
92 * MEM_DF_ERR_FMT DF not formated
93 * MEM_MMC1_ERR_FMT MMC1 card not formated
94 * MEM_MMC2_ERR_FMT MMC2 card not formated
95 *----------------------------------------------------------------------------
96 * REQUIREMENTS:
97 *****************************************************************************/
98 void mem_task (void)
99 {
100 1 Byte func_state;
101 1
102 1 switch (mem_state)
103 1 {
104 2 case MEM_INIT:
105 2 {
106 3 mmc_init(); /* memory initialization */
107 3 if ((mem_state = df_init()) != 0) /* memory initialization */
108 3 {
109 4 print_screen(FATAL_DF_SCREEN);
110 4 print_decim(mem_state, TRUE); /* display faulty DF number */
111 4 while (1); /* stop if bad memory */
112 4 }
113 3 mem_state = MEM_DF_INIT;
114 3 break;
115 3 }
116 2
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 3
117 2 case MEM_DF_INIT:
118 2 {
119 3 Mmc_disable();
120 3 df_init_mem();
121 3 gl_memory = MEM_DF; /* select on-board memory */
122 3 print_mem(SYMB_DF); /* print on-board symbol */
123 3 if (File_mount() == OK) /* mount file system */
124 3 {
125 4 mem_state = MEM_DF_IDLE;
126 4 }
127 3 else
128 3 {
129 4 mem_state = MEM_DF_ERR_FMT; /* memory not formatted */
130 4 }
131 3 break;
132 3 }
133 2
134 2 case MEM_DF_IDLE:
135 2 {
136 3 break;
137 3 }
138 2
139 2 case MEM_MMC1_INIT:
140 2 {
141 3 /* reset card stack */
142 3 mmc_init_stack();
143 3 gl_memory = MEM_MMC;
144 3 mem_state = MEM_MMC1_ACQ;
145 3 gl_mem_tick = MEM_FUNCT_TIME; /* init delay timer */
146 3 break;
147 3 }
148 2
149 2 case MEM_MMC1_ACQ:
150 2 {
151 3 if (gl_mem_tick >= MEM_DELAY_TIME)
152 3 {
153 4 /* send operating conditions */
154 4 func_state = mmc_single_acq();
155 4 if (func_state == MMC_ERROR)
156 4 {
157 5 mem_state = MEM_MMC1_ERROR;
158 5 }
159 4 else
160 4 {
161 5 if (func_state == MMC_END) /* end of execution */
162 5 { /* MMC1 CSD is available now */
163 6 if (!mmc_init_csd()) /* init & check card validity */
164 6 {
165 7 mem_state = MEM_MMC1_ERROR;
166 7 }
167 6 else
168 6 {
169 7 mem_state = MEM_MMC1_SETUP;
170 7 }
171 6 }
172 5 gl_mem_tick = MEM_FUNCT_TIME; /* init delay timer */
173 5 }
174 4 }
175 3 break;
176 3 }
177 2
178 2 case MEM_MMC1_SETUP:
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 4
179 2 {
180 3 if (gl_mem_tick >= MEM_DELAY_TIME)
181 3 { /* go to transfer state */
182 4 func_state = mmc_setup_card(MMC_CARD1);
183 4 if (func_state == MMC_ERROR)
184 4 {
185 5 mem_state = MEM_MMC1_ERROR;
186 5 }
187 4 else
188 4 {
189 5 if (func_state == MMC_END) /* end of execution */
190 5 {
191 6 gl_memory = MEM_MMC;
192 6 if (File_mount() == OK) /* mount file system */
193 6 {
194 7 mem_state = MEM_MMC1_IDLE;
195 7 }
196 6 else
197 6 {
198 7 mem_state = MEM_MMC1_ERR_FMT; /* card not formatted */
199 7 }
200 6 print_mem(SYMB_MMC1); /* print MMC1 symbol */
201 6 }
202 5 gl_mem_tick = MEM_FUNCT_TIME; /* init delay timer */
203 5 }
204 4 }
205 3 break;
206 3 }
207 2
208 2 case MEM_MMC1_IDLE:
209 2 {
210 3 break;
211 3 }
212 2
213 2 case MEM_MMC2_STACK_INIT:
214 2 {
215 3 /* reset card stack */
216 3 mmc_init_stack();
217 3 gl_memory = MEM_MMC;
218 3 mem_state = MEM_MMC2_MMC1_ACQ;
219 3 gl_mem_tick = MEM_FUNCT_TIME; /* init delay timer */
220 3 break;
221 3 }
222 2
223 2 case MEM_MMC2_MMC1_ACQ:
224 2 {
225 3 if (gl_mem_tick >= MEM_DELAY_TIME)
226 3 {
227 4 /* send operating conditions */
228 4 func_state = mmc_single_acq();
229 4 if (func_state == MMC_ERROR)
230 4 {
231 5 mem_state = MEM_MMC2_ERROR;
232 5 }
233 4 else
234 4 {
235 5 if (func_state == MMC_END) /* end of execution */
236 5 {
237 6 mem_state = MEM_MMC2_MMC1_SETUP;
238 6 }
239 5 gl_mem_tick = MEM_FUNCT_TIME; /* init delay timer */
240 5 }
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 5
241 4 }
242 3 break;
243 3 }
244 2
245 2 case MEM_MMC2_MMC1_SETUP:
246 2 {
247 3 if (gl_mem_tick >= MEM_DELAY_TIME)
248 3 {
249 4 func_state = mmc_setup_card(MMC_CARD1);
250 4 if (func_state == MMC_ERROR)
251 4 {
252 5 mem_state = MEM_MMC2_ERROR;
253 5 }
254 4 else
255 4 {
256 5 if (func_state == MMC_END) /* end of execution */
257 5 {
258 6 mem_state = MEM_MMC2_ACQ;
259 6 }
260 5 gl_mem_tick = MEM_FUNCT_TIME; /* init delay timer */
261 5 }
262 4 }
263 3 break;
264 3 }
265 2
266 2 case MEM_MMC2_INIT:
267 2 {
268 3 mmc_init_next(); /* new acquisition */
269 3 mem_state = MEM_MMC2_ACQ;
270 3 gl_mem_tick = MEM_FUNCT_TIME; /* init delay timer */
271 3 break;
272 3 }
273 2
274 2 case MEM_MMC2_ACQ:
275 2 {
276 3 if (gl_mem_tick >= MEM_DELAY_TIME)
277 3 {
278 4 /* send operating conditions */
279 4 func_state = mmc_update_acq();
280 4 if (func_state == MMC_ERROR)
281 4 {
282 5 mem_state = MEM_MMC2_ERROR;
283 5 }
284 4 else
285 4 {
286 5 if (func_state == MMC_END) /* end of execution */
287 5 { /* MMC2 CSD is available now */
288 6 if (!mmc_init_csd()) /* init & check card validity */
289 6 {
290 7 mem_state = MEM_MMC2_ERROR;
291 7 }
292 6 else
293 6 {
294 7 mem_state = MEM_MMC2_SETUP;
295 7 }
296 6 }
297 5 gl_mem_tick = MEM_FUNCT_TIME; /* init delay timer */
298 5 }
299 4 }
300 3 break;
301 3 }
302 2
C51 COMPILER V6.20c MEM_TASK 07/10/2002 15:17:40 PAGE 6
303 2 case MEM_MMC2_SETUP:
304 2 {
305 3 if (gl_mem_tick >= MEM_DELAY_TIME)
306 3 { /* go to transfer state */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -