it's ok to use fatfs on flas in this particular case.

On Sat, Nov 2, 2024 at 12:43 AM Tim Hardisty <timhardist...@gmail.com>
wrote:

> I will only be making a few 100 changes over the life of the product. It’s
> a holding area for a new firmware image to be written via USBMSD by the
> user and used by MCUboot to write out (raw) to the main boot flash. Ideally
> I would like a “FAT translator” that allows (say) a LittleFS partition to
> be seen as FAT via USB but I don’t think such a thing exists.
>
> Obviously FAT is useless on flash for more “normal” things, which is why I
> have a 32MByte NOR flash running LittleFS for syslog and userlogs. In the
> limit I may just use a FAT formatted RAMdisk for the upgrade staging, but
> it depends on how much RAM my app ends up needing.
>
> > On 1 Nov 2024, at 15:12, Xiang Xiao <xiaoxiang781...@gmail.com> wrote:
> >
> > it mayn't work as you expect. FatFS updates some fixed location very
> > frequently, your flash device may stop working after you make ten
> thousand
> > changes.
> >
> > On Fri, Nov 1, 2024 at 8:06 PM Tim hardisty <timhardist...@gmail.com>
> wrote:
> >
> >> I am successfully creating a FAT FS on a QSPI NOR flash - the problem
> >> was an error in the flash driver when 512 byte sector emulation was
> >> being used. I do this in my bringup code:
> >> struct qspi_dev_s *qspi_flashmem;
> >>
> >> qspi_flashmem = sam_qspi_initialize(0);
> >> ...
> >> mtd_qspi = gd55_initialize(qspi_flashmem, 0);
> >> ...
> >> mtd_qspi0 = mtd_partition(mtd_qspi, 0, QSPI0_SIZE);...
> >> ...
> >> ret = register_mtddriver("/dev/qspi0", mtd_qspi0, 0744, NULL);
> >> ...
> >> mtd_qspi1 = mtd_partition(mtd_qspi, QSPI0_SIZE, QSPI1_SIZE);
> >> ...
> >> ret = register_mtddriver("/dev/qspi1", mtd_qspi1, 0755, NULL);
> >> ret = nx_mount("/dev/qspi1", "/mnt/qspi1lfs", "littlefs", 0,
> "autoformat");
> >> etc.
> >>
> >> The GD55 driver is using 512 byte simulation, but s512_initialize()
> >> works just as well.
> >>
> >> I can then use mkfatfs to create a FAT FS and mount it and all is good.
> >>
> >> mkfats fs is not available to use in bringup code as I understand it
> >> otherwise I would mount the FS in my bringup too.
> >>
> >> On 01/11/2024 02:07, Xiang Xiao wrote:
> >>> On Wed, Oct 30, 2024 at 2:00 AM Tim Hardisty <timhardist...@gmail.com>
> >>> wrote:
> >>>
> >>>> Whilst FAT on a NOR flash may generally be seen a not such a great
> >>>> idea...please ignore that and confirm if...
> >>>>
> >>>> ...I am right in deducing that I can't simply make a FAT file system
> on
> >>>> (say) the third mtd partition (with 512 byte sector emulation)
> >>>> (partitions 0, 1 and 2 are "raw" data) since FAT will treat the entire
> >>>> flash devices as a "volume" and so fail to find a partition table at
> the
> >>>> bottom end of the flash device?
> >>>
> >>> The partition is different from the file system. A file system can
> mount
> >> on
> >>> either a block/mtd device, or a partition. FAT can work only with the
> >> block
> >>> device, so you can't mount FAT on a flash(mtd) device, only the special
> >>> designed file system(e.g. littlefs, smartfs, spiffs) can work with mtd
> >>> device directly. The traditional block based file system need FTL(flash
> >>> translation layer) to work with mtd device, so you can try dhara if you
> >>> really want to use FAT on flash device:
> >>> https://github.com/apache/nuttx/blob/master/drivers/mtd/dhara.c
> >>>
> >>> If so, it no doubt explains why I can
> >>>> format a FAT FS but not mount it.
> >>>>
> >>>>
> >>> Which command do you use to format the device or partition?
> >>>
> >>> I could - perhaps should -  re-jig my partitions so partition 0 is used
> >>>> for FAT, rather than partition 3, but before I do that are there any
> FAT
> >>>> FA/NuttX gurus who can let me know if there is a way to do this (and
> >>>> save me the hassle of reworking my bootstrap and MCUboot locations
> etc.
> >>>> for now)?
> >>>
> >>> You can format the device with GPT/MBR partition by:
> >>> https://github.com/apache/nuttx-apps/tree/master/fsutils/mkgpt
> >>> https://github.com/apache/nuttx-apps/tree/master/fsutils/mkmbr
> >>> But, the raw flash device normally doesn't use GPT/MBR partition,
> instead
> >>> hardcode the  partition in the code directly since CPU normally could
> run
> >>> firmware directly on flash devices which normally define a proprietary
> >>> partition scheme. For this case, you can use PTABLE/TXTABLE:
> >>> https://github.com/apache/nuttx/blob/master/fs/partition/fs_ptable.c
> >>> https://github.com/apache/nuttx/blob/master/fs/partition/fs_txtable.c
> >>>
> >>
>
>

Reply via email to