Hi Saurav,

Amazing! I'm happy to know you fixed it!

If you can create some board configuration or document how you are doing
it, I think it will be useful for more people here!

Some years ago Ken Petit created a small Flash Simulator to use with
SmartFS, but I think this one you are using is different.

Best Regards,

Alan

On Sat, Feb 24, 2024 at 4:22 PM Saurav Pal <resyfer....@gmail.com> wrote:

> Hi Alan,
>
> I have figured out the cause...it was because of a very *small* error in my
> rawwrite method which was confusing littlefs (which I think commits CRC,
> flushes it and rechecks the written data for consistency at one point in
> the forceformat operation).
>
> Right now, mount() works as intended. However there is a floating point
> exception that occurs if I try to cd or ls the mounted directory, and I'll
> be looking into it tomorrow (most probably a division by 0 error).
>
> Here are the logs and stats just after a mount:
> https://pastebin.com/QxJ4qMRd (it's a bit long....has stats about each of
> 4096 pages in a 2MB virtual device).
>
> PS: I had to use vi to view the logs in nsh in a sane manner, though a tool
> like less would be godsend in such cases.
>
> BR,
> SP
>
> On Sat, Feb 24, 2024 at 9:23 PM Saurav Pal <resyfer....@gmail.com> wrote:
>
> > Hi Xiang and Alan,
> >
> > Thanks for the info Xiang.
> >
> > Alan, the first error returns ENOTTY as littlefs sends a BIOC_FLUSH
> > command in IOCTL which isn't supported in NAND, and Xiang has provided
> the
> > explanation on why that is fine.
> >
> > As for the -ENOSPC, I'm looking into it currently. It *should *have
> > enough space, considering I have the virtual device with a size of 2MB +
> > (some bytes for the respective spare areas in blocks) and that is way
> more
> > than theoretical requirement of littlefs, so I'll need to debug it
> further.
> >
> > PS: I was also having a problem with the "vi" utility in the sim, any
> > movement keys (or anything I typed in general) that I typed were echoed
> out
> > the the terminal as well, so I fixed that using termios to disable echo
> > (and enable back on quitting vi).
> >
> > BR,
> > SP
> >
> > On Sat, 24 Feb, 2024, 20:18 Alan C. Assis, <acas...@gmail.com> wrote:
> >
> >> Hi Saurav,
> >>
> >> I suggest you to verifyr these errors first:
> >>
> >> *Command: 1293 | BIOC_FLUSH: 1293*
> >> Error Upper! ioctl | -25
> >>
> >> #define ENOTTY 25 /* Not a typewriter */
> >>
> >> So, you can search where this ENOTTY is returned.
> >>
> >> Some to:
> >>
> >> nx_mount: ERROR: Bind method failed: -28
> >> nsh: mount: mount failed: 28
> >>
> >> #define ENOSPC 28 /* No space left on device */
> >>
> >> BR,
> >>
> >> Alan
> >>
> >> On Sat, Feb 24, 2024 at 9:28 AM Saurav Pal <resyfer....@gmail.com>
> wrote:
> >>
> >> > Hi all,
> >> >
> >> > I've been trying to develop a device simulator for the NAND flash (in
> >> the
> >> > sim).
> >> >
> >> > A short note on what this does is create a virtual NAND flash (from
> RAM)
> >> > and provide a driver, as well as a wrapper around the upper half
> (which
> >> for
> >> > now, does nothing extra). This helps in creating records of
> >> > reads/writes/erases (in a separate file) for testing and statistics
> >> > purposes.
> >> >
> >> > Since littlefs is one of the supported filesystems on MTD devices, I
> >> tried
> >> > to use it to test mount but it tries to use an ioctl with BIOC_FLUSH
> in
> >> the
> >> > format process, which is not supported as far as code in
> >> > drivers/mtd/mtd_nand.c go.
> >> >
> >> > *Should that be something that the NAND driver should support?*
> >> >
> >> > Here are the logs of that process, the first ioctl is for
> >> MTDIOC_GEOMETRY
> >> > (which is supported), and second for BIOC_FLUSH (in *bold*):
> >> >
> >> > nuttx ➤ make && ./nuttx
> >> > LD:  nuttx
> >> > login: admin
> >> > password:
> >> > User Logged-in!
> >> > nsh> ls /dev
> >> > /dev:
> >> >  console
> >> >  gpio0
> >> >  gpio1
> >> >  gpio2
> >> >  gpio3
> >> >  loop
> >> >  null
> >> >  oneshot
> >> >  ram0
> >> >  ram1
> >> >  ram2
> >> >  zero
> >> > nsh> mtddev
> >> > Size:   2097152 B
> >> >
> >> > Pages:    4096
> >> > Blocks:     33
> >> > Writing...Done
> >> > Driver running
> >> > nsh> ls /dev
> >> > /dev:
> >> >  console
> >> >  gpio0
> >> >  gpio1
> >> >  gpio2
> >> >  gpio3
> >> >  loop
> >> >  mtd
> >> >  null
> >> >  oneshot
> >> >  ram0
> >> >  ram1
> >> >  ram2
> >> >  zero
> >> > nsh> mount -t littlefs -o forceformat /dev/mtd /hi
> >> > Upper! ioctl
> >> > Command: 1537 | BIOC_FLUSH: 1293
> >> > Upper! bread
> >> > Page 128
> >> > Lower! rawread : Page 128
> >> > Lower! rawread : Page 129
> >> > Lower! rawread : Page 130
> >> > Lower! rawread : Page 131
> >> > Upper! erase
> >> > Lower! eraseblock : Block 0
> >> > Upper! bread
> >> > Page 0
> >> > Lower! rawread : Page 0
> >> > Lower! rawread : Page 1
> >> > Lower! rawread : Page 2
> >> > Lower! rawread : Page 3
> >> > Upper! bread
> >> > Page 4
> >> > Lower! rawread : Page 4
> >> > Lower! rawread : Page 5
> >> > Lower! rawread : Page 6
> >> > Lower! rawread : Page 7
> >> > Upper! bwrite
> >> > Lower! rawwrite : Page 0
> >> > Lower! rawwrite : Page 1
> >> > Lower! rawwrite : Page 2
> >> > Lower! rawwrite : Page 3
> >> > Upper! ioctl
> >> > *Command: 1293 | BIOC_FLUSH: 1293*
> >> > Error Upper! ioctl | -25
> >> > Upper! bread
> >> > Page 0
> >> > Lower! rawread : Page 0
> >> > Lower! rawread : Page 1
> >> > Lower! rawread : Page 2
> >> > Lower! rawread : Page 3
> >> > nx_mount: ERROR: Bind method failed: -28
> >> > nsh: mount: mount failed: 28
> >> > nsh>
> >> >
> >> > The logs with "Upper!" refer to the upper half of the driver being
> >> > executed, and same for the lower, and the pages are numbered from the
> >> start
> >> > of the device (ie. (block << LOG_N_BLOCKS_PER_PAGE) + page_in_block)).
> >> >
> >> > Regards,
> >> > SP
> >> >
> >>
> >
>

Reply via email to