Thanks Greg – and apologies for the wrong thread subject.
I have seen references in the code to FTL but stupidly thought it was some other kind of FS. A non-Linux/Posix/Unix background means I am not totally across the mtd/block driver terminology etc. I did use Unix, but that was around 45 years ago!. You have provided the “magic bullet” I need, and I am confident I will now get it working quickly in the morning. Tim. From: Gregory Nutt <spudan...@gmail.com> Reply to: <dev@nuttx.apache.org> Date: Wednesday, 25 August 2021 at 18:14 To: <dev@nuttx.apache.org> Subject: Re: which filesystem? m25p_initialize() does not generate a block driver. I creates an MTD driver. To get a block driver, you have to wrap the MTD driver instances in an FTL (FLASH Translation Layer) instance. These should be examples: $ find . -name "*.c" | xargs grep -l ftl_initialize | xargs grep -l nxffs_initialize ./arm/cxd56xx/common/src/cxd56_flash.c ./arm/lpc43xx/bambino-200e/src/lpc43_appinit.c ./arm/lpc43xx/lpc4330-xplorer/src/lpc43_appinit.c ./arm/lpc43xx/lpc4357-evb/src/lpc43_appinit.c ./arm/sam34/sam4e-ek/src/sam_at25.c ./arm/sam34/sam4s-xplained-pro/src/sam_nandflash.c ./arm/sama5/sama5d2-xult/src/sam_at25.c ./arm/sama5/sama5d2-xult/src/sam_nandflash.c ./arm/sama5/sama5d3-xplained/src/sam_at25.c ./arm/sama5/sama5d3-xplained/src/sam_nandflash.c ./arm/sama5/sama5d3x-ek/src/sam_at24.c ./arm/sama5/sama5d3x-ek/src/sam_at25.c ./arm/sama5/sama5d3x-ek/src/sam_nandflash.c ./arm/sama5/sama5d4-ek/src/sam_at25.c ./arm/sama5/sama5d4-ek/src/sam_nandflash.c ./arm/samd5e5/metro-m4/src/sam_at24.c ./arm/samv7/samv71-xult/src/sam_bringup.c ./arm/stm32/cloudctrl/src/stm32_w25.c ./arm/stm32/fire-stm32v2/src/stm32_w25.c ./arm/stm32/shenzhou/src/stm32_w25.c ./arm/stm32/stm32f103-minimum/src/stm32_at24.c ./arm/stm32l4/stm32l476vg-disco/src/stm32_appinit.c ./arm/tiva/tm4c123g-launchpad/src/tm4c_at24.c ./mips/pic32mx/mirtoo/src/pic32_appinit.c ./xtensa/esp32/esp32-devkitc/src/esp32_spiflash.c ./xtensa/esp32/esp32-ethernet-kit/src/esp32_spiflash.c ./xtensa/esp32/esp32-wrover-kit/src/esp32_spiflash.c The block driver should be called /dev/mtdblockN where N is the minor device number passed as the first argument to ftl_initialize(). On 8/25/2021 11:04 AM, Tim wrote: I seem to have got over most of my SPI flash and EEPROM issues now and my 256Mb SPI flash is properly recognised. I think I am at the last hurdle. Here is the console output, along with my question of the day :) Successfully initialized M25P SPI m25p_initialize: dev: 0x2005b970 m25p_readid: priv: 0x2005b990 m25p_readid: manufacturer: 20 memory: ba capacity: 19 m25p_initialize: Return 0x2005b990 Successfully bound SPI0 CS1 to the SPI FLASH driver m25p_ioctl: cmd: 1537 m25p_ioctl: blocksize: 256 erasesize: 4096 neraseblocks: 8192 m25p_ioctl: return 0 m25p_bread: startblock: 00000000 nblocks: 1 m25p_read: offset: 00000000 nbytes: 256 m25p_waitwritecomplete: Complete m25p_read: return nbytes: 256 nxffs_nextentry: No entry found nxffs_limits: No inodes found nxffs_limits: Free FLASH region begins at offset: 5 nxffs_limits: First inode at offset 5 Succesfully initialised NXFSS nx_mount: ERROR: Failed to find block driver (null) Failed to mount the NXFSS volume -15 I believe the block driver would be "/dev/M25P" (M25P, for example) but there is no code I have found that specifies the block driver location. I have: ret = nxfss_initialize(mtd); then ret = nx_mount("NULL, "/mnt/M25P", 0, NUL); and that seems to be in common with other "bringup" code; using NULL rather than "/dev/something". Just need the last piece of this jigsaw if anyone could be so kind :)