renaming, minor changes

This commit is contained in:
Peter Andersson
2013-07-28 15:11:12 +02:00
parent 840e5aab12
commit f3f300d75b
6 changed files with 28 additions and 54 deletions

10
README
View File

@ -25,11 +25,13 @@ Spiffs is designed with following characteristics in mind:
** Features ** Features
What spiffs does: What spiffs does:
- Spiffs presents a posix-like api: open, close, read, write, seek, stat, etc - Posix-like api: open, close, read, write, seek, stat, etc
- It can be run on any NOR flash, not only SPI flash - theoretically also on
embedded flash of an microprocessor
- Multiple spiffs configurations can be run on same target - and even on same - Multiple spiffs configurations can be run on same target - and even on same
SPI flash device SPI flash device
- It implements static wear leveling - Implements static wear leveling
- It has built in file system consistency checks - Built in file system consistency checks
What spiffs does not: What spiffs does not:
- Presently, spiffs does not support directories. It produces a flat - Presently, spiffs does not support directories. It produces a flat
@ -38,7 +40,7 @@ What spiffs does not:
- It is not a realtime stack. One write operation might take much longer than - It is not a realtime stack. One write operation might take much longer than
another. another.
- Poor scalability. Spiffs is intended for small memory devices - the normal - Poor scalability. Spiffs is intended for small memory devices - the normal
sizes for SPI flashes. sizes for SPI flashes. Going beyond ~128MB is probably a bad idea.
- Presently, it does not detect or handle bad blocks. - Presently, it does not detect or handle bad blocks.
For integration, see the docs/INTEGRATION file. For integration, see the docs/INTEGRATION file.

View File

@ -119,8 +119,9 @@ you point out these files in your make script for compilation.
Also copy the spiffs_config.h over from the default/ folder. Also copy the spiffs_config.h over from the default/ folder.
Build fails, nagging about inclusions and u32_t and whatnot. Open the Try buliding. This fails, nagging about inclusions and u32_t and whatnot. Open
spiffs_config.h and delete the bad inclusions. Also, add following typedefs: the spiffs_config.h and delete the bad inclusions. Also, add following
typedefs:
typedef signed int s32_t; typedef signed int s32_t;
typedef unsigned int u32_t; typedef unsigned int u32_t;
@ -129,7 +130,7 @@ spiffs_config.h and delete the bad inclusions. Also, add following typedefs:
typedef signed char s8_t; typedef signed char s8_t;
typedef unsigned char u8_t; typedef unsigned char u8_t;
Now it should builds. Over to the mounting business. Assume you already Now it should build. Over to the mounting business. Assume you already
implemented the read, write and erase functions to your SPI flash: implemented the read, write and erase functions to your SPI flash:
void my_spi_read(int addr, int size, char *buf) void my_spi_read(int addr, int size, char *buf)
@ -156,9 +157,9 @@ Now, write the my_spiffs_mount function:
spiffs_config cfg; spiffs_config cfg;
cfg.phys_size = 2*1024*1024; // use all spi flash cfg.phys_size = 2*1024*1024; // use all spi flash
cfg.phys_addr = 0; // start spiffs at start of spi flash cfg.phys_addr = 0; // start spiffs at start of spi flash
cfg.phys_erase_block = 65536; // well, this is what the datasheet says cfg.phys_erase_block = 65536; // according to datasheet
cfg.log_block_size = 65536; // seems sensible cfg.log_block_size = 65536; // let us not complicate things
cfg.log_block_size = LOG_PAGE_SIZE; // seems sensible cfg.log_block_size = LOG_PAGE_SIZE; // as we said
cfg.hal_read_f = my_spi_read; cfg.hal_read_f = my_spi_read;
cfg.hal_write_f = my_spi_write; cfg.hal_write_f = my_spi_write;

View File

