The purpose of this application is to allow easy manipulation of the QSPI file system from a PC

Dependencies:   EALib USBDevice mbed

The purpose of this application is to allow easy manipulation of the QSPI file system from a PC.

The application makes the LPC4088 QuickStart Board appear as a USB Memory Stick when connected to a PC. The PC will see the current content of the QSPI file system plus an image file of the file system that can be downloaded and (at a later time) be used to restore the file system to it's current state.

To use this application:

  1. Make sure that the QSPI file system has been formatted (using either the app_qspi_format application or one of the erase.* images).
  2. Download the app_qspifs_memstick application using drag-n-drop and then reset the board
  3. Optionally start a terminal program to read the status messages from the application
  4. Connect a USB cable to the micro USB slot on the back of the LPC4088 QuickStart Board, underneath the ethernet connector, and then to the PC
  5. The PC will install drivers if needed and then the USB Memory Stick will be available as a new drive
  6. Modify the file system to suit your needs
  7. With the USB cable still connected, press the button on the LPC4088 QuickStart Board
  8. The application will now:
    1. disconnect the USB Memory Stick
    2. write all changes to the QSPI flash memory
    3. create a new image file of the updated QSPI file system and store it in the .current/ folder
    4. connect the USB Memory Stick again
  9. Continue from step 6. until satisfied

Note 1: The file system that is exposed is a copy (in SDRAM) of the QSPI file system. The reason for this is that the USBMSD class requires a FAT file system.

Note 2: The image files created in step 8.3 above will be a *.fsX file (where the 'X' is the size of the file system in MB so *.fs1 for a 1MByte file system). The *.fsX file extensions are recognized by the HDK and can be used to drag-n-drop to the MBED drive in the same way as the *.bin files are. A *.fsX file will not overwrite the program stored in internal flash.

Committer:
embeddedartists
Date:
Thu Sep 26 09:21:11 2013 +0000
Revision:
0:bd0d999bb6fb
Child:
2:5a954ee65b33
First version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
embeddedartists 0:bd0d999bb6fb 1 #ifndef RAMFILESYSTEM_H
embeddedartists 0:bd0d999bb6fb 2 #define RAMFILESYSTEM_H
embeddedartists 0:bd0d999bb6fb 3
embeddedartists 0:bd0d999bb6fb 4 #include "mbed.h"
embeddedartists 0:bd0d999bb6fb 5 #include "FATFileSystem.h"
embeddedartists 0:bd0d999bb6fb 6 #include "sdram.h"
embeddedartists 0:bd0d999bb6fb 7 #include <stdint.h>
embeddedartists 0:bd0d999bb6fb 8
embeddedartists 0:bd0d999bb6fb 9 /** Creates a FAT file system in SDRAM
embeddedartists 0:bd0d999bb6fb 10 *
embeddedartists 0:bd0d999bb6fb 11 * @code
embeddedartists 0:bd0d999bb6fb 12 * #include "mbed.h"
embeddedartists 0:bd0d999bb6fb 13 * #include "RAMFileSystem.h"
embeddedartists 0:bd0d999bb6fb 14 *
embeddedartists 0:bd0d999bb6fb 15 * RAMFileSystem ramfs(0xA0000000, 4*1024*1024, "ram"); // 4MB of ram starting at 0xA...
embeddedartists 0:bd0d999bb6fb 16 *
embeddedartists 0:bd0d999bb6fb 17 * int main() {
embeddedartists 0:bd0d999bb6fb 18 * sdram_init();
embeddedartists 0:bd0d999bb6fb 19 *
embeddedartists 0:bd0d999bb6fb 20 * FILE *fp = fopen("/ram/myfile.txt", "w");
embeddedartists 0:bd0d999bb6fb 21 * fprintf(fp, "Hello World!\n");
embeddedartists 0:bd0d999bb6fb 22 * fclose(fp);
embeddedartists 0:bd0d999bb6fb 23 * }
embeddedartists 0:bd0d999bb6fb 24 * @endcode
embeddedartists 0:bd0d999bb6fb 25 */
embeddedartists 0:bd0d999bb6fb 26 class RAMFileSystem : public FATFileSystem {
embeddedartists 0:bd0d999bb6fb 27 public:
embeddedartists 0:bd0d999bb6fb 28
embeddedartists 0:bd0d999bb6fb 29 /** Create the File System in RAM
embeddedartists 0:bd0d999bb6fb 30 *
embeddedartists 0:bd0d999bb6fb 31 * @param addr Start of memory to use for file system
embeddedartists 0:bd0d999bb6fb 32 * @param size Number of bytes to use for file system
embeddedartists 0:bd0d999bb6fb 33 * @param name The name used to access the virtual filesystem
embeddedartists 0:bd0d999bb6fb 34 */
embeddedartists 0:bd0d999bb6fb 35 RAMFileSystem(uint32_t addr, uint32_t size, const char* name);
embeddedartists 0:bd0d999bb6fb 36 virtual int disk_initialize();
embeddedartists 0:bd0d999bb6fb 37 virtual int disk_status();
embeddedartists 0:bd0d999bb6fb 38 virtual int disk_read(uint8_t * buffer, uint64_t sector);
embeddedartists 0:bd0d999bb6fb 39 virtual int disk_write(const uint8_t * buffer, uint64_t sector);
embeddedartists 0:bd0d999bb6fb 40 virtual int disk_sync();
embeddedartists 0:bd0d999bb6fb 41 virtual uint64_t disk_sectors();
embeddedartists 0:bd0d999bb6fb 42
embeddedartists 0:bd0d999bb6fb 43 uint64_t disk_size();
embeddedartists 0:bd0d999bb6fb 44
embeddedartists 0:bd0d999bb6fb 45 protected:
embeddedartists 0:bd0d999bb6fb 46
embeddedartists 0:bd0d999bb6fb 47 uint32_t memStart;
embeddedartists 0:bd0d999bb6fb 48 uint32_t memSize;
embeddedartists 0:bd0d999bb6fb 49 int status;
embeddedartists 0:bd0d999bb6fb 50 };
embeddedartists 0:bd0d999bb6fb 51
embeddedartists 0:bd0d999bb6fb 52 #endif
embeddedartists 0:bd0d999bb6fb 53