Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
11 years ago.
EA LPC4088 QuickStart LocalFileSystem
Hello,
I'm trying to port a program from the LPC1768 to the EA LPC4088 QuickStart board. I put a .cfg file on the LPC1768 and read the paramterers by creating a LocalFileSystem and opening the .cfg file. This method doesn't work on the LPC4088, and I'm looking for a similar way for the LPC4088. I need to easily edit the file when connected to the computer and read it when starting the program.
Maybe the solution is obvious but I'm not seeing it.
Thanks for your help.
2 Answers
11 years ago.
As far as I am aware only the two original mbeds (LPC1768 and LPC11u24) have the LocalFileSystem implemented.
The demand is really to put a file on it via usb mass storage? The only library I am aware of which could be used for that is: http://mbed.org/users/Sissors/code/USBFileSystem/.
Short summary: Implements a kinda like LocalFileSystem via the host microcontroller (instead of the interface microcontroller that the LocalFileSystem runs on). So you got to use the USB connector/pins of the LPC4088 itself, not the one used for programming (I assume they are also on the LPC4088 seperate ones). Aditionally the library requires you to still give it space to store stuff on, just like the USB MSD and the FATFileSystem libraries. This can be for example an SD card, but also a flash chip (they should be available on the LPC4088 Quickstart thing, but I don't know if there are already libraries to use.
An alternative is that I see it has EEPROM memory. You could also use that to store the files on. (You can also do it in a very limitted fashion on the program flash, but if you have EEPROM that should be superior). Due to the limitted storage space on the EEPROM you might need to hack it together a bit. The IAP library has EEPROM code for the LPC11u24, good chance it is at least similar for the LPC4088: http://mbed.org/users/okano/code/IAP/
Small warning: this will be quite some programming, if you aren't too familiar with it, an alternative solution might be better.
11 years ago.
What Erik has written is correct. The LocalFileSystem can only be used with the "original" mbed boards. Boards with the new HDK doesn't have any local storage.
The LPC4088 also has an 8MB QSPI flash you can use for storage. In the EALib library we have a simple file system implementation (QSPIFileSystem)
Import libraryEALib
A library with drivers for different peripherals on the LPC4088 QuickStart Board or related add-on boards.
Import programapp_qspi_memstick
The purpose of this application is to allow easy manipulation of the QSPI file system from a PC
Import programapp_qspi_format
Example showing how to create a file system on the QSPI flash.
Andreas @ Embedded Artists
Thanks for the answer, I forgot to mention that I tried the QSPI flash before. It works well, I was just looking for an alternative because I wanted to edit the files simply from the computer without loading the memstick app. But if there's no other easy solution I'll stick to this.
posted by 06 Dec 2013Andreas,
I am having a problem getting QSPI to work. Im sure I missed a step somewhere. In the example given in http://mbed.org/users/embeddedartists/notebook/lpc4088-quickstart-board---software-information/ , there are a few compiler errors.
#include "mbed.h" #include "QSPIFileSystem.h" QSPIFileSystem qspifs("/qspi/"); int main() { if (!qspifs.isFormatted()) { //kb - s/b isformatted() qspifs.format(); } FILE* fh = fopen("/qspi/hello.txt"); //kb - s/b fopen("/qspi/hello.txt", "w") if (fh != NULL) { fwrite("Hello World!", 12, 1, fh); fclose(); //kb - s/b fclose(fh); } }
In the example given in https://mbed.org/compiler/#nav:/LPC4088-105/EALib/Classes/QSPIFileSystem.doc; , there are also a compiler errors.
#include "mbed.h" #include "QSPIFileSystem.h" QSPIFileSystem qspi("qspi"); int main() { if (!qspifs.isFormatted()) { //kb - same error as above qspifs.format(); } FILE *fp = fopen("/qspi/myfile.txt", "w"); if (fp != NULL) { fprintf(fp, "Hello World!\n"); //kb - fprintf is not a valid function fclose(fp); } }
I am not having luck with opening/writing a file without a return error. The code has never entered the formatting stage.
1. Is there more detail on how fwrite works?
2. Can fprintf be made to work?
Regards,
...kevin
posted by 09 Jan 2014Kevin,
Thanks for pointing out those errors. I have updated the Software Information page and published a new version of the EALib with corrected documentation of the QSPIFileSystem class.
1. The fwrite and fprintf are the standard C functions and you can find documentation e.g here
2. The fprintf function does work (just tested it with the online compiler and this program (you need to add EALib as well):
main.cpp
#include "mbed.h" #include "QSPIFileSystem.h" QSPIFileSystem qspifs("qspi"); static void cat(const char* fname) { char buff[513]; int num; FILE *fp = fopen(fname, "r"); if (fp == NULL) { printf("Failed to open %s\n", fname); return; } printf("\n----- Content of %s -----\n", fname); while ((num = fread(buff, 1, 512, fp)) > 0) { buff[num] = '\0'; printf(buff); } fclose(fp); } int main() { if (!qspifs.isformatted()) { qspifs.format(); } FILE *fp = fopen("/qspi/myfile.txt", "a"); if (fp != NULL) { fprintf(fp, "Hello World Again!\n"); fclose(fp); } cat("/qspi/myfile.txt"); }
Anders @ Embedded Artists