Using Partition Manager created partitions for FatFS

I have an issue with using partitions created by PM in external flash. I can create a partition in my prj.conf file and use that and everything works. But I need to put some data into the external NOR memory. PM creates the partitions correctly as far as I can see. But I have not found a way to make the FatFS driver correctly find those partitions. Basically I have the exact same issue as in this ticket:  How to reference PM generated partitions from device tree? 

I need to create a disk like this for FatFS driver to find.

/ {
	msc_disk0 {
		compatible = "zephyr,flash-disk";
		partition = <&external_flash>;
		disk-name = "NAND";
		cache-size = <4096>;
	};
};

If I have the partition in internal memory I can at least make this compile (the partition is tiny so it won't work for my application)

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x0 0xc000>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0xc000 0x72000>;
		};
		slot1_partition: partition@7e000 {
			label = "image-1";
			reg = <0x7e000 0x72000>;
		};
		scratch_partition: partition@f0000 {
			label = "image-scratch";
			reg = <0xf0000 0xa000>;
		};
		storage_partition: partition@fa000 {
			label = "storage";
			reg = <0xfa000 0x5f00>;
		};
		external_flash: partition@fff00 {
			label = "external_flash";
			reg = <0xfff00 0x100>;
		};
	};
};

The external memory itself is fine and I can read/write it with flash_area_read() and flash_area_write() functions. 

Is there a way to reference the PM created partitions from within the devicetree file of my main application?

Parents
  • UPDATE: Got a reply quicker than anticipated. For the time being, it's not possible to define the partition in the overlay/DTS file while partitions are managed by the PM, but our developers are aware of this, and are trying to address it. However, it's not yet resolved as it takes some time to get to the bottom of and find a sufficient solution. In short what's happening here is that the disk access uses PM (replacing the Flash API) macros to access the fixed partition areas by DTS ID, ending up with an API <-> ID mismatch.

    If you'd like I can keep you updated on any progress or resolution of this issue.

    Best regards,

    Simon

  • I would like to be kept updated on this, thank you. For the time being I will just try to keep using the weird solution I have and make sure to keep everything in sync manually.

    Thank you for your help.

    Tiit

Reply Children
No Data
Related