[Yaffs] YAFFS2 experimental port to RTEMS available

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Sébastien Bourdeauducq
Date:  
To: yaffs
Subject: [Yaffs] YAFFS2 experimental port to RTEMS available
Hi,

I just got to work my YAFFS2 port to the RTEMS real time operating system:
https://github.com/lekernel/rtems-yaffs2

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
following:
* 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 https://github.com/fallen/rtems-milkymist for
definitions - right now it's an ad hoc NOR driver, but might serve as a base
for a generic "MTD" layer for RTEMS)

How to use:
* git clone git://github.com/lekernel/rtems-yaffs2.git
* cd rtems-yaffs2/direct/rtems
* make && make install (with the RTEMS_MAKEFILE_PATH environment variable 
set)
* 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_IMFS, IMFS_initialize },
        { RTEMS_FILESYSTEM_TYPE_DOSFS, rtems_dosfs_initialize },
        { RTEMS_FILESYSTEM_TYPE_NFS, rtems_nfsfs_initialize },
        { "yaffs", yaffs_initialize },
        { NULL, NULL }
};
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:
http://www.milkymist.org/wiki/index.php?title=Flickernoise_build_instructions

YAFFS2 is plain GPL (no linking exception) - so it will remain separately
distributed and not included in the RTEMS tree. But maybe we can include the
port in the YAFFS2 source?

Best regards,

S.