📄 mem_task.lst
字号:
C51 COMPILER V7.50 MEM_TASK 09/20/2005 21:47:43 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MEM_TASK
OBJECT MODULE PLACED IN mem_task.obj
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE modules\mem\mem_task.c OPTIMIZE(7,SPEED) BROWSE INCDIR(.\modules\system;.\;
-.\;.\lib_refd) DEFINE(KEIL) DEBUG OBJECTEXTEND PRINT(.\mem_task.lst) OBJECT(mem_task.obj)
line level source
1 /*C**************************************************************************
2 * NAME: mem_task.c
3 *----------------------------------------------------------------------------
4 * Copyright (c) 2003 Atmel.
5 *----------------------------------------------------------------------------
6 * RELEASE: snd1c-refd-nf-4_0_3
7 * REVISION: 1.23
8 *----------------------------------------------------------------------------
9 * PURPOSE:
10 * This file contains the memory task and attached routines
11 *
12 * NOTES:
13 * Global Variables:
14 * - gl_memory: bit in bdata space
15 * - gl_mem_tick: byte in data space
16 *****************************************************************************/
17
18 /*_____ I N C L U D E S ____________________________________________________*/
19
20 #include "config.h" /* system configuration */
21 #include "modules\display\disp.h" /* display definition */
22 #include "modules\file\file.h" /* file definition */
23 #include "hard.h" /* low level function definition */
24 #include "mem_task.h" /* memory task definition */
25
26 /*_____ M A C R O S ________________________________________________________*/
27
28
29 /*_____ D E F I N I T I O N ________________________________________________*/
30
31 extern bdata bit gl_memory; /* selected memory */
32 extern bdata bit fs_memory; /* selected file system */
33 extern data Byte gl_mem_tick; /* memory tick counter */
34
35 Byte mem_state; /* task state */
36 static bit mem_force_mmc;
37
38 /*_____ D E C L A R A T I O N ______________________________________________*/
39
40
41
42 /*F**************************************************************************
43 * NAME: mem_task_init
44 *----------------------------------------------------------------------------
45 * PARAMS:
46 *
47 * return:
48 *----------------------------------------------------------------------------
49 * PURPOSE:
50 * Memory task initialization
51 *----------------------------------------------------------------------------
52 * EXAMPLE:
53 *----------------------------------------------------------------------------
54 * NOTE:
C51 COMPILER V7.50 MEM_TASK 09/20/2005 21:47:43 PAGE 2
55 *----------------------------------------------------------------------------
56 * REQUIREMENTS:
57 *****************************************************************************/
58 void mem_task_init (void)
59 {
60 1 mem_state = MEM_INIT;
61 1 mem_force_mmc = FALSE;
62 1 #if MEM_CHIP_TYPE != CHIP_NONE
63 1 gl_memory = MEM_CHIP; /* select on-board memory */
64 1 #else
gl_memory = MEM_CARD; /* select card memory */
#endif
67 1 #if (MEM_CARD_TYPE != CARD_NONE) && (CARD_SOCKET_NB == 2)
if (Card_get_socket() == MEM_CARD_2)
{
Card_select_next();
}
#endif
73 1 }
74
75
76 /*F**************************************************************************
77 * NAME: mem_task
78 *----------------------------------------------------------------------------
79 * PARAMS:
80 *
81 * return:
82 *----------------------------------------------------------------------------
83 * PURPOSE:
84 * Memory management task
85 *----------------------------------------------------------------------------
86 * EXAMPLE:
87 *----------------------------------------------------------------------------
88 * NOTE:
89 * STATES:
90 * MEM_INIT memories initialization
91 * MEM_CHIP_INIT on-chip memory selection
92 * MEM_CHIP_IDLE on-chip memory is selected
93 * MEM_CHIP_ERR_FMT on-chip memory not formated
94 * MEM_CARD_INIT card initialization
95 * MEM_CARD_IDLE card selected
96 * MEM_CARD_ERR card error
97 * MEM_CARD_ERR_FMT card not formated
98 * MEM_CARD_NO_CARD no card insert
99 *----------------------------------------------------------------------------
100 * REQUIREMENTS:
101 *****************************************************************************/
102 void mem_task (void)
103 {
104 1 Byte state;
105 1
106 1 switch (mem_state)
107 1 {
108 2 case MEM_INIT:
109 2 {
110 3 #if MEM_CHIP_TYPE != CHIP_NONE /* if chip defined */
111 3 if (Hard_chip_init() == OK) /* if init chip OK */
112 3 {
113 4 mem_state = MEM_CHIP_INIT; /* install chip */
114 4 }
115 3 #if MEM_CARD_TYPE != CARD_NONE /* if card defined */
if (Hard_card_init() == KO) /* init card */
C51 COMPILER V7.50 MEM_TASK 09/20/2005 21:47:43 PAGE 3
{
if (mem_state == MEM_INIT) /* if chip and card init failed */
{
print_screen(FATAL_CHIP_SCREEN); /* fatal error */
while(1);
}
}
else
{
if (mem_state == MEM_INIT)
{
mem_state = MEM_CARD_INIT; /* install card */
}
}
#else
132 3 if (mem_state == MEM_INIT) /* if chip init failed and no card defined */
133 3 {
134 4 print_screen(FATAL_CHIP_SCREEN); /* fatal error */
135 4 while(1);
136 4 }
137 3 #endif
138 3 #else
if (Hard_card_init() == OK) /* init card */
{
mem_state = MEM_CARD_INIT;
}
#endif
144 3 break;
145 3 }
146 2
147 2 case MEM_CHIP_INIT:
148 2 {
149 3 #if (MEM_CHIP_TYPE == CHIP_NONE)
mem_state = MEM_CARD_INIT;
break;
#else
153 3 Hard_card_uninstall();
154 3 state = Hard_chip_install();
155 3 if (state == MEM_OK)
156 3 {
157 4 gl_memory = MEM_CHIP; /* select on-board memory */
158 4 print_mem(SYMB_CHIP); /* print on-board symbol */
159 4 #if (MEM_CHIP_FS == FS_FAT_32) || (MEM_CHIP_FS == FS_FAT_12_16)
160 4 fs_memory = FS_MEM_FAT;
161 4 #else
fs_memory = FS_MEM_ISO;
#endif
164 4 if (File_mount() == OK) /* mount file system */
165 4 {
166 5 mem_state = MEM_CHIP_IDLE;
167 5 }
168 4 else
169 4 {
170 5 mem_state = MEM_CHIP_ERR_FMT; /* memory not formatted */
171 5 }
172 4 }
173 3 break;
174 3 #endif
175 3 }
176 2
177 2 case MEM_CHIP_IDLE:
178 2 {
C51 COMPILER V7.50 MEM_TASK 09/20/2005 21:47:43 PAGE 4
179 3 break;
180 3 }
181 2
182 2 case MEM_CHIP_ERR_FMT:
183 2 {
184 3 break;
185 3 }
186 2
187 2 case MEM_CARD_INIT:
188 2 {
189 3 #if (MEM_CARD_TYPE == CARD_NONE)
190 3 mem_state = MEM_CHIP_INIT;
191 3 break;
192 3 #else
state = Hard_card_install(); /* get state of card install */
if (state == MEM_OK) /* if card installation OK */
{
if (Card_check_presence() == OK) /* always check if a card is present */
{
gl_memory = MEM_CARD; /* select card for interface */
#if CARD_SOCKET_NB == 2 /* if project define two card sockets */
if (Card_get_socket() == MEM_CARD_1)
{
print_mem(SYMB_CARD1); /* print CARD1 symbol */
}
else
{
print_mem(SYMB_CARD2); /* print CARD2 symbol */
}
#else /* if project define only one socket */
print_mem(SYMB_CARD); /* print CARD symbol */
#endif
#if (MEM_CARD_FS == FS_FAT_32) || (MEM_CARD_FS == FS_FAT_12_16)
fs_memory = FS_MEM_FAT;
#else
fs_memory = FS_MEM_ISO;
#endif
if (File_mount() == OK) /* Install file system */
{
mem_state = MEM_CARD_IDLE;/* if fs OK set card as idle */
}
else
{
mem_state = MEM_CARD_ERR_FMT;/* fs is not OK */
}
}
else
{
mem_state = MEM_CARD_NO_CARD; /* no card in socket */
}
}
else
{
if (state == MEM_KO)
{
#if CARD_SOCKET_NB == 2 /* if 2 card sources defines */
if (Card_get_socket() == MEM_CARD_2)
{
mem_state = MEM_CHIP_INIT; /* 2nd card socket -> select on board memory */
}
C51 COMPILER V7.50 MEM_TASK 09/20/2005 21:47:43 PAGE 5
Card_select_next(); /* select next card source */
#else
#if MEM_CHIP_TYPE != CHIP_NONE
mem_state = MEM_CHIP_INIT; /* select on board memory */
#else
mem_state = MEM_CARD_NO_CARD;
#endif
#endif
}
}
break;
#endif
253 3 }
254 2
255 2 case MEM_CARD_IDLE:
256 2 {
257 3 break;
258 3 }
259 2
260 2 case MEM_CARD_ERR:
261 2 {
262 3 #if (MEM_CARD_TYPE != CARD_NONE)
#if (CARD_SOCKET_NB == 2) /* if 2x card socket */
if (mem_force_mmc)
{
mem_state = MEM_CARD_INIT;
}
else
{
Hard_card_uninstall();
if (Card_get_socket() == MEM_CARD_1)
{
mem_state = MEM_CARD_INIT;
}
else
{
mem_state = MEM_CHIP_INIT;
}
Card_select_next();
}
#endif
#endif
283 3
284 3 break;
285 3 }
286 2
287 2 case MEM_CARD_ERR_FMT:
288 2 {
289 3 break;
290 3 }
291 2
292 2 case MEM_CARD_NO_CARD: /* medium is not present or tray (CDR) is open */
293 2 {
294 3 #if (MEM_CARD_TYPE != CARD_NONE)
if (Card_check_presence() == OK) /* if we detect a medium */
mem_state = MEM_CARD_INIT; /* init this medium */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -