ChaN FS
This is my try to map the actual ChaN Fat Filesystem library v0.8 to the mbed file system.
ChaNFS
First working version of a FATFileSystem compatible Chan FAT v0.8 implementation. This is intended to use with long file names and RTOS support.
For now long file names work but RTOS support is still untested.
Features:
- Long file name support
- Compatible to FATFileSystem
- Useable with RTOS (CoOS for example) -> still untested
ChaNFSUSB
This is a lib to use ChaNFS lib with USB mass storages like USB Sticks ..
Long file names work
based on NXP USB mass storage code adapted from Igor Skochinsky
[Not found]
ChaNFSSD
This is a lib to use ChaNFS lib with SD cards.
Long filenames should work
based on Simon Fords
[Not found]
still not tested due to missing SD card connector (hope it arraives this week)
8 comments on ChaN FS :
Hi Stefan,
ich hab da mal ne kleine frage ;-)
Kann ich mit deiner library auch binär daten lesen?
ich möchte ein Bild einlesen können von der sd-karte, aber habe noch nicht genug plan von c ;-)
Ist es möglich? Kannst du mir sagen wie ich das machen kann?
Wäre super lieb von Dir, danke.
Gruß Thomas
Has anyone got File System to work on FLASH chip,
such as:
45db16 (on MBED)
45db32
45db64
I am sure that there is evan a memory chip, that has the same command structure as SD card.
I would like to build a board, with NON REMOVABLE memory, and still keep File System Read/Write.
Regards
Ceri.
NeoBelerophon
#
20 Oct 2011
Hi Stefan,
ich hab da mal ne kleine frage ;-)
Kann ich mit deiner library auch binär daten lesen?
ich möchte ein Bild einlesen können von der sd-karte, aber habe noch nicht genug plan von c ;-)
Ist es möglich? Kannst du mir sagen wie ich das machen kann?
Wäre super lieb von Dir, danke.
Gruß Thomas
Hallo Thomas,
klar geht das mit Binärdaten... du machst einfach
fp = fopen( "/" FSNAME "/test.jpg", "r");
if ( fp == NULL )
{
error("Could not open file for read\n");
}
char buf[256];
if ( NULL == fgets(buf, sizeof(buf), fp) )
{
error("Error reading from file\n");
}
fclose(fp);
Das Format ist beim lesen egal. es werden nur Bytes gelesen. Erst die verarbeitung vom char-Array entscheidet ob es wie ein String oder wie ein Bild behandelt wird.
Gruß Stefan
NeoBelerophon
#
20 Oct 2011
Has anyone got File System to work on FLASH chip,
such as:
45db16 (on MBED)
45db32
45db64
I am sure that there is evan a memory chip, that has the same command structure as SD card.
I would like to build a board, with NON REMOVABLE memory, and still keep File System Read/Write.
Regards
Ceri.
Hello Ceri,
I'm not sure but I don't think that there is a flashchip that acts exactly like a SD card.
But it would be nice if we could "mount" a flashchip like a SD card or a usb stick in ChaNFS.
I did something like this on a AVR platform with an i2c eeprom.
for eeprom it was not a big task to write a driver to use it with ChaNFS.
If you like to write such a driver you can have a look at ChaNFSSD or ChaNFSUSB for the interfaces
which must be implemented by the driver.
If you have any further questions on implementing a ChaNFSFlash library I can give you some support.
Best regards,
Stefan
Actually there are such chips, see the eMMC standard. However, they're usually BGA and thus not very hobbyist-friendly.
Hi Stefan.
ich hab noch ein kleines problem.
ich sollte 4610 bytes laden, aber das char array hat nach dem laden nur etwa 1450 bytes des bildes, der rest sind 0x00 :-(
hast du eventuell ne idee woran das liegt?
in der declaration hab ich
char imagebuffer[4610];
und in der main routine
fp = fopen( "/sd/bg.wwi", "rb");
if ( fp == NULL )
{
pc.printf("Could not open file for read\n");
}
if ( NULL == fgets(imagebuffer, 4610, fp) ) 4610= 2bytes info + bildgröße 48x48 x 16 bit
{
pc.printf("Error reading from file\n");
}
fclose(fp);
vielen Dank für Deine Hilfe.
Gruß,
Thomas
Hi Stefan.
ich hab noch ein kleines problem.
ich sollte 4610 bytes laden, aber das char array hat nach dem laden nur etwa 1450 bytes des bildes, der rest sind 0x00 :-(
hast du eventuell ne idee woran das liegt?
in der declaration hab ich
char imagebuffer[4610];
und in der main routine
fp = fopen( "/sd/bg.wwi", "rb");
if ( fp == NULL )
{
pc.printf("Could not open file for read\n");
}
if ( NULL == fgets(imagebuffer, 4610, fp) ) 4610= 2bytes info + bildgröße 48x48 x 16 bit
{
pc.printf("Error reading from file\n");
}
fclose(fp);
vielen Dank für Deine Hilfe.
Gruß,
Thomas
sorry im fopen steht "r" und ned "rb" ;-)
NeoBelerophon
#
25 Oct 2011
Hi Stefan.
ich hab noch ein kleines problem.
ich sollte 4610 bytes laden, aber das char array hat nach dem laden nur etwa 1450 bytes des bildes, der rest sind 0x00 :-(
hast du eventuell ne idee woran das liegt?
in der declaration hab ich
char imagebuffer[4610];
und in der main routine
fp = fopen( "/sd/bg.wwi", "rb");
if ( fp == NULL )
{
pc.printf("Could not open file for read\n");
}
if ( NULL == fgets(imagebuffer, 4610, fp) ) 4610= 2bytes info + bildgröße 48x48 x 16 bit
{
pc.printf("Error reading from file\n");
}
fclose(fp);
vielen Dank für Deine Hilfe.
Gruß,
Thomas
sorry im fopen steht "r" und ned "rb" ;-)
Hallo Thomas,
hast du schon versucht die Datei in mehreren Schritten einzulesen?
Ich könnte mir vorstellen, dass je nach dem was du so alles am laufen hast der interne Ram für diese Operation nicht ausreicht.
Versuche doch mal etwas in der Richtung:
char imagebuffer[4610];
fp = fopen( "/sd/bg.wwi", "rb");
if ( fp == NULL ) {
pc.printf("Could not open file for read\n");
}
fgets(imagebuffer, 1000, fp);
fgets (imagebuffer +1000), 1000, fp);
fgets (imagebuffer +2000), 1000, fp);
...
fgets (imagebuffer +4000), 610, fp);
fclose(fp);
Gruß Stefan
Please log in to post comments.
Hi Stefan,
ich hab da mal ne kleine frage ;-)
Kann ich mit deiner library auch binär daten lesen? ich möchte ein Bild einlesen können von der sd-karte, aber habe noch nicht genug plan von c ;-) Ist es möglich? Kannst du mir sagen wie ich das machen kann? Wäre super lieb von Dir, danke. Gruß Thomas