On Wed, Mar 1, 2023 at 8:43 PM Alan C. Assis <acas...@gmail.com> wrote:

> Hi Xiang Xiao,
>
> This is a great news, but I'm afraid yaffs is not a good option for
> everybody because it uses GPL license.
>
>
Yes, but you can pay some money to switch to a more friendly license.


> But yes, it could be an option for people and companies that can
> release all their software as open-source. PX4 project for example
> could use it.
>
>
The enhancement in mtd_s is decoupled from yaffs, actually the new
interface follows Linux MTD model.
BTW, We plan to improve LittleFS to utilize the new interface.


> BR,
>
> Alan
>
> On 2/28/23, Xiang Xiao <xiaoxiang781...@gmail.com> wrote:
> > We are working on yaffs porting, mtd_s need a little bit of extension to
> > support NAND flash.
> > Here is the patch: https://github.com/apache/nuttx/pull/8670
> > LittleFS needs some modification to get the benefit.
> >
> > On Sun, Feb 26, 2023 at 10:14 PM Nathan Hartman <
> hartman.nat...@gmail.com>
> > wrote:
> >
> >> On Sat, Feb 25, 2023 at 8:53 AM Gregory Nutt <spudan...@gmail.com>
> wrote:
> >>
> >> >
> >> > > Maybe LittleFS or SmartFS could be extended to handle NAND.
> >> >
> >> > I believe that LittleFS has been used with NAND with a NAND FLASH
> >> > translation layer.  I am not sure of the state of that work, but I
> know
> >> > that people have tried it.  Google "LittleFS on NAND flash" and see
> the
> >> > hits.
> >> >
> >> > If a NAND flash translation layer (NFTL) were ported to NuttX, then
> you
> >> > should be able to use almost any file system, although some would be
> >> > extremely inefficient with NAND.  The NAND flash layer would need to
> do
> >> > sparing, wear-leveling, ECC calculations, etc. as needed by NAND.
> >> >
> >> > I have used NXFFS with NAND and it /almost /works.
> >> >
> >> > The basic filesystem issue is that all available filesystems need to
> do
> >> > read-modify-write operations on flash sections.  And they assume that
> >> > you can always write a '1' bit to a '0' bit.  SmartFS and NXFFS both
> >> > assume this behavior explicitly.  It is a good assumption with NOR
> >> > flash.  The problem is that NAND can only be written a whole sector at
> >> > a
> >> > time.  This is because the error correction coding (ECC):  If you
> >> > change
> >> > even one bit in the NAND sector, you have to re-write the whole sector
> >> > with new ECC (because you can't change the '0' bits in the ECC back
> >> > into
> >> > '1''s without erasing the sector).
> >> >
> >> > Since SmartFS and NXFFS both do bit twiddling in the sectors they
> would
> >> > be very inefficient with an NFTL:  Each bit twiddle would cause a
> whole
> >> > sector re-write.  The same is probably true for LittleFS.  Other file
> >> > systems like FAT could also be used if there were an NFTL, however,
> FAT
> >> > would also be inefficient (each directory update or FAT update and
> each
> >> > file data size change would cause another sector write).
> >> >
> >> > So the only real solution to support NAND efficiently is use a file
> >> > system that is designed specifically around the peculiarities of NAND.
> >> > That would require some research (Alan has suggested a couple of
> places
> >> > to start).
> >>
> >>
> >>
> >> I seem to recall reading that in NAND flash, one of the challenges is
> >> that
> >> modifying a bit causes a disturbance that can corrupt other bits, even
> in
> >> unrelated sectors, and that even reading can have this effect. The
> >> disturbance only affects bits a little at a time, but after some number
> >> of
> >> accesses, the affected sectors need to be written to new sectors,
> keeping
> >> track of bad sectors formed in the process, to avoid data loss. This may
> >> lead to a cascade effect in which reading a sector may cause numerous
> >> sectors to be re-written. This phenomenon is called write amplification.
> >> The takeaway from a usage perspective is that you want to over-provision
> >> the amount of NAND flash you install, to leave plenty of room for all
> >> this
> >> swapping, and plenty of extra sectors to increase the amount of accesses
> >> before failure. The greater the over-provisioning, the longer until
> >> failure.
> >>
> >> I haven't tried yet, but I would like at some point to support a
> micro-SD
> >> and/or micro-MMC card as the backing store and use one that has built in
> >> hardware wear leveling, with some appropriate file system of course.
> This
> >> may add $50 or more to the bill of materials depending on the card
> >> capacity, but makes it possible for users to replace the card if it
> >> fails,
> >> in contrast to soldered-on flash chips, which can be replaced too, but
> >> only
> >> with the appropriate tools and skills.
> >>
> >> Cheers
> >> Nathan
> >>
> >
>

Reply via email to