/****************************************************************************** efsl Demo-Application for Philips LPC2138 ARM7TDMI-S Copyright (c) 2005 Martin Thomas, Kaiserslautern, Germany *****************************************************************************/ #include #include "lpc214x.h" #include "lpc_config.h" #include "uart.h" #include "startup.h" #include "efs.h" #include "ls.h" #include "mkfs.h" #include "interfaces/efsl_dbg_printf_arm.h" #define rprintf efsl_debug_printf_arm #define BAUD 115200 #define BIT(x) ((unsigned long)1<40MHz MAMTIM = MAM_FETCH; // c. enable MAM MAMCR = MAM_MODE; // --- set VPB speed --- VPBDIV = VPBDIV_VAL; // --- map INT-vector --- #if defined(RAM_RUN) MEMMAP = MEMMAP_USER_RAM_MODE; #elif defined(ROM_RUN) MEMMAP = MEMMAP_USER_FLASH_MODE; #else #error RUN_MODE not defined! #endif } */ static void gpioInit(void) { LEDSET = BIT(LED1PIN); // set Bit = LED off (active low) LEDDIR |= BIT(LED1PIN); // define LED-Pin as output } static void ledToggle(void) { static unsigned char state = 0; state = !state; if (state) LEDCLR = BIT(LED1PIN); // set Bit = LED on else LEDSET = BIT(LED1PIN); // set Bit = LED off (active low) } #if 0 static void hang(void) { while (1); } #endif /* */ EmbeddedFileSystem efs; EmbeddedFile filer, filew; DirList list; unsigned short e; unsigned char buf[513]; int main(void) { int ch; int8_t res; Initialize(); gpioInit(); uart0Init(UART_BAUD(BAUD), UART_8N1, UART_FIFO_8); // setup the UART uart0Puts("\r\nMMC/SD Card Filesystem Test (P:LPC2148 L:EFSL)\r\n"); /* init efsl debug-output */ efsl_debug_devopen_arm(uart0Putch); ledToggle(); rprintf("CARD init..."); if ((res = efs_init(&efs, 0)) != 0) { rprintf("failed with %i\n", res); } rprintf("Press Command: d r a \n"); while (1) { if ((ch = uart0Getch()) >= 0) { uart0Puts("You pressed : "); uart0Putch(ch); uart0Puts("\r\n"); if (ch == 'M') { rprintf("Creating FS\n"); fs_umount(&efs.myFs); mkfs_makevfat(&efs.myPart); } if (ch == 'd') { rprintf("Directory of 'root':\n"); ls_openDir(&list, &(efs.myFs), "/"); while (ls_getNext(&list) == 0) { list.currentEntry.FileName[LIST_MAXLENFILENAME - 1] = '\0'; rprintf("%s ( %li bytes )\n", list.currentEntry.FileName, list.currentEntry.FileSize); } } if (ch == 'r') { if (file_fopen(&filer, &efs.myFs, LogFileName, 'r') == 0) { rprintf("File %s open. Content:\n", LogFileName); while ((e = file_read(&filer, 512, buf)) != 0) { buf[e] = '\0'; uart0Puts((char *) buf); } rprintf("\n"); file_fclose(&filer); } } if (ch == 'a') { if (file_fopen(&filew, &efs.myFs, LogFileName, 'a') == 0) { rprintf("File %s open for append. Appending...", LogFileName); strcpy((char *) buf, "Append Dummy Data to File\r\n"); if (file_write(&filew, strlen((char *) buf), buf) == strlen((char *) buf)) { rprintf("ok\n\n"); } else { rprintf("fail\n\n"); } file_fclose(&filew); fs_umount(&efs.myFs); } } ledToggle(); } } return 0; /* never reached */ }