Use of FlexNVM to store code

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Use of FlexNVM to store code

Jump to solution
1,413 Views
pandurang
Contributor I

Hi All,

My doubt is whether we can use FlexNVM (from address 0x1000 0000 to 0x1003 FFFF) to store code which has size more than 256KByte or not.

As per reference manual, use can configure FlexNVM  as either "basic data flash" or "EEPROM" or "combination of both".

But I have seen in one of example of BLE, the code size is of 494 KByte. P-Flash size is beyound 0x40000 !

pastedImage_1.png

This example has KW36Z set as MCU and not KW35. KW35 can have P-Flash of 512 KBytes.

pastedImage_2.png

pastedImage_3.png

Thanks and Regards,

Pandurang

Tags (3)
0 Kudos
1 Solution
1,247 Views
Sebastian_Del_Rio
NXP Employee
NXP Employee

Hi Pandurang,

 

It's possible to use the whole 512kB for program memory if your application requires it, however, it's still recommended that you leave some available space for the PROD_DATA memory partition, as it's used by some components of the BLE stack used by the KW36.

 

Please let me know if you need any more information.

 

Best regards,

Sebastian

View solution in original post

6 Replies
1,247 Views
Sebastian_Del_Rio
NXP Employee
NXP Employee

Hi Pandurang, I hope you're doing well!

 

It's possible to use FlexNVM to fit more than 256k of program data.

The BLE stack examples provided in the KW36Z's SDK already do this. They use Flex_nvm as additional program flash to be able to fit the BLE stack. This allows the PROGRAM_FLASH memory region to be of 494kB, leaving 16k bytes of NVM from address 0x7b800, and, 2kB available for PROD_DATA  from address 0x7f800.

 

Please let me know if you need any more information.

 

Best regards,

Sebastian 

0 Kudos
1,247 Views
pandurang
Contributor I

Hello Sebastian,

Thanks for your reply.

Yes, as we can see in the example, you mentioned, code is stored in FlexNVM by extending P-Flash area upto FlexNVM address range. So, code can execute from FlexNVM address range also. In other words, we can have 512 KB memory to store and execute any code from 512 KB memory.

Along with Code, to store data in FlexNVM address range, we have to make another partition of required size, right? As it is done in example code (store PROD_DATA in separate partition).

Thanks again for clearing my doubts.

Regards,

Pandurang

0 Kudos
1,247 Views
Sebastian_Del_Rio
NXP Employee
NXP Employee

Hi Pandurang,

 

It's recommended to leave partitions for both NVM_region and PROD_DATA in your MCU's memory configuration, as these may be used for different purposes, depending on the needs of your application.

The configuration used in the SDK examples is a good starting point, but in the end, depending on your application's requirements, the memory configuration may need to be modified.

 

Please let me know if you need any other information.

 

Best regards,

Sebastian

0 Kudos
1,247 Views
pandurang
Contributor I

Hello Sebastian,

Thanks for your reply.

If our application does not require to store any data, we can use full 512 KB memory to store code, right?

0 Kudos
1,248 Views
Sebastian_Del_Rio
NXP Employee
NXP Employee

Hi Pandurang,

 

It's possible to use the whole 512kB for program memory if your application requires it, however, it's still recommended that you leave some available space for the PROD_DATA memory partition, as it's used by some components of the BLE stack used by the KW36.

 

Please let me know if you need any more information.

 

Best regards,

Sebastian

1,247 Views
pandurang
Contributor I

Thanks Sebastian,

It is now clear. Thanks for your support.

Regards,

Pandurang

0 Kudos