@ -10,7 +10,7 @@
// following includes are for the linux test build of spiffs // following includes are for the linux test build of spiffs
// this may/should/must be removed/altered/replaced in your target // this may/should/must be removed/altered/replaced in your target
#include "stypes.h" #include "params_test.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>

View File

@ -1,31 +1,6 @@
/*
============================================================================
Name : spiffs_test_.c
Author :
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "stypes.h"
#include "spiffs.h"
#include "spiffs_nucleus.h"
#include "testrunner.h" #include "testrunner.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dirent.h>
#include <unistd.h>
int main(void) { int main(void) {
run_tests(); run_tests();
return EXIT_SUCCESS; return 1;
} }

View File

@ -1,14 +1,17 @@
/* /*
* stypes.h * params_test.h
* *
* Created on: May 26, 2013 * Created on: May 26, 2013
* Author: petera * Author: petera
*/ */
#ifndef STYPES_H_ #ifndef PARAMS_TEST_H_
#define STYPES_H_ #define PARAMS_TEST_H_
#define print(...) printf(__VA_ARGS__) #define FLASH_SIZE 2*1024*1024
#define SECTOR_SIZE 65536
#define LOG_BLOCK 65536
#define LOG_PAGE 256
#define ASSERT(c, m) real_assert((c),(m), __FILE__, __LINE__); #define ASSERT(c, m) real_assert((c),(m), __FILE__, __LINE__);
@ -25,4 +28,4 @@ typedef signed char s8_t;
typedef unsigned char u8_t; typedef unsigned char u8_t;
#endif /* STYPES_H_ */ #endif /* PARAMS_TEST_H_ */

View File

@ -10,7 +10,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "stypes.h" #include "params_test.h"
#include "spiffs.h" #include "spiffs.h"
#include "spiffs_nucleus.h" #include "spiffs_nucleus.h"
@ -24,14 +24,7 @@
#include <dirent.h> #include <dirent.h>
#include <unistd.h> #include <unistd.h>
static unsigned char area[FLASH_SIZE];
#define SECTOR_SIZE 65536 //(0x10000)
#define PAGE_SIZE 256 //256
#define LOG_BLOCK 1*65536
#define LOG_PAGE 1*PAGE_SIZE
static unsigned char area[2*1024*1024];
static int erases[sizeof(area)/SECTOR_SIZE]; static int erases[sizeof(area)/SECTOR_SIZE];
static char _path[256]; static char _path[256];
@ -39,7 +32,7 @@ static char _path[256];
spiffs __fs; spiffs __fs;
static u8_t _work[LOG_PAGE*2]; static u8_t _work[LOG_PAGE*2];
static u8_t _fds[256+256/2]; static u8_t _fds[256+256/2];
static u8_t _cache[LOG_PAGE*5]; static u8_t _cache[(LOG_PAGE+32)*4];
static int check_valid_flash = 1; static int check_valid_flash = 1;
@ -75,10 +68,10 @@ static s32_t _write(u32_t addr, u32_t size, u8_t *src) {
int i; int i;
//printf("wr %08x %i\n", addr, size); //printf("wr %08x %i\n", addr, size);
for (i = 0; i < size; i++) { for (i = 0; i < size; i++) {
if (((addr + i) & (PAGE_SIZE-1)) != offsetof(spiffs_page_header, flags)) { if (((addr + i) & (LOG_PAGE-1)) != offsetof(spiffs_page_header, flags)) {
if (check_valid_flash && ((area[addr + i] ^ src[i]) & src[i])) { if (check_valid_flash && ((area[addr + i] ^ src[i]) & src[i])) {
printf("trying to write %02x to %02x at addr %08x\n", src[i], area[addr + i], addr+i); printf("trying to write %02x to %02x at addr %08x\n", src[i], area[addr + i], addr+i);
spiffs_page_ix pix = (addr + i) / PAGE_SIZE; spiffs_page_ix pix = (addr + i) / LOG_PAGE;
dump_page(&__fs, pix); dump_page(&__fs, pix);
return -1; return -1;
} }