RES: YAFFS2 experimental support available

Wendell Pereira da Silva wendell.silva at
Fri Dec 3 18:32:32 UTC 2010

Excellent, Sébastien! 
Does it support wear leveling already?


-----Mensagem original-----
De: rtems-users-bounces at [mailto:rtems-users-bounces at] Em nome de Sébastien Bourdeauducq
Enviada em: sexta-feira, 3 de dezembro de 2010 13:48
Para: rtems-users at
Assunto: YAFFS2 experimental support available


I just got to work my YAFFS2 port (flash filesystem):

A few bits are still missing but it is now in an usable state.

It does not use the bdbuf layer and requires a simple flash driver with the 
* read/write operations to read and program the flash (the "program" operation 
does not erase, and can only set bits from 1 to 0 in the flash array)
* ioctls to retrieve the block size, the flash partition size and to erase a 
block (see milkymist_flash.h in for 
definitions - right now it's an ad hoc driver, but might serve as a base for a 
generic "MTD" layer for RTEMS)

How to use:
* git clone git://
* cd rtems-yaffs2/direct/rtems
* make && make install (with the RTEMS_MAKEFILE_PATH environment variable 
* use CONFIGURE_HAS_OWN_FILESYSTEM_TABLE and define the filesystem table 
like in this example:
const rtems_filesystem_table_t rtems_filesystem_table[] = {
	{ RTEMS_FILESYSTEM_TYPE_DOSFS, rtems_dosfs_initialize },
	{ RTEMS_FILESYSTEM_TYPE_NFS, rtems_nfsfs_initialize },
	{ "yaffs", yaffs_initialize },
You need to #include <yaffs.h> for the yaffs_initialize definition.
* link your application with -lyaffs2
* mount the flash device as yaffs

For a real-life application using it, see:

YAFFS2 is plain GPL (no linking exception) - so it will remain separately 
distributed and not included in the RTEMS tree.

Good luck,

rtems-users mailing list
rtems-users at

More information about the users mailing list