Changeset 359 for asp3_tinet_ecnl_rx/trunk/ntshell/fatfs/ffarch.c
- Timestamp:
- Jun 20, 2018, 7:59:22 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_tinet_ecnl_rx/trunk/ntshell/fatfs/ffarch.c
r337 r359 54 54 #include "mbed_api.h" 55 55 56 //extern ntstdio_t ntstdio; 56 extern ntstdio_t ntstdio; 57 58 enum ffarch_state_t { 59 FFS_IDLE, 60 FFS_RETRY_WAIT, 61 }; 62 63 enum ffarch_state_t ffarch_state; 64 volatile int ffarch_timer; 65 int ffarch_retry_count; 66 uint8_t mmc_rspi_prev_status; 67 68 static void ffarch_initialize(); 69 70 /* 71 * FatFSタスク 72 */ 73 void ffarch_task(intptr_t exinf) 74 { 75 ER ret, ret2; 76 SYSTIM prev, now; 77 int timer; 78 79 ffarch_initialize(); 80 81 ret2 = get_tim(&now); 82 if (ret2 != E_OK){ 83 ntstdio_printf(&ntstdio, "[ffarch] get_tim error: %s", 84 itron_strerror(ret2)); 85 return; 86 } 87 88 for(;;){ 89 prev = now; 90 91 /* タイマー取得 */ 92 timer = ffarch_get_timer(); 93 94 /* 待ち */ 95 ret = tslp_tsk(timer); 96 if ((ret != E_OK) && (ret != E_TMOUT)) { 97 ntstdio_printf(&ntstdio, "[ffarch] tslp_tsk error: %s %d", 98 itron_strerror(ret), timer); 99 break; 100 } 101 102 ret2 = get_tim(&now); 103 if (ret2 != E_OK) { 104 ntstdio_printf(&ntstdio, "[ffarch] get_tim error: %s", 105 itron_strerror(ret2)); 106 break; 107 } 108 109 /* 時間経過 */ 110 int elapse = now - prev; 111 ffarch_progress(elapse); 112 113 /* タイムアウト処理 */ 114 ffarch_timeout(); 115 } 116 } 57 117 58 118 FATFS RomDisk; … … 88 148 //sdfs_init(&sdfs, P8_5, P8_6, P8_3, P8_4, "sd"); 89 149 90 result = SD_begin() ? 0 : -1; 91 if (result == 0) { 92 printf("SD card (1:) OK!\n"); 150 ffarch_state = FFS_IDLE; 151 ffarch_timer = 0; 152 ffarch_retry_count = 3; 153 mmc_rspi_prev_status = STA_NODISK; 154 155 ffarch_timeout(); 156 157 act_tsk(FFARCH_TASK); 158 159 if (romdisk_init()) { 160 ntstdio_printf(&ntstdio, "ROM disk (0:) OK!\n"); 93 161 } 94 162 else { 95 printf("SD card (1:) NG!\n"); 96 } 163 ntstdio_printf(&ntstdio, "ROM disk (0:) NG!\n"); 164 } 165 166 serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV); 167 } 168 169 void ffarch_initialize() 170 { 97 171 sta_cyc(MMC_RSPI_CYC); 98 99 if (romdisk_init())100 result = 0;101 102 if (result == 0) {103 printf("ROM disk (0:) OK!\n");104 }105 else {106 printf("ROM disk (0:) NG!\n");107 }108 109 /* uploadディレクトリを作成しておく */110 f_mkdir("1:/upload");111 112 serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV);113 114 return result;115 172 } 116 173 … … 216 273 } 217 274 return RES_PARERR; 275 } 276 277 void mmc_rspi_status_changed(DSTATUS newst) 278 { 279 if (ffarch_state == FFS_IDLE) { 280 mmc_rspi_prev_status = mmc_rspi_status(); 281 ffarch_timer = 0; 282 wup_tsk(FFARCH_TASK); 283 } 284 } 285 286 int ffarch_get_timer() 287 { 288 return ffarch_timer; 289 } 290 291 void ffarch_progress(int elapse) 292 { 293 if (ffarch_timer != TMO_FEVR) { 294 ffarch_timer -= elapse; 295 if (ffarch_timer < 0) { 296 ffarch_timer = 0; 297 } 298 } 299 } 300 301 void ffarch_timeout() 302 { 303 if (ffarch_timer != 0) 304 return; 305 306 switch (ffarch_state) { 307 case FFS_RETRY_WAIT: 308 if (ffarch_retry_count == 0) { 309 ntstdio_printf(&ntstdio, "SD card (1:) initialize tired...\n"); 310 311 ffarch_state = FFS_IDLE; 312 ffarch_timer = TMO_FEVR; 313 ffarch_retry_count = 3; 314 break; 315 } 316 ffarch_retry_count--; 317 //goto case FFS_IDLE; 318 case FFS_IDLE: 319 /* SDカードが入れられた場合 */ 320 if (((mmc_rspi_prev_status & STA_NODISK) != 0) && ((mmc_rspi_status() & STA_NODISK) == 0)) { 321 ntstdio_printf(&ntstdio, "SD card initializing ...\n"); 322 323 Sd.FatFs.fs_type = 0; 324 if (SD_begin()) { 325 ntstdio_printf(&ntstdio, "SD card (1:) OK!\n"); 326 327 /* uploadディレクトリを作成しておく */ 328 f_mkdir("1:/upload"); 329 330 ffarch_state = FFS_IDLE; 331 ffarch_timer = TMO_FEVR; 332 ffarch_retry_count = 3; 333 } 334 else { 335 ntstdio_printf(&ntstdio, "SD card (1:) NG!\n"); 336 ffarch_state = FFS_RETRY_WAIT; 337 ffarch_timer = 1000 * 1000; 338 } 339 } 340 /* SDカードが抜かれた場合 */ 341 else if (((mmc_rspi_prev_status & STA_NODISK) == 0) && ((mmc_rspi_status() & STA_NODISK) != 0)) { 342 ntstdio_printf(&ntstdio, "SD card unmount\n"); 343 344 f_mount(&Sd.FatFs, "1:", 0); 345 ffarch_state = FFS_IDLE; 346 ffarch_timer = TMO_FEVR; 347 ffarch_retry_count = 3; 348 } 349 mmc_rspi_prev_status = mmc_rspi_status(); 350 break; 351 } 218 352 } 219 353
Note:
See TracChangeset
for help on using the changeset viewer.